staging.inyokaproject.org

Sudoko Rätsellöser

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

DaWi

Anmeldungsdatum:
19. Februar 2008

Beiträge: 132

Hallo,

ich habe aus Langeweile mal einen Sudoku-Rätsellöser gebaut (c++).

Ich weiß, es gibt davon bestimmt hunderte, aber vielleicht kanns ja doch jemand gebrauchen 😉.

Wird wie üblich gebaut:
bunzip2 SuDoKuSolver.tar.bz2
tar -xvf SuDoKuSolver.tar
cd SuDoKuSolver
./configure
make

Lösen wie folgt: "Bereinigen" der möglichen Nummern
Suchen nach einzig Möglichen in einem Feld (und einsetzen)
→ "Bereinigen" der möglichen Nummern
suche nach einzig Möglichen in einer Reihe (Spalte, Unterquadrat) (und einsetzen)
→ "Bereinigen" der möglichen Nummern
Wiederholen bis alles einfache gefunden
Suche des erstbesten nicht belegten Feldes, alle möglichen durchprobieren mit obigen Algorithmus (also rekursiv)

ist in englischer sprache gehalten

Bedienung: man lege ein file testfile (oder was auch immer) an in der Form des Rätsels,
wobei 0 = unbekannt

das sieht dann ungefähr so aus:
0 1 0 7 6 0 9 0 0
0 0 7 0 0 3 0 2 0
6 8 0 0 2 0 0 0 0
0 2 0 8 0 5 0 0 9
8 0 5 0 0 0 2 0 1
9 0 0 2 0 1 0 4 0
0 0 0 0 8 0 0 9 2
0 4 0 9 0 0 7 0 0
0 0 9 0 4 2 0 8 0
(es liegen 5 testfiles in src/, zur Anschauung und probieren)
Ausfruf: ./sudokusolver testfile

Dieses Programm findet übrigens ALLE möglichen Lösungen (und wenn das Rätsel nicht lösbar ist), und gibt die Anzahl der Lösungen aus.

Zu den Testfiles:
testfile1 bis testfile3 sind einfach normale Rätsel (schwer). Bei 4 habe ich ein paar Zahlen rausgenommen um die Anzahl der Lösungen zu erhöhen 😉.
testfile5 ist ein (offensichtlich) unmögliches (falsch gestelltes) Rätsel.

Viel Spass damit.

Grüße DaWi

SuDoKuSolver.tar.bz2 (293.5 KiB)
Download SuDoKuSolver.tar.bz2

buntubert

Anmeldungsdatum:
11. März 2007

Beiträge: Zähle...

Ich hab auch mal sowas in perl geschrieben, das ist allerdings nicht reif zur Veröffentlichung. ☺
Interessant ist auch dieser Ansatz: http://www.ecclestoad.co.uk/blog/2005/06/02/sudoku_solver_in_three_lines_explained.html

Antworten |