{
"llm" : {
"feedback" : "# Exercise: address\n\n### Correctness\n\n### Suggestion\n\n### Code Style\n- In den `IllegalArgumentException`s fehlen aussagekräftige Fehlermeldungen; das macht Debugging und Tests unnötig schwer.\n- In `format()` verwendest du `%s` auch für `int`-Werte; das funktioniert zwar (Autoboxing), aber mit `%d` wäre es klarer/typischer für Zahlen.\n- Die `if`-Statements ohne geschweifte Klammern sind fehleranfälliger bei späteren Änderungen; konsistent `{ ... }` zu nutzen reduziert das Risiko.\n\n\n# Exercise: timespan\n\n### Correctness\n- Der Konstruktor erlaubt effektiv negative Start-Zeitspannen: Wenn `totalMinutes` anfangs 0 ist, kann `add(hours, minutes)` mit negativer Summe zwar eine Exception werfen, aber es fehlt eine klar formulierte Precondition speziell für den Konstruktor, dass die initiale Zeitspanne nicht negativ sein darf (z.B. Fälle mit negativen Stunden/Minuten, die in Summe trotzdem nicht negativ sind, werden aktuell akzeptiert).\n- Die Precondition für `add` setzt nicht die geforderte Invariante „Zeitspannen können nur verlängert werden, nicht verkürzt“ ausreichend klar durch: Du prüfst nur, ob die *Delta*-Summe negativ ist, aber nicht explizit, ob `totalMinutes` nach dem Addieren ≥ vorher ist (das ist zwar meistens äquivalent, aber die Übung verlangt diese Invariante als Precondition auszudrücken).\n- `getMinutes()` kann negative Werte liefern, wenn der interne Zustand je negativ werden würde; die Invariante 0 ≤ `getMinutes()` ≤ 59 soll „ohne weitere Preconditions“ gelten (d.h. du musst sicherstellen, dass dieser Fall gar nie eintreten kann).\n\n### Suggestion\n- Überlege dir, welche Eingaben im Konstruktor du als „negativ“ werten willst: Soll `(-1, +120)` erlaubt sein oder nicht? Formuliere die Precondition so, dass die Invariante „totalMinutes ≥ 0“ aus Client-Sicht eindeutig gilt.\n- Für `add`: Formuliere die Bedingung so, dass sie direkt auf „neuer Gesamtwert ≥ alter Gesamtwert“ abzielt (also Bezug auf den Zustand *vor* dem Aufruf), statt nur auf das Vorzeichen des Arguments/Delta.\n- Stelle sicher, dass dein Objekt niemals in einen Zustand kommen kann, aus dem `getMinutes()` etwas ausserhalb 0..59 liefern könnte; prüfe dazu, ob deine Guards wirklich alle Wege in einen negativen `totalMinutes` verhindern.\n\n### Code Style\n- Die Exception ist ohne Message (`new IllegalArgumentException()`); eine kurze Fehlermeldung hilft beim Debugging und macht die Precondition für Client-Code verständlicher.\n- In `add` berechnest du `60 * hours + minutes` mehrfach; speichere das in einer lokalen Variablen, um Lesbarkeit zu erhöhen und Fehler zu vermeiden.\n\n\n# Exercise: asteroids\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: smarthome\n\n### Correctness\n- In `randomize()` wählst du die Helligkeit mit `random.nextDouble(0.5, 1.1)`: damit können Werte > 1.0 entstehen, obwohl gefordert ist **zwischen 0.5 und 1.0**.\n- In `findBedrooms()` erstellst du das Array exakt so gross wie die Anzahl Bedrooms. Laut Aufgabe darf das Array zwar auch grösser sein und `null` enthalten (maximal Anzahl Räume), aber es **muss** nicht exakt sein. Das ist an sich ok – allerdings kollidiert es, falls die Testcases explizit ein Array der Grösse `rooms.length` erwarten (kommt je nach Aufgabenstellung/Tests vor).\n\n### Suggestion\n- Schau in `randomize()` nochmal genau an, wie die Obergrenze bei Zufallszahlen funktioniert: Wenn du „bis 1.0“ willst, sollte die Zufalls-Erzeugung auch wirklich nie über 1.0 gehen (und nicht „bis 1.1“ als Workaround).\n- Falls Tests bei `findBedrooms()` fehlschlagen: Lies die Spezifikation wörtlich. Überlege, ob ein Rückgabe-Array mit Länge `rooms.length` und ggf. `null`-Einträgen eher dem erwarteten Muster entspricht als ein „kompakt“ gefülltes Array.\n\n### Code Style\n- `private Random random = new Random();` könnte `final` sein, da du es nicht neu zuweist (`private final Random random = new Random();`).\n- In `turnNextRoomBright()` könntest du die Logik klarer strukturieren, indem du die Prüfung „Raum ist nicht komplett hell“ in eine kleine Hilfsmethode auslagerst (macht die doppelte Schleife besser lesbar).\n- In `nightMode()` wiederholst du sehr ähnliche Logik für „eine zufällige Lampe in einem Raum auswählen und auf 0.3 setzen“. Das schreit nach einer Hilfsmethode, damit du weniger duplizierten Code hast.\n\n\n# Exercise: bosses\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
"status" : "SUCCESS"
}
}