{
"llm" : {
"feedback" : "Exercise: prime\n\n### 1. Correctness\n- `isPrime` gibt aktuell immer `false` zurück und prüft `x` nicht, damit wird die Anforderung “untersucht, ob dieser eine Primzahl ist” nicht erfüllt.\n\n### 2. Suggestion\n- Überlege dir eine Sequenz von möglichen Teilern `t` (mit `t > 1` und `t < x`) und prüfe nacheinander, ob `x % t == 0` gilt; sobald du einen passenden Teiler findest, kannst du das Ergebnis festlegen.\n- Achte darauf, was für `x <= 1` gelten soll und wie du diese Fälle in der Methode behandelst, bevor du mit der Suche startest.\n\n### 3. Code Style\n- Der TODO-Kommentar ist sehr allgemein; formuliere ihn konkreter (z.B. was genau noch umgesetzt werden muss: “Teilersequenz prüfen und Ergebnis zurückgeben”).\n\n\nExercise: binsearchfirst\n\n### 1. Correctness\n- Die Methode `binSearch(int[] data, int value)` gibt aktuell immer `0` zurück und erfüllt damit die Anforderungen nicht (sie soll je nach `value` den Index des ersten Vorkommens oder die Einfügeposition liefern).\n- Es ist keine binäre Suche implementiert; damit werden weder vorhandene Werte korrekt gefunden noch die korrekte Einfügeposition bei nicht vorhandenen Werten bestimmt.\n- Die Anforderung „immer den ersten davon (kleinster Index)“ wird nicht umgesetzt (bei mehrfach vorkommenden Werten muss gezielt das erste Vorkommen gefunden werden).\n\n### 2. Suggestion\n- Überlege dir eine Schleifeninvariante mit zwei Grenzen (z.B. links/rechts), sodass du am Ende direkt die Einfügeposition ablesen kannst (typisch ist: links zeigt auf den ersten möglichen Index, an dem `value` stehen könnte).\n- Achte bei der Fallunterscheidung darauf, dass du bei Gleichheit nicht einfach „gefunden und zurück“ machst, sondern den Suchbereich so verschiebst, dass du weiter nach links suchst, um den kleinsten Index zu erhalten.\n- Prüfe deine Logik mit den Beispielen: Besonders `17` (liegt zwischen zwei Werten) und `24` (kommt mehrfach vor) helfen, die richtige Grenze/Abbruchbedingung zu verifizieren.\n\n### 3. Code Style\n- Der Kommentar `// TODO: Implement binary exercise for first element` ist okay für den Anfang, aber sobald du implementierst, wären kurze, erklärende Kommentare zur Schleifeninvariante und zur Entscheidung bei „==“ hilfreich.\n\n\nExercise: tripleseqsearch\n\n### 1. Correctness\n- Die Prüfung auf „gerade Zahl“ ist nicht so formuliert, wie es in Java üblich/robust ist; mit deiner aktuellen Rechnung kann es in Grenzfällen zu unerwartetem Verhalten kommen (insbesondere, weil du über Division/Multiplikation gehst statt über den Rest-Operator).\n\n### 2. Suggestion\n- Überlege, wie man in Java normalerweise „ist gerade“ prüft (Stichwort: Modulo). Teste das gezielt mit positiven und negativen Zahlen sowie mit 0, um sicherzugehen, dass wirklich jede gerade Zahl erkannt wird.\n\n### 3. Code Style\n- Du kannst die Schleife lesbarer machen, indem du statt `int i=0; while(i < nums.length){ ... i++; }` eine `for`-Schleife verwendest.\n- Die Variablennamen `numberSeven`/`numberNegative` beschreiben den Zustand nur indirekt; Namen wie „foundSeven“/„foundNegative“ (oder ähnlich) machen deutlicher, dass es um bereits gefundene Elemente in der Sequenz geht.\n\n\nExercise: sqrt\n\n## Correctness\n- Die Methode `squareRoot(double x)` ist nicht implementiert und gibt immer `0` zurück; damit wird die geforderte Quadratwurzel per binärer Suche nicht berechnet.\n- Die im Text geforderte Abbruchbedingung („keine weitere darstellbare Zahl zwischen `low` und `high`“, z.B. `low == mid || high == mid`) ist nicht umgesetzt.\n- Die Initialisierung der Grenzen `low`/`high` abhängig davon, ob `x > 1` oder `x < 1` ist, fehlt.\n- Die Auswahl der besseren Näherung am Ende (je nachdem, welche Grenze mit ihrem Quadrat näher an `x` liegt) fehlt.\n\n## Suggestion\n- Starte damit, für `x > 1` und `0 < x < 1` passende Startwerte für `low` und `high` festzulegen, so wie es in der Aufgabenbeschreibung steht.\n- Implementiere dann eine Schleife, die `mid` genau mit der angegebenen Formel berechnet (`mid = low/2 + high/2`) und je nach Vergleich von `mid*mid` mit `x` entweder `low` oder `high` auf `mid` setzt.\n- Beende die Schleife, sobald `mid` nicht mehr „zwischen“ `low` und `high` unterscheidbar ist (Hinweis aus der Aufgabe: `low == mid || high == mid`).\n- Entscheide nach der Schleife, ob `low` oder `high` die bessere Approximation ist, indem du vergleichst, welches Quadrat näher bei `x` liegt (also den kleineren Abstand hat).\n\n## Code Style\n- Der Kommentar `// TODO: Implement bisection for square root` ist noch vorhanden, aber es gibt keine Umsetzung; entferne ihn oder ersetze ihn durch kurze, aussagekräftige Kommentare, sobald du die Schritte implementiert hast.\n",
"status" : "SUCCESS"
},
"unitTest" : {
"tests" : [ {
"name" : "testTooSmallInteger()",
"status" : "PASSED",
"message" : null
}, {
"name" : "testTooLargeInteger()",
"status" : "FAILED",
"message" : "expected: <5> but was: <0>"
}, {
"name" : "testZeroLengthArray()",
"status" : "PASSED",
"message" : null
}, {
"name" : "testNonExistingInteger()",
"status" : "FAILED",
"message" : "expected: <4> but was: <0>"
}, {
"name" : "testEqualInteger()",
"status" : "FAILED",
"message" : "expected: <11> but was: <0>"
} ]
}
}