ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1581
1581
EMPFEHLEN
-
06.07.10 18:38 #1
- Registriert seit
- Jul 2010
- Beiträge
- 1
Hallo,
ich habe ein Programm zum lösen von Sudokus geschrieben. Das logische lösen des Sudoku klappt. Meine Vorgehensweise ist die Folgende, ich habe ein 2d Array mit 9*9 Objekte der Klasse SudokuZelle. Die Klasse hat die Fähigkeit für jede Zelle ungültige Werte auszuschließen, eindeutige Werte und alle noch möglichen Werte der einzelnen Zelle zu liefern.
Durch das Ausschließen der Werte erhalte ich eine Kandidatenliste für jede Zelle.
Jetzt möchte ich auch Sudokus lösen, bei dennen es keinen eindeutigen Werte für jede Zelle gibt.
Hier ein Bsp. als 2*2 Spielfeld
1 0 | 0 0
0 0 | 0 0
-----------
0 0 | 0 0
0 0 | 0 0
Eine Methode zur Überpüfung, ob das Sudoku wiederspruchsfrei gelöst ist habe ich, das systematische durchprobieren der Kandidatenliste bereitet mir allerdings Kopfzerbrechen.
Danke schonmal für eure Hilfe.
-
17.08.10 10:11 #2Elmu Tutorials.de Gastzugang
Warum schreibst du die Werte einer Zelle nicht in ein neues 2 dimensolaes Array und lässt dann diese Werte über eine Schleife Addieren.
Einmal horizental(Zeile für Zeile) und vertikal(Spalte für Spalte). Bei Sudoku müssen die dann doch alle einen ( den gleichen Wert haben?) , oder nicht.
Trifft der check für alle Zeilen und Spalten zu, dann ist es gelöst.
Hinzufügen kannst du auch noch, dass zusätzlich überprüft wird, ob in dem neuen Array in einer Spalte oder Zeile eine Zahl doppelt vorhanden ist.
Ich hoffe, dass ich dir helfen konnte, ansonsten hab ich die Frage nicht richtig verstanden.
-
17.08.10 10:14 #3Elmu Tutorials.de Gastzugang
Ah, okay. Das Ende der Frage nicht gelesen gehabt, vergiss meine Antwort.
-
18.08.10 16:07 #4@Elmu: JuhuWarum schreibst du die Werte einer Zelle nicht in ein neues 2 dimensolaes Array und lässt dann diese Werte über eine Schleife Addieren.
Einmal horizental(Zeile für Zeile) und vertikal(Spalte für Spalte). Bei Sudoku müssen die dann doch alle einen ( den gleichen Wert haben?) , oder nicht.
Trifft der check für alle Zeilen und Spalten zu, dann ist es gelöst.
999999999
999999999
999999999
999999999
999999999
999999999
999999999
999999999
999999999
Sudoku gelöst....
@ WilliWacker: Ich persönlich verstehe nur nicht, was das obige Thema mit Backtracking zu tun hat. Möchtest du eventuell wissen, wie du Backtracking auf deinen Code anwenden kannst? Ohne Code kann man dir dann leider schlecht weiterhelfen, aber hier mal allgemeines:
Wichtige Punkte beim Backtracking sind:
Die Schritte Vorwärts und Rückwärts
Iterativ oder Rekursiv?
Wodurch ist eine Mögliche Lösung gekennzeichnet?
Soll nach einer Lösung beendet werden?
...Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
19.08.10 10:22 #5Elmu Tutorials.de Gastzugang
Wenn du mich zitierst und darauf antwortest, dann bitte richtig. In meinen Post steht schon drin, dass jede Zahl nur 1mal pro Zeile oder Spalte zufinden sein darf.

System gibt es bei der Sache nicht, du lösst es einfach zufällig befüllen, dann lässt du einen Check durchlaufen, ob alles passt ( wird es garantiert nicht beim ersten mal) und dann kannst du dein weiteres vorgehen überlegen.
Entweder einfach immer wieder zufällig befüllen oder du gehst Zeile für Zeile und Spalte für Spalte durch und behebst immer Fehler, welche gegen die Spielregeln stoßen. Am Ende wieder einmal überprüfen und sonst wieder entweder Zeile für Zeile oder Spalte für Spalte wieder durchgehen.
bzw. 3x3 Feld oder was weiß ich - ich kenn das Spiel nur vom sehen.
// Beim 8Dame-Problem ist es ja nichts anderes, da wird solange nacheinander von hinten und von vorne geschoben, bis es passt.
-
19.08.10 10:46 #6Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
Ähnliche Themen
-
Backtracking
Von EddieG im Forum Java GrundlagenAntworten: 2Letzter Beitrag: 17.01.10, 20:21 -
Backtracking
Von jenny-birdy im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 1Letzter Beitrag: 16.11.09, 11:51 -
Backtracking und TicTacTo?
Von thatIsAFeature im Forum Coders TalkAntworten: 1Letzter Beitrag: 14.02.08, 15:04 -
Backtracking Problem
Von sra im Forum C/C++Antworten: 5Letzter Beitrag: 12.03.04, 09:14 -
Backtracking für Newbies?
Von sra im Forum .NET ArchivAntworten: 15Letzter Beitrag: 10.03.04, 08:33





Zitieren
Login




