AutoFeedback API

Result 60733a99-5034-4905-a728-18adb5045975

{
  "llm" : {
    "feedback" : "# Exercise: fractal\n\n### Correctness\n- Du hast die beiden geforderten `draw`/Rekursions-Implementationen in `Boxes` und `Triangles` nicht umgesetzt: In beiden Klassen ist `drawRec(...)` noch leer, dadurch wird nichts gezeichnet und die Aufgabe ist nicht erfüllt.\n\n### Suggestion\n- Starte bei beiden Formen mit einem klaren Abbruchfall (`n == 0`): dort zeichnest du genau **eine** Grundform (bei Boxes ein Rechteck, bei Triangles ein Dreieck aus drei Linien).\n- Im Rekursionsfall (`n > 0`) musst du die aktuelle Form in mehrere kleinere Teilformen zerlegen und `drawRec(...)` mit angepassten Koordinaten/Grössen und `n - 1` aufrufen.\n- Für `Boxes`: Überlege dir, wie du aus einem Quadrat mit Seitenlänge `s` vier Quadranten mit `s/2` machst und welche `(x,y)`-Offsets zu den vier Teilquadraten gehören.\n- Für `Triangles`: Berechne die Mittelpunkte der Dreiecksseiten (jeweils Durchschnitt der Endpunkt-Koordinaten) und nutze diese, um die kleineren Dreiecke zu definieren, die du rekursiv weiterzeichnest.\n\n### Code Style\n- Die `// TODO implement`-Kommentare sind noch vorhanden; ersetze sie nach der Implementierung durch sinnvolle Kommentare oder entferne sie, damit klar ist, dass der Code fertig ist.\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` erfüllt die Anforderung „model was reset to its initial state“ nicht: du lässt nach dem Zählen/Abbrechen die im Modell gesetzten Werte teilweise stehen, statt das Sudoku wieder in den Ausgangszustand zurückzubringen.\n- In `nofSolutions` wird die MAX/`max`-Begrenzung nicht korrekt über die Rekursion weitergegeben: du rufst rekursiv immer mit dem gleichen `max` weiter auf, wodurch du mehr Lösungen zählen kannst als erlaubt bzw. nicht früh genug abschneidest.\n\n### Suggestion\n- Damit das Modell nach `nofSolutions` wieder dem Startzustand entspricht, achte darauf, dass jedes Feld, das du in diesem Aufruf gesetzt hast, am Ende dieses Aufrufs wieder geleert wird – unabhängig davon, ob `oneOK` true/false war oder ob du wegen `solutions >= max` früh zurückkehrst.\n- Für das Abschneiden bei `max`: überlege dir, wie viele Lösungen du „noch zählen darfst“, nachdem du in einem Zweig schon `solutions` gefunden hast. Diese verbleibende Anzahl sollte in den rekursiven Aufruf hinein (statt immer das ursprüngliche `max` zu verwenden).\n\n### Code Style\n- In `nofSolutions` hast du mehrfach `model.clear(row, column)` in verschiedenen Zweigen; das macht den Kontrollfluss schwerer zu lesen. Es wäre übersichtlicher, das „Setzen probieren“ und das anschließende „Undo/Clear“ klar zu strukturieren (z.B. genau einmal pro ausprobiertem Wert).\n- Kommentare sind teils redundant bzw. inkonsistent (Deutsch/Englisch gemischt); einheitliche, knappe Kommentare helfen mehr als viele offensichtliche.\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
    } ]
  }
}