Das ist so nicht ganz korrekt. Es sollte heißen: Alles oder Ein. Ich weiß, Das ist kein Deutsch!
"Alles" meint Folgendes: Natürlich habe ich alle
vorhandenen Lösungsfunktionen in einer Funktion verpackt, so dass ich mit einem Funktionsaufruf ein Sudoku lösen kann - soweit ich mit den implementierten Methoden komme:
RESULT SOLVE sudoku
SOLVE führt solange iterativ FILL, SCAN, ELIM u.a. aus, bis die Lösungsmatrix sich nicht mehr verändert. Ergänze ich SOLVE noch um ein Trial-and-Error, so löst SOLVE jedes Sudoku. Das zeigt mir dann aber nur, ob ein vorgegebenes Problem überhaupt lösbar ist, also ein gültiges Sudoku. Das interessiert mich aber nicht wirklich, dazu reicht schon eine
Trial-and-Error Funktion.
So zeigt SOLVE wie weit ich mit den eingebauten Methoden komme. Mit eingeschalteter Erklärungsfunktion wird mir sogar Schritt für Schritt erläutert, wie sich der Lösung genähert wird.
Apropos "Schritt für Schritt" oder "Ein":
Ich habe auch ein Einzelschrittverfahren vorgesehen. Z.B. wird genau ein SCAN mit
RESULT 'STEP' SCAN START suduko
ausgeführt. Soweit SCAN überhaupt irgendwas bringt, wird genau eine Zelle "gelöst". Dies geht auch mit
RESULT SCAN STEP 1 START sudoku
oder allgemein
RESULT SCAN STEP i START sudoku
Hier werden genau 1 bzw. i Scans durchgeführt, d.h. im zweiten Fall bis zu i Zellen gelöst. Dies kann mir bei der manuellen Lösung eines Sudokus auf die Sprünge helfen. Ist sudoku der Zwischenstand, mit dem ich nicht weiterkomme, sagt mir
EVAL SCAN STEP 1 START sudoku
das ich es mal mit einem Scan versuchen sollte, soweit
(EVAL START sudoku) > EVAL SCAN STEP 1 START sudoku
ist (in diesem Fall reicht auch (START sudoku) <> SCAN STEP 1 START sudoku, denn korrekt implementierte Lösungsmethoden können Lösungen nur verbessern).
Ganz Neugierige können auch mit eingeschalteter Erklärungsfunktion erfahren, welche Zelle beim Scan gelöst wird.
Erst wollte ich nie einen eigenen Sudoku-Löser schreiben, dann habe ich doch einen implementiert. Zwar nur einige logische Methoden, aber immerhin. Dann wollte ich kein Trial-and-Error-Verfahren vorsehen, aber auch hier bin ich mir jetzt untreu geword
Aufgenommen: Jul 02, 23:30