AutoFeedback API

Result 1cf17950-f67a-4769-bf54-047d184a26b2

{
  "llm" : {
    "feedback" : "# Exercise: textanalysis\n\n### Correctness\n\n\n### Suggestion\n\n\n### Code Style\n- In `WordCounter.java` the imports could be cleaned up/organized; `HashSet` is only needed for `topWordK`, so if that method is optional in your submission, consider whether you want to keep it in the final version.\n- `topWordK` currently throws an `IllegalArgumentException` with a very long message; consider keeping exception messages short and precise (and ideally without user-facing wording like “Please provide…”).\n- `topWordK` iterates over `counts.entrySet()` up to `k` times, which is fine for small `k`, but can get expensive for large `k`/texts; if you care about performance, consider a data structure/approach that avoids rescanning the whole map repeatedly.\n\n\n# Exercise: lotto\n\n### Correctness\n- `Ticket.getNumbers()` soll laut Aufgabenbeschreibung „als **ArrayList**“ zurückgeben; du gibst aktuell ein `Integer[]` zurück (passt zwar zur Signatur im Template, aber widerspricht der textuellen Anforderung).\n\n### Suggestion\n- Schau dir an, was genau mit „als ArrayList“ gemeint ist: Vermutlich soll die Rückgabe eine Liste sein (und eine Kopie davon), nicht ein Array. Prüfe dazu auch, was die Unit-Tests erwarten bzw. welche Signatur in eurer finalen Vorgabe vorgesehen ist (manchmal ist der Kommentar veraltet, manchmal die Methode).\n\n### Code Style\n- In `calculatePrize` verwendest du Rekursion. Das ist hier zwar kurz, aber iterativ ist oft leichter nachzuvollziehen und vermeidet unnötige Stack-Aufrufe (auch wenn es bei max. 6 hier kein echtes Problem ist).\n- In `buyTicket`/`draw` nutzt du teils `winningNumbers != null` und teils `hasDrawn()`. Einheitlich eine Variante zu verwenden macht den Code konsistenter.\n- Die `IllegalStateException`/`IllegalArgumentException` wirfst du ohne Message; eine kurze Message hilft beim Debuggen und beim Verständnis in Tests/Logs.\n",
    "status" : "SUCCESS"
  },
  "unitTest" : {
    "tests" : [ {
      "name" : "buyTicketIds()",
      "status" : "FAILED",
      "message" : null
    }, {
      "name" : "buyTicketsIllegalNumbers()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "draw()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "drawNoDuplicates()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "drawRandom()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "drawAlreadyDrawn()",
      "status" : "FAILED",
      "message" : "Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.reflect.UndeclaredThrowableException>"
    }, {
      "name" : "getWinningNumbersNotDrawnYet()",
      "status" : "FAILED",
      "message" : "Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.reflect.UndeclaredThrowableException>"
    }, {
      "name" : "buyTicketAlreadyDrawn()",
      "status" : "FAILED",
      "message" : null
    } ]
  }
}