AutoFeedback API

Result 9a6e45ba-f780-410e-8035-1ffbf6521b83

{
  "llm" : {
    "feedback" : "# Exercise: fractal\n\n### Correctness\n- In `Boxes`, `drawRec(...)` ist nicht implementiert, dadurch wird beim Zeichnen nichts ausgegeben.\n- In `Triangles`, `drawRec(...)` ist nicht implementiert, dadurch wird beim Zeichnen nichts ausgegeben.\n\n### Suggestion\n- Bei `Boxes.drawRec(...)`: Überlege dir eine Abbruchbedingung für die Rekursion (z.B. wann wirklich ein Rechteck gezeichnet werden soll) und einen Rekursionsschritt, der die Fläche in mehrere kleinere Teil-Rechtecke aufteilt und diese weiterzeichnet.\n- Bei `Triangles.drawRec(...)`: Lege ebenfalls eine Basis fest (wann ein “einfaches” Dreieck mit `g.drawLine(...)` gezeichnet wird) und berechne im Rekursionsschritt die Mittelpunkte der Dreiecksseiten, um daraus die kleineren Dreiecke für die nächsten Rekursionsaufrufe zu bestimmen.\n\n### Code Style\n- Die `// TODO implement`-Kommentare sind noch vorhanden; sobald du fertig bist, entferne sie bzw. ersetze sie durch kurze, hilfreiche Kommentare, was der Rekursionsschritt macht.\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(...)` liefert aktuell praktisch immer `false`, auch wenn eine Lösung gefunden wurde (du brichst zwar aus der Schleife, gibst das Ergebnis aber nie zurück/übernimmst es nicht).\n- In `solved(...)` wird nach einem rekursiven Aufruf das Ergebnis nicht ausgewertet: selbst wenn das tiefere `solved(model, fieldNr + 1)` erfolgreich ist, wird das nicht nach oben propagiert.\n- Backtracking ist unvollständig: wenn ein Wert in einem Feld lokal ok ist, du aber später scheiterst, wird das Feld nicht zuverlässig wieder geleert und der nächste Wert probiert (durch dein `break` verhinderst du das).\n- Die Anforderung “false: no solution found, model was reset to its initial state” wird so nicht erfüllt: bei Fehlschlag bleiben ggf. gesetzte Werte im Model stehen, weil du nicht garantiert alle gesetzten Felder wieder clearest.\n- `nofSolutions(...)` ist nicht implementiert und gibt immer `0` zurück, damit ist der zweite Teil der Aufgabe nicht erfüllt.\n\n### Suggestion\n- Speichere dir beim Probieren eines Werts das Ergebnis des rekursiven Aufrufs in einer Variable und entscheide danach, ob du sofort “Erfolg” nach oben zurückgeben willst oder ob du weiterprobieren musst.\n- Überlege dir, wann genau du ein Feld wieder auf `0` setzen musst: typischerweise dann, wenn du mit einem Wert in der Tiefe keine vollständige Lösung erreichst (nicht nur wenn `oneOK` direkt fehlschlägt).\n- Achte darauf, dass du bei einem gefundenen Pfad nicht einfach nur `break` machst, sondern auch das “gefunden”-Signal an den Aufrufer zurückgibst.\n- Für das “Model auf Anfangszustand zurücksetzen” bei `solved(false)` hilft es, nur Felder zu verändern, die vorher `0` waren, und diese bei Fehlschlag wieder zu leeren (das muss auf allen Rekursionsebenen konsistent passieren).\n- Bei `nofSolutions`: denk ähnlich wie beim Lösen, aber statt beim ersten Erfolg abzubrechen addierst du die Anzahl Lösungen aus den rekursiven Aufrufen; und du musst die Schranke `MAX`/`max` so nutzen, dass du frühzeitig aufhören kannst, wenn genug Lösungen gezählt wurden.\n\n### Code Style\n- In `solved(...)` sind einige Kommentare entweder ungenau oder widersprüchlich (z.B. “return checker.allOK” steht da, passiert aber nicht); solche “veralteten” Kommentare besser anpassen oder entfernen.\n- Benennung: du mischst Englisch/Deutsch (`row/column` vs. Kommentare). Einheitliche Sprache macht den Code leichter lesbar.\n- In der `for`-Schleife ist `i` als Laufvariable etwas verwirrend, weil es nicht die Zeile ist; ein Name wie `val`/`candidate` wäre selbsterklärender.\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
    } ]
  }
}