{
"llm" : {
"feedback" : "# Exercise: fractal\n\n### Correctness\n- In `Boxes`, die rekursive Zeichenlogik fehlt komplett: `drawRec(...)` ist leer, dadurch wird unabhängig von `n` nichts gezeichnet.\n- In `Triangles`, die rekursive Zeichenlogik fehlt komplett: `drawRec(...)` ist leer, dadurch wird unabhängig von `n` nichts gezeichnet.\n- Die Aufgabe verlangt explizit die Implementierung der beiden `draw`/`drawRec`-Methoden in `Boxes` und `Triangles`; das ist aktuell nicht erfüllt.\n\n### Suggestion\n- Bei `Boxes`: Überlege dir eine klare Abbruchbedingung (Base Case) für `n` (z.B. wann genau ein Rechteck tatsächlich gezeichnet wird) und reduziere in den rekursiven Aufrufen `n` schrittweise, während du die Größe `s` und die Koordinaten passend halbierst/verschiebst.\n- Bei `Boxes`: Prüfe, welche Teil-Rechtecke in der nächsten Stufe entstehen sollen (Positionen relativ zu `(x, y)` und Seitenlänge `s`) und rufe `drawRec` für jede dieser Positionen auf.\n- Bei `Triangles`: Lege ebenfalls einen Base Case fest, in dem du ein Dreieck wirklich zeichnest (mit drei `drawLine`-Aufrufen zwischen den Punkten).\n- Bei `Triangles`: Für den rekursiven Schritt hilft es, zuerst die Mittelpunkte der drei Dreiecksseiten zu berechnen (jeweils Durchschnitt der Endpunkt-Koordinaten) und dann mit diesen Punkten die kleineren Teil-Dreiecke zu definieren, wobei `n` jeweils kleiner wird.\n\n### Code Style\n- In `Boxes.drawRec` und `Triangles.drawRec` stehen noch `TODO`-Kommentare; sobald du implementierst, entferne bzw. ersetze sie durch kurze, aussagekräftige Kommentare (z.B. “base case” / “recursive step”).\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- `nofSolutions` ist nicht implementiert und liefert immer `0`, damit wird die Anforderung “Anzahl Lösungen zählen” nicht erfüllt.\n- `Sudoku.main()` hat nicht die erwartete Signatur `public static void main(String[] args)`, dadurch startet die Applikation typischerweise nicht über Java’s Entry-Point.\n\n### Suggestion\n- Für `nofSolutions`: Du kannst sehr ähnlich wie bei `solved` backtracken, aber statt beim ersten Fund `true` zurückzugeben, zählst du gefundene vollständige Belegungen (Basisfall) hoch und gibst diese Zahl zurück; denke dabei auch daran, die Suche abzubrechen, sobald du `MAX` erreicht hast.\n- Für `main`: Schau dir an, welche Methodensignatur die JVM als Startpunkt sucht (Stichwort: `public`, `static`, Parameterliste), und passe deine Methode daran an.\n\n### Code Style\n- In `solved` ist die Verschachtelung aus mehreren `if/else` recht tief; mit frühen `return`s (z.B. bei “Feld ist vorgegeben” oder “Basisfall erreicht”) wird das oft deutlich lesbarer.\n- Die Kommentare sind teilweise widersprüchlich (“return checker.allOK”, tatsächlich wird einfach `true` returned); achte darauf, dass Kommentare genau das beschreiben, was der Code wirklich macht.\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
} ]
}
}