Thema: Delphi Sudoku...

Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Sudoku...

  Alt 23. Mär 2007, 21:51
Ahnung davon haben hier sicherlich etliche

Strategien zum Lösen eines Sudokus gibt es viele. Für ein Computerprogramm empfiehlt es sich auf jeden Fall, Kandidatenlisten zu führen. D.h. Du hast ja eine Matrix (in den meisten Fällen 9x9 Felder) und an jedem Platz können die Zahlen 1-9 stehen. Im ersten Schritt werden jetzt die Zahlen die im Lösungsfeld schon vorgegeben sind in diese Matrix eingetragen und damit alle anderen Kandidaten für das jeweils betreffende Feld eliminiert.

Danach wendest Du die üblichen Regeln an:

- In jedem 3x3-Block darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten für diese Felder kannst Du die gerade eingetragene Zahl entfernen.

- In jeder Zeile darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten in dieser Zeile auch wieder die entsprechenden Ziffern entfernen.

- In jeder Spalte darf 1-9 nur einmal vorkommen, d.h. aus den Kandidatenlisten in dieser Spalte auch wieder die entsprechenden Ziffern entfernen.

Jedes Mal wenn Du irgendwo Kandidaten eliminiert hast, musst Du dann durch das Feld laufen und schauen ob Du irgendwo schon alle Kandidaten bis auf einen eliminiert hast. Den kannst Du dann auch wieder als Lösung eintragen und die entsprechenden Kandidaten (siehe oben) entfernen.

Aus den Kandidatenlisten ergibt sich dann auch noch:

- Wenn ein Kandidat nur in einem Feld einer Zeile vorhanden ist, dann gehört der dort als Lösung hin, also eintragen und weiter wie oben

- Wenn ein Kandidat nur in einem Feld einer Spalte vorhanden ist, dann gehört der dort als Lösung hin, und weiter wie oben.

- Wenn ein Kandidat in einem 3x3-Block.... usw.

Wie Du das jetzt in ein Programm überführst, darfst Du Dir aber erstmal selber überlegen. Nur mit viel Übung wird man Meister
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat