{
"llm" : {
"feedback" : "# Exercise: wordmutations\n\n### Correctness\n- Es fehlt komplett ein Programm/Code für `WordMutants` (keine Startpopulation, keine Mutations-/Generationen-Schleife, keine Fortpflanzungslogik, keine Begrenzung auf 40 Wörter).\n- Der zusätzliche Schritt aus Teil b) (Überlebens-/Filterkriterien für „natürlichere“ Wörter) ist nicht umgesetzt.\n\n### Suggestion\n- Fang damit an, wirklich eine `ArrayList<String>` als Startpopulation mit den vorgegebenen (oder eigenen) Wörtern zu erstellen und auszugeben, damit du siehst, dass das Setup stimmt.\n- Plane dann die Generationsschleife: außen die Generationen (z. B. 10 Durchläufe), innen pro Generation die 20 Fortpflanzungen. Achte darauf, dass du jeweils zwei zufällige Elternwörter aus der Population auswählst.\n- Für die Fortpflanzung brauchst du eine zufällige „Schnittstelle“ pro Elternwort (oder eine gemeinsame, je nachdem wie du es interpretierst) und setzt dann die Wortteile zu einem neuen Wort zusammen, das du der Population hinzufügst.\n- Nach jeder Generation musst du die Population wieder auf genau 40 begrenzen: entferne zufällig Wörter, bis die Größe wieder passt.\n- Für Teil b) überlege dir eine Funktion, die ein Wort prüft (z. B. Länge, Vokal-/Konsonanten-Anteil oder maximale Folge gleicher „Typen“) und entferne alle Wörter, die das Kriterium nicht erfüllen, bevor du wieder auf 40 reduzierst (oder danach – aber entscheide dich bewusst für eine Reihenfolge).\n\n### Code Style\n- Da kein Code vorhanden ist, kann ich hier keine Stilthemen beurteilen.\n\n\n# Exercise: eratosthenes\n\n### Correctness\n- Deine Methode gibt immer eine leere Liste zurück und liefert damit nicht die geforderten Primzahlen kleiner als `n`.\n- Das Sieb-Verfahren (Kandidatenmenge initialisieren, Vielfache streichen ab `p*p`, am Ende verbleibende Zahlen sammeln) ist nicht implementiert.\n\n### Suggestion\n- Überlege dir zuerst, wie du alle Zahlen von `2` bis `< n` als “noch möglich prim” speicherst (z.B. über ein Boolean-Array/ArrayList von Flags oder eine Menge).\n- Implementiere dann eine Schleife über mögliche Primzahlen `p`: Solange `p*p < n`, wenn `p` noch nicht gestrichen ist, streiche alle Vielfachen von `p` beginnend bei `p*p` in Schritten von `p`.\n- Zum Schluss: Sammle alle Zahlen, die nicht gestrichen wurden, in eine `ArrayList<Integer>` in aufsteigender Reihenfolge (wenn du von klein nach groß iterierst, ist sie automatisch sortiert).\n\n### Code Style\n- Der `// TODO`-Kommentar ist noch unverändert; wenn du fertig bist, entferne ihn oder ersetze ihn durch eine kurze Erklärung der Schritte deines Algorithmus.\n\n\n# Exercise: pair\n\n### Correctness\n- Die geforderte Laufzeit („weniger als eine Sekunde“) ist mit deiner aktuellen Lösung nicht zuverlässig erreichbar, weil du für jede gelesene Zahl über alle vorherigen Zahlen iterierst (quadratische Laufzeit bei vielen Zeilen).\n\n### Suggestion\n- Überlege dir eine Datenstruktur, mit der du beim Einlesen jeder Zahl in (nahezu) konstanter Zeit prüfen kannst, ob die „passende Ergänzung“ zu `goal` schon früher vorgekommen ist (statt alle bisherigen Zahlen jedes Mal komplett zu durchsuchen).\n\n### Code Style\n- Unbenutzte Imports: `java.nio.Buffer`, `java.util.List` (und `Files`, `Path` werden in deiner Datei zwar indirekt genutzt, aber das ist ok) – entferne alles, was nicht gebraucht wird.\n- Dein zusätzliches `main.java` passt nicht zur gezeigten Projektstruktur (und ist so als Datei/Inhalt auch nicht korrekt eingebettet, z.B. fehlt eine Klasse); zum Üben okay, aber im Abgabe-Kontext besser weglassen bzw. korrekt als eigene Klasse in ein passendes Package legen.\n- Kleine Lesbarkeit: einheitliche Leerzeichen (z.B. `BufferedReader reader = openFile(path);`) und sprechende Variablennamen (z.B. statt `prev`/`current` evtl. klarer) helfen.\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" : "FAILED",
"message" : "hasSumLargeFile() timed out after 30 seconds"
} ]
}
}