Sudoku-Löser (Sudoku solver)

Dieser Online-Sudokulöser versucht Sudokus durch reine Logik zu lösen. Dazu befolgt er drei einfache Regeln, die weiter unten auf dieser Seite beschrieben werden. Zu meiner eigenen Überraschung lassen sich damit die meisten Aufgaben aus diversen Zeitschriften lösen. Geht es mal doch nicht weiter, kann das Progrämmchen auch "raten" (ausprobieren verschiedener Möglichkeiten). Damit lässt sich dann tatsächlich jedes gültige Sudoku lösen.


Gib ein Sudokurätsel in das Gitter ein und drücke Lösen
(Weiter unten findet ihr mehr Informationen.)



Sudoku spielen ...


Anleitung

Trage eine Sudoku-Aufgabe in das Eingabefeld ein und klicke Lösen. Wiederherstellen stellt die zuletzt gelöste Originalaufgabe wieder her. Mit Speichern kann ein beliebiger Zustand gespeichert werden, mit Abrufen kann dieser gespeicherte Zustand wieder abgerufen werden. Löschen säubert das Feld, löscht aber nicht gespeicherte Spiele.

Dem Solver sind vier Beispiele beigefügt: Beispiel 1 lässt sich logisch mit wiederholter Anwendung von Regel A allein lösen. Beispiel 2 ist ein "schlechtes" Sudoku mit mehreren Lösungen. Dabei gelangt die Logik natürlich an ihre Grenzen, und so fragt das Programm nach, ob es raten soll. Erlaubt man dies, findet es nach und nach alle Lösungen. Beispiel 3 und Beispiel 4 sind wiederum eindeutig und logisch lösbar, doch werden zusätzlich auch Regel B und C benötigt.

Achtung! Bei Aufgaben, die nur durch Probieren lösbar sind, kann es passieren, dass sich der Browser überlastet fühlt und eine Warnung einblendet (sie ist programmatisch leider nicht unterdrückbar). Wenn du die Warnung übergehst (im Firefox Abbrechen, im Internet Explorer Nein drücken), rechnet das Programm aber unbeirrt weiter und wird auch bald mal fertig werden.

Berechnung

Das Programm geht jede Zelle des Sudokufeldes der Reihe nach durch und ermittelt für jede Zelle die Menge der Ziffern, die in dieser Zelle im gegenwärtigen Lösungszustand noch möglich wären. Sind z.B. für eine Zelle nur mehr die Ziffern 1, 2, oder 3 möglich, schreibe ich vereinfacht 123.

Zuerst wird Regel A für jede Zelle des Feldes angewandt. Ändert sich während eines Durchgangs die Anzahl der möglichen Ziffern in mindestens einer Zelle, wird die Regel A erneut auf das ganze Feld angewandt. Ändert sich nichts mehr, kommt Regel B dran. Passiert auch da nichts, wird Regel C durchgeführt. Wenn schließlich alle drei Regeln nichts mehr bewirken, fragt das Programm nach, ob es raten soll. Dabei wird eine mögliche Ziffer in einer Zelle als richtig angenommen, und danach kommen wiederum die drei Logik-Regeln zum Zug. Stellt sich der Lösungsweg als falsch heraus, werden die Züge zurückgenommen, und das Ganze wird mit einer anderen "geratenen" Ziffer wiederholt.

Regel A

Wenn sich eine gewisse Anzahl an Zellen in einer Zeile (oder Spalte oder Block) die gleiche Anzahl möglicher Ziffern teilen, dann entferne diese Ziffern aus allen anderen Zellen dieser Zeile (oder Spalte oder Block).
Das Beispiel rechts verdeutlicht an einer einzelnen Zeile die Regel A. Die vier grün markierten Zellen enthalten insgesamt vier verschiedene Ziffern: 1, 2, 3 und 6. Diese vier Zellen teilen diese Ziffern unter sich auf und somit kann keine dieser Ziffern in einer der anderen Zellen in dieser Zeile vorkommen. Daher werden dieser Ziffern aus den anderen Zellen dieser Zeile entfernt.
vor Regel A
121789236 3478161469 891236158
nach Regel A
12789236 4781649 89123658

Regel B

Wenn eine Ziffer nur in einer Zeile (oder Spalte) eines Blocks vorkommt, kann in dieser Zeile (Spalte) in keinem anderen Block diese Ziffer vorkommen. Also entferne diese Ziffer in der Zeile (Spalte) aus den beiden anderen Blöcken.
Das Beispiel rechts zeigt drei nebeneinander liegende Blöcke eines Sudokus, wobei uns nur die Ziffer 1 (Eins) interessiert; "..." steht für beliebige Ziffern ungleich Eins. Im linken Block kommt die Eins nur in der zweiten Zeile vor. Daher kann diese Ziffer in den anderen Block aus dieser Zeile gestrichen werden.
vor Regel B
......... 1...1...1... 1...1...1...
1...1...1... 1...1...1... 1...1...1...
......... 1...1...1... 1...1...1...
nach Regel B
......... 1...1...1... 1...1...1...
1...1...1... ......... .........
......... 1...1...1... 1...1...1...

Regel C

Wenn eine Ziffer in einer Zeile (oder Spalte) in zwei Blöcken nicht möglich ist, dann muss die Ziffer im verbliebenen Block in dieser Zeile stehen. Also entferne diese Ziffer aus den beiden anderen Zeilen (oder Spalten) dieses Blocks.
Im Beispiel rechts ist in der ersten Zeile nur im linken Block die Ziffer 1 (Eins) möglich. Die Eins muss also im linken Block in dieser Zeile stehen, und so können die Einser in den anderen Zeilen des linken Blocks gestrichen werden. (Der aufmerksame Leser wird bemerken, dass diese Regel C einer verkehrten Regel B entspricht.)
vor Regel C
1...1...1... ......... .........
1...1...1... 1...1...1... 1...1...1...
1...1...1... 1...1...1... 1...1...1...
nach Regel C
1...1...1... ......... .........
......... 1...1...1... 1...1...1...
......... 1...1...1... 1...1...1...


Chronik

15.4.2015
Seite in unser Rätselportal vinckensteiner.com integriert, vorher war sie in meiner veralteten Homepage eingebaut.
22.4.2014
netzaehler.de hat zwischen 22.1.2006 und 22.4.2014 auf dieser Seite 320071 Besucher gezählt. Danke!
30.7.2011
E-Mail-Adresse korrigiert.
3.2.2006
Hinweis und Link auf unsere neue Website mit wöchentlichen neuen Sudokus.
23.1.2006
Eingabe-Gitter mit css verschönert.
22.1.2006
Counter hinzugefügt und am folgenden Tag gleich ordentlich überrascht gewesen, dass schon über 50 Besucher die Seite besucht hatten.
11.12.2005
Regeln B und C hinzugefügt, um auch kniffligere Rätsel logisch lösen zu können.
4.12.2005
Seite ins Netz gestellt.