AutoFeedback API

Result c57f344b-5ce2-4618-8aff-bc5ca36ddb33

{
  "llm" : {
    "feedback" : "# Exercise: fractal\n\n### Correctness\n- In `Boxes`, die rekursive Zeichenlogik fehlt komplett: `drawRec(...)` ist leer, dadurch wird nichts gezeichnet und die Aufgabe “Boxes zeichnen” ist nicht erfüllt.\n- In `Triangles`, die rekursive Zeichenlogik fehlt komplett: `drawRec(...)` ist leer, dadurch wird nichts gezeichnet und die Aufgabe “Triangles zeichnen” ist nicht erfüllt.\n\n### Suggestion\n- Für `Boxes`: Überlege dir einen klaren Rekursionsabbruch (z.B. bei einer bestimmten Tiefe `n`) und zeichne dann genau ein Rechteck; im Rekursionsfall musst du das Quadrat sinnvoll in kleinere Quadrate aufteilen und für diese mit `n-1` weiterzeichnen.\n- Für `Triangles`: Baue ebenfalls einen Basisfall ein, in dem du mit drei `g.drawLine(...)` ein Dreieck zeichnest; im Rekursionsfall berechnest du geeignete Zwischenpunkte (typisch: Mittelpunkte der Kanten) und rufst die Methode für die entstehenden Teil-Dreiecke mit `n-1` auf.\n\n### Code Style\n- Die `// TODO implement` Kommentare sind ok als Marker, aber solange die Methoden leer sind, wirken sie wie “Stub-Code”; sobald du implementierst, entferne/ersetze sie durch kurze, erklärende Kommentare (z.B. Basisfall/Rekursionsfall).\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` setzt das Modell nach dem Zählen nicht zuverlässig auf den Anfangszustand zurück: Wenn `solutions >= max` wird, gibst du direkt aus der Schleife zurück, ohne das aktuell belegte Feld wieder zu leeren.\n- `nofSolutions` berücksichtigt das `max`-Limit in den rekursiven Aufrufen nicht korrekt: Du rufst rekursiv immer mit demselben `max` weiter, obwohl du bereits Lösungen gefunden hast (dadurch kann die Methode mehr als `max` Lösungen zählen/erkunden, obwohl sie früher abbrechen sollte).\n- `Sudoku.main()` hat nicht die geforderte Java-Entry-Signatur (`public static void main(String[] args)`), dadurch startet das Programm so nicht wie erwartet.\n\n### Suggestion\n- Schau dir im Zähl-Backtracking genau an, an welchen Stellen du “früh” zurückkehrst (`return solutions;`) und ob du davor den Zustand (das gesetzte Feld) wieder rückgängig gemacht hast; gerade bei Abbruchbedingungen passiert das leicht.\n- Überlege bei `max`: Wenn du schon `solutions` gefunden hast, wie viele “dürfen” in der aktuellen Rekursionsebene überhaupt noch dazukommen? Das sollte sich im Parameter des rekursiven Aufrufs widerspiegeln.\n- Für den Programmeinstieg: Vergleiche deine `main`-Methode mit der üblichen Java-Signatur und prüfe Modifier (`public`, `static`) und Parameterliste.\n\n### Code Style\n- In `solved`/`nofSolutions` wiederholst du viel Logik (Berechnung von `row/column`, Struktur der Rekursion). Das könnte man in kleine Hilfsfunktionen auslagern, damit weniger Duplikate entstehen.\n- Kommentare wie “wenn all Felder behandelt wurden, return checker.allOK” passen nicht mehr ganz zum tatsächlichen Code (du returnst `true` bzw. `1`), solche Diskrepanzen verwirren beim Debuggen.\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
    } ]
  }
}