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