{
"llm" : {
"feedback" : "# Exercise: wordmutations\n\n### Correctness\n- Es fehlt komplett ein Programm `WordMutants`; es ist keine Implementierung vorhanden.\n- Die Startpopulation als `ArrayList` mit Wörtern wird nicht erstellt.\n- Die Generations-Schleife (z. B. 10 Generationen) fehlt.\n- Pro Generation werden keine 20 zufälligen Fortpflanzungen durchgeführt.\n- Die neu entstandenen Wörter werden nicht in die Population eingefügt.\n- Die Population wird nach jeder Generation nicht auf 40 Wörter begrenzt (zufälliges Entfernen fehlt).\n- Der zusätzliche Schritt „nur überlebende Wörter nach Kriterien“ (Filter) ist nicht umgesetzt.\n\n### Suggestion\n- Erstelle zuerst eine `ArrayList<String>` und fülle sie mit der Startliste; teste kurz, ob die Liste wirklich die erwartete Anzahl Wörter enthält.\n- Plane die Logik in Ebenen: äußere Schleife für Generationen, innere Schleife für die 20 Fortpflanzungen pro Generation.\n- Für eine Fortpflanzung: wähle zweimal zufällig Wörter aus der Population und wähle dann eine zufällige Trennstelle; achte darauf, dass die Trennstelle innerhalb der Wortlänge liegt.\n- Füge die „Kinder“-Wörter in die gleiche Population ein (oder sammle sie erst in einer zweiten Liste und füge sie dann gesammelt hinzu).\n- Nach jeder Generation: reduziere die Population wieder auf 40, indem du zufällig Elemente entfernst, bis die Größe passt.\n- Baue danach (oder davor) einen Filter ein: definiere eine Methode/Prüfung, die für ein Wort `true/false` liefert (z. B. Mindest-/Maximallänge, Vokalanteil, oder maximale Folge gleicher Kategorie) und entferne alle, die nicht bestehen.\n\n### Code Style\n- Es gibt keinen Code; dadurch kann man noch nichts zu Struktur, Lesbarkeit, Namensgebung oder unnötigen Teilen sagen.\n\n\n# Exercise: eratosthenes\n\n### Correctness\n- Die Methode gibt immer eine leere Liste zurück und liefert damit nicht die geforderten Primzahlen kleiner als `n`.\n- Das Sieb-Verfahren wird nicht implementiert (keine Kandidatenmenge/Markierung, kein Streichen von Vielfachen, keine Iteration bis zum Quadrat der aktuellen Primzahl).\n\n### Suggestion\n- Baue zuerst eine Datenstruktur auf, die für alle Zahlen von 2 bis `< n` speichert, ob sie noch “nicht gestrichen” sind (z.B. boolean-Array oder eine Menge).\n- Iteriere über mögliche Primzahlen in aufsteigender Reihenfolge und streiche für jede gefundene Primzahl ihre Vielfachen; starte dabei beim Quadrat der Primzahl und erhöhe dann jeweils um die Primzahl.\n- Sammle am Ende alle Zahlen, die nicht gestrichen wurden, in eine `ArrayList<Integer>` in aufsteigender Reihenfolge und gib sie zurück.\n\n### Code Style\n- Der `// TODO`-Kommentar ist noch vorhanden; entweder umsetzen oder entfernen, sobald die Funktion fertig ist.\n\n\n# Exercise: pair\n\n### Correctness\n\n\n### Suggestion\n\n\n### Code Style\n- Die Einrückung/Blockstruktur im `while`-Block ist etwas uneinheitlich (das `savedIntegers.add(i)` und `i = nextInt(reader)` wirken optisch wie “falsch eingerückt”); richte die Klammern/Einrückungen so aus, dass klar ist, was zum `if` gehört und was immer ausgeführt wird.\n- Die Imports sind nicht sortiert (erst `java.util`, dann `java.io`/`java.nio`); üblich ist eine konsistente Ordnung (z.B. `java.*` gruppiert und alphabetisch), um die Lesbarkeit zu verbessern.\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
} ]
}
}