AutoFeedback API

Result b08890d5-e209-4f3b-ab83-65bb809f1d97

{
  "llm" : {
    "feedback" : "# Exercise: wordmutations\n\n### Correctness\n- Es fehlt komplett ein Programm `WordMutants` (kein Code abgegeben), damit sind die Anforderungen (Startpopulation, Mutations-/Generationsschleife, Begrenzung auf 40 Wörter, Überlebenskriterien) nicht umgesetzt.\n\n### Suggestion\n- Fang mit einer `ArrayList<String>` an und fülle sie mit der Startpopulation (z. B. den vorgegebenen 20 Wörtern).\n- Plane dann die Struktur der Schleifen: außen die Generationen (z. B. 10 Durchläufe), innen die Fortpflanzungen pro Generation (z. B. 20-mal).\n- Für eine Fortpflanzung brauchst du zwei zufällige Elternwörter aus der Population und einen zufälligen Schnittpunkt pro Wort (oder einen gemeinsamen, je nach deiner Entscheidung) – daraus setzt du das neue Wort zusammen und fügst es zur Population hinzu.\n- Nach jeder Generation: begrenze die Population wieder auf 40, indem du zufällig Elemente entfernst, bis die Größe passt.\n- Ergänze danach den „Überleben“-Schritt: definiere eine Methode/Prüfung, die Wörter filtert (z. B. Mindest-/Maximallänge, Vokal-/Konsonanten-Verhältnis oder maximale Anzahl gleicher Typen hintereinander) und entferne alle, die nicht bestehen.\n\n### Code Style\n- Keine Abgabe: Achte darauf, mindestens eine lauffähige Klasse `WordMutants` mit `main`-Methode abzugeben, damit man das Ergebnis überhaupt testen kann.\n\n\n# Exercise: eratosthenes\n\n### Correctness\n- Die Methode liefert immer eine leere Liste zurück und gibt damit nicht alle Primzahlen kleiner als `n` zurück.\n- Das Sieb des Eratosthenes wird aktuell gar nicht implementiert (es werden keine Kandidaten erstellt und keine Vielfachen gestrichen).\n\n### Suggestion\n- Erzeuge zuerst eine Datenstruktur, die für alle Zahlen von 2 bis `n-1` speichert, ob sie noch “nicht gestrichen” sind.\n- Iteriere dann über die Zahlen ab 2 und sobald du eine Zahl findest, die nicht gestrichen ist, streiche ihre Vielfachen (beginne dabei beim Quadrat dieser Zahl).\n- Sammle am Ende alle Zahlen ein, die nicht gestrichen wurden, in eine `ArrayList<Integer>` (dadurch erhältst du automatisch eine aufsteigend sortierte Liste, wenn du von klein nach groß durchläufst).\n\n### Code Style\n- Der `// TODO`-Kommentar ist noch vorhanden und die Methode ist ein Stub (unfertige Implementierung).\n\n\n# Exercise: pair\n\n### Correctness\n\n\n### Suggestion\n\n\n3. Code Style:\n- In `Main` fehlt bei `main` der `public`-Modifier; als Einstiegspunkt wird typischerweise `public static void main(String[] args)` erwartet.\n- `Main.java` ist für die Aufgabe nicht nötig (gefordert ist nur die Funktion `hasSum` in `PairFinder`); wenn das als Test gedacht ist, würde ich das klar trennen (z.B. in Testcode) statt in der Abgabe.\n- Kleine Konsistenz: Entweder überall `var` verwenden oder überall explizite Typen (du mischst beides: `var seenNumbers` vs. `BufferedReader reader`).\n",
    "status" : "SUCCESS"
  },
  "unitTest" : {
    "tests" : [ {
      "name" : "eratosthenesShouldOnlyReturnPrimesLessThenN()",
      "status" : "FAILED",
      "message" : null
    }, {
      "name" : "eratosthenesShouldReturnPrimesOrderedAscending()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "eratosthenes100()",
      "status" : "FAILED",
      "message" : "expected: <[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]> but was: <[]>"
    }, {
      "name" : "eratosthenes1_000()",
      "status" : "FAILED",
      "message" : "expected: <168> but was: <0>"
    }, {
      "name" : "eratosthenes10_000()",
      "status" : "FAILED",
      "message" : "expected: <1229> but was: <0>"
    }, {
      "name" : "eratosthenes100_000()",
      "status" : "FAILED",
      "message" : "expected: <9592> but was: <0>"
    }, {
      "name" : "eratosthenes1_000_000()",
      "status" : "FAILED",
      "message" : "expected: <78498> but was: <0>"
    }, {
      "name" : "hasSumSmallFile()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "hasSumIntermediateFile()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "hasSumLargeFile()",
      "status" : "PASSED",
      "message" : null
    } ]
  }
}