{
"llm" : {
"feedback" : "# Exercise: fractal\n\n### Correctness\n- In `Boxes`, die rekursive Zeichenmethode `drawRec(...)` ist nicht implementiert, dadurch wird beim Ausführen keine Box-Fraktalform gezeichnet.\n- In `Triangles`, die rekursive Zeichenmethode `drawRec(...)` ist nicht implementiert, dadurch wird beim Ausführen keine Dreiecks-Fraktalform gezeichnet.\n\n### Suggestion\n- Für `Boxes.drawRec(...)`: Überlege dir eine klare Abbruchbedingung für `n` (z.B. wann wirklich ein Rechteck mit `g.drawRect(...)` gezeichnet wird) und was im rekursiven Fall passieren soll (Unterteilung der Fläche in kleinere Quadrate mit angepassten `(x,y)`-Koordinaten und `s`).\n- Für `Triangles.drawRec(...)`: Starte mit dem Basisfall, in dem du genau ein Dreieck zeichnest (3 Linien). Für den rekursiven Schritt brauchst du dann neue Eckpunkte: typischerweise berechnest du Mittelpunkte von Dreiecksseiten und rufst `drawRec(...)` für die entstehenden Teildreiecke mit `n-1` auf.\n\n### Code Style\n- Die `// TODO implement`-Kommentare sind noch vorhanden; sobald du fertig bist, entferne sie, damit klar ist, dass die Aufgabe vollständig gelöst wurde.\n\n\n# Exercise: knapsack\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: sudoku\n\n### Correctness\n- `SudokuSolverImpl.solved(...)` löst das Sudoku nicht per Backtracking: du setzt keine Werte in leere Felder, rufst dich nicht rekursiv für das nächste Feld auf und machst kein Zurücksetzen (clear) bei Fehlschlag.\n- `solved(...)` liefert aktuell effektiv nur dann `true`, wenn `fieldNr` am Ende ist *und* `checker.allOK(model)` true ist; da du `fieldNr` aber nie erhöhst, wird das praktisch nie eine Lösung finden.\n- Die Anforderung „false: no solution found, model was reset to its initial state“ wird nicht erfüllt: bei „nicht lösbar“ stellst du den Modellzustand nicht wieder her (wobei du aktuell sowieso nichts veränderst – aber sobald du Backtracking implementierst, ist das Pflicht).\n- `nofSolutions(...)` ist nicht implementiert (liefert immer `0`) und zählt damit keine Lösungen; außerdem wird das Modell dabei auch nicht garantiert auf den Initialzustand zurückgesetzt.\n\n### Suggestion\n- Baue `solved(model, fieldNr)` als Rekursion über alle Felder auf: überlege dir eine klare Verankerung („alle Felder abgearbeitet“) und einen Schritt („aktuelles Feld behandeln, dann fieldNr+1“).\n- Für ein vorgegebenes Feld (model.get(...) != 0) solltest du direkt zum nächsten Feld weitergehen, ohne etwas zu verändern.\n- Für ein leeres Feld: probiere systematisch Kandidatenwerte von 1 bis `model.size()` aus, setze sie ins Feld, prüfe mit `checker.oneOK(model, i, j)`, und gehe nur dann rekursiv weiter; wenn kein Kandidat funktioniert, räume das Feld wieder (Backtracking).\n- Für das „Reset to initial state“ bei `solved == false`: überlege dir, wie du beim Backtracking sicherstellst, dass alle von dir gesetzten Werte wieder entfernt sind, bevor du `false` zurückgibst (insb. beim Rücksprung aus der Rekursion).\n- Für `nofSolutions`: nimm dieselbe Struktur wie beim Lösen, aber statt beim ersten Fund aufzuhören, addierst du die Anzahl Lösungen aus den rekursiven Aufrufen; achte darauf, dass du abbrechen kannst, sobald `MAX` (bzw. dein `max`-Parameter) erreicht ist, und dass du beim Rücksprung das Feld wieder leerst.\n\n### Code Style\n- In `solved(...)` hast du eine leere `else { }`-Klammer und am Ende einen redundanten Rückgabewert-Ausdruck, der die vorherige `if`-Logik doppelt; das macht den Code schwer lesbar und sollte bereinigt werden.\n- Die Variablen `row` und `column` werden berechnet, aber nirgends verwendet; entweder nutzen (für `get/set/clear`) oder entfernen.\n\n\n# Exercise: queens\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" : "FAILED",
"message" : "expected: <190> but was: <0>"
}, {
"name" : "random2()",
"status" : "FAILED",
"message" : "expected: <340> but was: <0>"
}, {
"name" : "random3()",
"status" : "FAILED",
"message" : "expected: <558> but was: <0>"
}, {
"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
} ]
}
}