Aufgabe 8.4 Lights Out

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 8.4 Lights Out
Hi :slight_smile:
Ich glaub grad, ich bin blöd… die Aufgabe erscheint zu erst egtl einfach aber mit meinem Ansatz wirds iwie nix…
Ich probier es über Backtracking.
Grundsätzlicher Ablauf:
-Prüfen, ob es schon gelöst ist (und entsprechend leeren Merker zurückgeben)
-Aktuelles Feld togglen und Methode für nächstes Feld aufrufen
-Aktuelles Feld nicht togglen und Methode für nächstes Feld aufrufen
-Kleineren Merker zurückgeben
Das klappt zwar für den baby-PubTest super,
gibt aber für den easy-PubTest garnichts zurück und bei den beiden anderen timed es aus (was ja klar ist, da ich die Rekursion noch nicht optimiert habe, das mache ich sobald der Grundansatz klappt).
Gibt es hier irgendeinen Grundlegenden Fehler in meinem Ansatz oder muss ich einfach weiter debuggen weil ich irgendwo einen Fehler in der Implementation gemacht haben muss?
Danke für eure Hilfe :slight_smile:


Ja, in der Aufgabenstellung steht auch drinnen, wie du vorgehen sollst, um einen Timeout zu vermeiden. Dazu vielleicht auch nochmal die Folien aus der Übung 8 anschauen, wo das Backtracking nochmal erklärt ist mit dieser “besonderen” Vorgehensweise.


Danke für die Antwort, aber das timeout ist ja nicht mein Problem… der Algorithmus an sich funktioniert ja nicht mal. Bei dem einfachsten Test funktioniert er, beim zweitschwersten gibt er null zurück und nur bei den letzten beiden timed er (wenig überraschend) out.


An sich scheint deine Vorgehensweise schon richtig zu sein, der Fehler wird sich wohl irgendwo in der Ausführung verstecken.


Ich vermute, dass du entweder falsch prüfst, ob die Aufgabe gelöst wurde oder beim kleineren merker einen leeren merker als kleinsten Merker ansiehst doer so Ähnlich.

Ansonsten, falls du irgendwo Long als Object verwendest, was bei der Aufgabe nicht zwingend abwegig wäre, schauen, dass du die .equals(), etc.-Methoden verwendest, da Vergleiche mit den herkömmlichen Vergleichoperatoren nur bedingt zulässig sind.