Sudoku
Copyright © 2019 Jiri Kriz, www.nosco.ch

Die Sudoku Regel

Das Sudoku Spiel hat nur eine Regel:
Fülle das 9x9 Gitter mit den Zahlen 1 bis 9 aus, sodass alle Zeilen, Kolonnen und 3x3 Blöcke keine doppelten Zahlen enthalten. Anders gesagt, alle diese Regionen müssen alle Zahlen 1 bis 9 enthalten.

Allgemeine Benutzung dieses Spiels

Dieses Sudoku Spiel unterstützt Sie bei der Lösung von Sudoku Rätseln, die Sie in Zeitungen, Büchern und im Interner finden. Es stellt auch vorbereitete Rätsel in drei Schwierigkeitsstufen zur Verfügung. Die hauptsächlichen Eigenschaften dieses Spiels sind die folgenden:

Das Spiel hat zwei Phasen:

Phase 1: Rätsel definieren

In der ersten Phase definieren Sie das zu lösende Sudoku Rätsel.

Während dieser Phase können Sie die Zahlen in den Zellen beliebig editieren. Klicken Sie in der "Definitionszeile"

pen

auf eine Zahl - die Zahl wird selektiert. Klicken Sie jetzt auf ein leeres Feld im Sudoku Raster. Die ausgewählte Zahl wird dort eingetragen. Sie können eine Zahl mir einer anderen Zahl überschreiben, oder Sie können den Zellinhalt löschen, indem Sie zuerst "X" selektieren.

Sie können die Zahlen auch mit der Tastatur eingeben. Dazu darf zuerst keine Zahl in der Definitionszeile selektiert werden. Ist eine solche Zahl selektiert, klicken Sie auf sie und sie wird deselektioniert. Nun können Sie mit einem Mausklick ein Feld im Brett auswählen und dann mit der Tastatur die gewünschte Zahl einsetzet. Mit den Tasten 'x', 'del', 'enter', '0' können Sie die eingegebenen Zahlen löschen. Wenn ein Feld auf dem Brett ausgewählt ist, können Sie auch auf eine Zahl in der Definitionszeile klicken - sie wird dann sofort in das selektierte Feld eingesetzt.

Es gibt also zwei Eingabemöglichkeiten. Sie schalten von einer zur anderen indem Sie die aktuelle Selektion mit einem Klick darauf deselektieren und dann mit einem Klick entweder in der Definitionszeile oder im Brett die neue Eingabemöglichkeit wählen.

Wenn Sie mit der Definition fertig sind, klicken Sie auf den Tabulator Lösen. Dadurch wechseln Sie in den Lösungsmodus (Phase 2).

Sie können auch ein vorbereitetes Rätsel verlangen. Wählen Sie den Schwierigkeitsgrad und drucken Sie auf den Knopf Rätsel verlangen. Ein neues Rätsel wird in das Gitter eingefüllt. Alle verfügbaren Rätsel sind nur mit logischer Überlegung lösbar. Die Schwierigkeitsstufen haben die folgende Bedeutung:

StufeLösungs­strategien
Einfach Nackter Single
Versteckter Single
Mittel Block/Reihe Schnitt
Block/Kolonne Schnitt
Nacktes Paar
Schwierig Nackter Dreier
Verstecktes Paar
Versteckter Dreier
X-Wing

Wenn Sie das Rätsel als eine Zahlenreihe haben, zum Bespiel

oder

dann können Sie diese Reihe in das zugehörige Textfeld kopieren, und mit dem Knopf Rätsel setzen in das Gitter einfügen. Die Zahlenreihe representiert die Zahlen auf dem Brett geordnet nach Reihen. Leere Felder werden durch "0" or "." dargestellt.

Phase 2: Rätsel lösen

In der zweiten Phase lösen Sie das Rätsel. Sie klicken auf ein leeres Feld und setzen eine Zahl mit der oben beschriebenen Methode ein. Nun können Sie eine Zahl nicht direkt löschen, sondern müssen die Befehle Zurück (und Vor) anwenden. Das garantiert, dass die Zahlen in der umgekehrten Reihenfolge gelöscht werden, als sie gesetzt wurden. Dies ist wichtig, wenn Sie z.B. mit der "Versuch-und-Irrtum" Strategie experimentieren.

