{
"llm" : {
"feedback" : "# Exercise: fractal\n\n### Correctness\n- In `Boxes.drawRec` zeichnest du bei `n > 0` alle vier Quadranten rekursiv; dadurch entsteht am Ende ein komplett gefülltes Raster aus `4^n` Boxen. In der Aufgabe/Fraktal-Variante bleibt typischerweise ein Quadrant „anders“ (z.B. direkt gezeichnet bzw. nicht weiter unterteilt), sonst erhältst du nicht das gewünschte Muster.\n- In `Triangles.drawRec` erzeugen deine drei rekursiven Aufrufe Dreiecke, die jeweils einen Eckpunkt im Original-Dreieck haben. Das ergibt ein anderes Rekursionsmuster als das gewünschte „Unterteilen über die Seitenmittelpunkte“ (Sierpinski-artig), bei dem die rekursiven Dreiecke durch die drei Seitenmittelpunkte definiert werden.\n\n### Suggestion\n- Boxes: Überlege dir, welche Teilquadrate bei jedem Schritt wirklich weiter rekursiv aufgeteilt werden sollen und ob eines davon stattdessen direkt als Quadrat gezeichnet werden soll (also ohne weitere Rekursion). Vergleiche dazu „wie viele rekursive Calls“ pro Ebene nötig sind, um das sichtbare Loch/Pattern zu bekommen.\n- Triangles: Berechne zuerst die drei Seitenmittelpunkte (zwischen (x0,x1), (x0,x2), (x1,x2)) und verwende dann diese Punkte als Eckpunkte deiner drei rekursiven Unter-Dreiecke. Prüfe dabei, dass jedes Unter-Dreieck wirklich an den drei Kantenmittelpunkten „anliegt“ und nicht an einem Original-Eckpunkt startet.\n\n### Code Style\n- In `Triangles.drawRec` ist das `else` nach dem `return` im `if (n == 0)` nicht nötig; du kannst den weiteren Code einfach danach schreiben (reduziert Einrückung).\n- In `Triangles.drawRec` berechnest du dieselben Mittelwerte mehrfach in den Aufrufen; speichere sie in gut benannten Variablen (z.B. `mx01`, `my01`, …), das macht es lesbarer und weniger fehleranfällig.\n\n\n# Exercise: knapsack\n\n### Correctness\n\n\n### Suggestion\n\n\n### Code Style\n- In `KnapsackImpl` hast du die Methoden `loadItem(int i)` und `unloadItem(int i)` aus der Vorlage entfernt/nicht implementiert. Falls die mitgelieferten Tests oder die Aufgabenstruktur erwarten, dass diese Methoden existieren (z.B. weil sie im Template vorgesehen sind), kann das unnötig zu Abweichungen führen. \n- `KnapsackN.main()` hat keine übliche Signatur `main(String[] args)`. Wenn die Aufgabe/Tests das Programm wirklich starten (statt nur `KnapsackImpl` zu testen), kann das dazu führen, dass es nicht als Einstiegspunkt erkannt wird.\n\n\n# Exercise: queens\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: sudoku\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
"status" : "SUCCESS"
},
"unitTest" : {
"tests" : [ {
"name" : "allZero()",
"status" : "PASSED",
"message" : null
}, {
"name" : "uselessStuff()",
"status" : "PASSED",
"message" : null
}, {
"name" : "random1()",
"status" : "PASSED",
"message" : null
}, {
"name" : "random2()",
"status" : "PASSED",
"message" : null
}, {
"name" : "random3()",
"status" : "PASSED",
"message" : null
}, {
"name" : "boardIsValidAfterSolveN4()",
"status" : "FAILED",
"message" : "Board must contain exactly N queens ==> expected: <4> but was: <0>"
}, {
"name" : "boardIsValidAfterSolveN5()",
"status" : "FAILED",
"message" : "Board must contain exactly N queens ==> expected: <5> but was: <0>"
}, {
"name" : "boardIsValidAfterSolveN8()",
"status" : "FAILED",
"message" : "Board must contain exactly N queens ==> expected: <8> but was: <0>"
}, {
"name" : "boardSizeIsCorrectForN4()",
"status" : "PASSED",
"message" : null
}, {
"name" : "boardSizeIsCorrectForN8()",
"status" : "PASSED",
"message" : null
}, {
"name" : "countN1()",
"status" : "FAILED",
"message" : "N=1 has exactly 1 solution ==> expected: <1> but was: <0>"
}, {
"name" : "countN2()",
"status" : "PASSED",
"message" : null
}, {
"name" : "countN3()",
"status" : "PASSED",
"message" : null
}, {
"name" : "countN4()",
"status" : "FAILED",
"message" : "N=4 has exactly 2 solutions ==> expected: <2> but was: <0>"
}, {
"name" : "countN5()",
"status" : "FAILED",
"message" : "N=5 has exactly 10 solutions ==> expected: <10> but was: <0>"
}, {
"name" : "countN6()",
"status" : "FAILED",
"message" : "N=6 has exactly 4 solutions ==> expected: <4> but was: <0>"
}, {
"name" : "countN8()",
"status" : "FAILED",
"message" : "N=8 has exactly 92 solutions ==> expected: <92> but was: <0>"
}, {
"name" : "solveReturnsTrueForN1()",
"status" : "FAILED",
"message" : "N=1 has exactly one solution ==> expected: <true> but was: <false>"
}, {
"name" : "solveReturnsTrueForN4()",
"status" : "FAILED",
"message" : "N=4 has valid queen placements ==> expected: <true> but was: <false>"
}, {
"name" : "solveReturnsTrueForN8()",
"status" : "FAILED",
"message" : "N=8 has valid queen placements ==> expected: <true> but was: <false>"
}, {
"name" : "solveReturnsFalseForN2()",
"status" : "PASSED",
"message" : null
}, {
"name" : "solveReturnsFalseForN3()",
"status" : "PASSED",
"message" : null
} ]
}
}