{
"llm" : {
"feedback" : "Exercise: prime\n\n1. Correctness\n- `isPrime` gibt aktuell immer `false` zurück und prüft `x` nicht; damit werden Primzahlen nicht korrekt erkannt.\n- Es fehlt die geforderte sequenzielle Suche nach einem Teiler `t` mit `1 < t < x` (bzw. eine äquivalente korrekte Prüfsequenz), die entscheidet, ob `x` eine Primzahl ist.\n\n2. Suggestion\n- Überlege dir eine Schleife, die mögliche Teiler `t` der Reihe nach durchgeht, und prüfe bei jedem `t`, ob `x % t == 0` gilt.\n- Entscheide, ab wann du sicher „nicht prim“ sagen kannst (wenn ein Teiler gefunden wurde) und wann du sicher „prim“ sagen kannst (wenn kein Teiler in deiner Suchsequenz gefunden wurde).\n\n3. Code Style\n- Der `TODO`-Kommentar ist okay, aber sobald du implementierst, ersetze ihn durch einen kurzen, beschreibenden Kommentar oder entferne ihn.\n\n\nExercise: binsearchfirst\n\n1. Correctness\n- Die Methode `binSearch` liefert aktuell immer `0` zurück und implementiert damit weder die binäre Suche noch die geforderte Bestimmung des ersten Vorkommens.\n- Es wird nicht die Einfügeposition zurückgegeben, falls `value` im Array nicht enthalten ist (stattdessen ebenfalls immer `0`).\n\n2. Suggestion\n- Überlege dir eine Schleife mit zwei Grenzen (z.B. linker/rechter Index), die den Suchbereich immer weiter halbiert, bis die Grenze genau an der Stelle liegt, wo das erste Element `>= value` wäre.\n- Achte bei der Fallunterscheidung darauf, dass du bei Gleichheit nicht einfach “gefunden und zurückgeben” machst, sondern weiter nach links suchst, um den kleinsten Index des Werts zu bekommen.\n- Prüfe am Ende: Wenn die ermittelte Position innerhalb des Arrays liegt und dort `value` steht, ist das genau der erste Index; sonst ist diese Position die Einfügeposition.\n\n3. Code Style\n- Der `// TODO`-Kommentar ist okay während der Arbeit, sollte aber entfernt/ersetzt werden, sobald die Methode implementiert ist.\n\n\nExercise: tripleseqsearch\n\n1. Correctness\n- Die Methode liefert aktuell immer `false`, damit können die Fälle, in denen `true` erwartet wird, nicht erfüllt werden.\n- Die geforderte Prüfung auf die Reihenfolge „7, dann negative Zahl, dann gerade Zahl“ (nicht zwingend direkt hintereinander) ist nicht implementiert.\n\n2. Suggestion\n- Starte mit einer ersten sequenziellen Suche nach der `7`; merke dir dabei den Index, ab dem du weitersuchen musst.\n- Suche danach ab der Position **nach** der gefundenen `7` die erste negative Zahl; wenn keine gefunden wird, kannst du direkt `false` zurückgeben.\n- Suche dann ab der Position **nach** dieser negativen Zahl eine gerade Zahl; denke daran, dass „gerade“ auch für negative gerade Zahlen gilt.\n- Überlege dir klar, welche Suchbereiche gelten: jeweils nur rechts vom zuletzt gefundenen Element, damit die Reihenfolge garantiert ist.\n\n3. Code Style\n- Der `TODO`-Kommentar ist noch vorhanden und der Methodenrumpf ist unverändert; entferne/ersetze ihn, sobald du die Logik implementiert hast.\n\n\nExercise: sqrt\n\n### 1. Correctness\n- Die Methode `squareRoot(double x)` ist nicht implementiert und gibt immer `0` zurück; damit wird die Quadratwurzel für praktisch alle Eingaben falsch berechnet.\n- Die geforderte binäre Suche mit `low`, `high`, `mid` (inkl. `mid = low/2 + high/2`) wird nicht umgesetzt.\n- Das Abbruchkriterium „keine weitere darstellbare Zahl zwischen den Grenzen“ (z.B. `low == mid || high == mid`) fehlt.\n- Die Auswahl der besseren Näherung am Ende (Vergleich der Quadrate von `low` und `high` mit `x`) fehlt.\n\n### 2. Suggestion\n- Starte damit, für `x > 1` und `x < 1` jeweils sinnvolle Anfangsgrenzen `low` und `high` so zu setzen, wie es in der Aufgabenbeschreibung angegeben ist.\n- Baue dann eine Schleife, die immer wieder `mid` aus `low` und `high` berechnet und anhand von `mid*mid` entscheidet, ob du `low` oder `high` auf `mid` setzt.\n- Verwende als Schleifen-Abbruch genau das Kriterium aus der Aufgabe (wenn `mid` nicht mehr „zwischen“ `low` und `high` liegt, weil keine darstellbare Zahl mehr dazwischen ist).\n- Entscheide nach dem Abbruch zwischen `low` und `high`, indem du prüfst, welches Quadrat näher bei `x` liegt (kleinere Abweichung).\n\n### 3. Code Style\n- Der TODO-Kommentar ist noch vorhanden; sobald du implementierst, entweder entfernen oder durch einen passenden Kommentar ersetzen, der die Idee (Bisection) kurz erklärt.\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>"
} ]
}
}