Der Knopf Kandidaten zeigen schaltet zwischen den Sichten mit oder ohne sichtbare Kandidaten. Die Kandidaten sind die noch möglichen Werte für die Zelle. Ein der Kandidaten ist der Lösungswert. Die Kandidaten werden während dem Spiel automatisch nachgeführt.

Die Kandidaten können auch manuell editiert werden: drucken Sie dazu den Knopf Kandidaten editieren. Wenn Sie jetzt eine Zahl eingeben, dann wird der Kandidat eingefügt oder gelöscht, je nach dem gegenwärtigen Zustand. Diese Möglichkeit ist wichtig für fortgeschrittene logische Lösungsstrategien. In diesem Modus werden die anderen Kandidaten nicht automatisch nachgeführt, Sie können aber die Kandidaten mit dem Befehl Kandidaten neu berechnen neu berechnen lassen. Dabei gehen Ihre Änderungen der Kandidaten verloren.

Befehle

Definieren
Definitionsmodus: Ein neues Spiel wird definiert.
Rätsel verlangen
Ein neues Rätsel mit der gewählten Schwierigkeitsstufe wird in das Gitter gesetzt.
Rätsel setzen
Die Sudoku Kodierung im nebenstehenden Feld wird in das Gitter eingefügt und als Startposition verwendet.
Alles löschen
Das Brett und der Eingabestring werden gelöscht.
Lösen
Lösungsmodus: Das definierte Spiel wird gelöst.
Zurück ("Undo")
Die ausgefüllten Felder werden in der umgekehrten Reihenfolge gelöscht.
Vor ("Redo")
Die mit "Zurück" gelöschten Felder werden mit den ursprünglichen Werten wieder gefüllt.
Kandidaten zeigen
Die verbleibenden Kandidaten werden angezeigt.
Kandidaten editieren
Die Feldeingaben addieren oder löschen Kandidaten. Die anderen Kandidaten werden nicht nachgeführt.
Kandidaten neu berechnen
Die Kandidaten werden neu berechnet ausgehend aus den gefüllten Zellen. Die leeren Zellen erhalten die maximale Anzahl von Kandidaten, die mit der Sudoku Regel konsistent sind. Editierte Kandidaten gehen verloren.
Eingaben löschen
Alle gesetzten, nicht definierten Zellen werden gelöscht.
Lösung zeigen
Das Rätsel wird gelöst und die Lösung wird unten angezeigt.

Maus und Tasten

Maus Klick in der Definitionszeile
Ein Mausklick auf einem nicht-selektierten Feld selektiert die respektive Zahl für die Eingabe im Brett. Wenn bereits ein Feld auf dem Brett selektiert ist. so wird die Definitionszahl in das Brettfeld eingesetzt. Das Definitionsfeld "X" dient dem Löschen. Ein Mausklick auf einem selektierten Feld deselektiert das Feld.
Maus Klick im Brett
Wenn eine Eingabezahl definiert ist, dann wird sie in das angeklickte Brettfeld eingesetzt. Wenn keine Eingabezahl definiert ist, so wird das das angeklickte Brettfeld für eine Zahleingabe selektiert. Ein Mausklick auf einem selektierten Brettfeld deselektiert das Feld.
Tasten 1, 2, ... 9
Wenn ein Brettfeld selektiert wird, so wird die entsprechende Zahl in das selektierte Brettfeld eingefügt.
Tasten 'x', 'del', 'enter', '0'
Wenn ein Brettfeld im Definitionsmodus selektiert wird, so wird es gelöscht.

Bemerkungen zur Implementierung

Generierung der Sudoku Rätsel

Ich generiere die Sudoku Rätsel offline mit einem C++ Programm. Zuerst erstelle ich ein zufällig ausgefülltes Sudoku mit Backtracking. Dann nehme ich Zahlen auf zufälligen symmetrischen Positionen weg. Die so entstandene Sudoku versuche ich mit den programmierten logischen Regeln zu lösen. Wenn ich eine Lösung finde, dann habe ich ein Rätsel konstruiert. Wenn die Sudoku mit den logischen Regeln nicht lösbar ist, versuche ich wieder eine andere zufällige Ausgangsposition. Um eine "schwierige" Sudoku zu generieren, brauche ich etwa 100'000 Versuche.

Lösung von Sudoku Rätseln

Sudoku Rätsel werden mit dem Javascript Programm "kudoku" gelöst (siehe Attractive Chaos - kudoku)