003
20.12.2008, 14:58 Uhr
Zealot
|
Mit der Logik hatte ich weniger Probleme Ich habe über das Sudoku, in meinem Fall ein 9x9 Felder großes, ein Koordinatensystem gelegt also von a bis i und von 1 bis 9 nach diesem System habe ich jedem Feld eine eigene Variable spendiert die ich nach ihrer Position im Koordinatensystem benannt habe also a1 a2 a3 usw..
Dann habe ich eine Funktion geschrieben die es ermöglicht zum Beispiel alle für a1 relevanten Felder zu Prüfen ob eine der neun Zahlen dort auf taucht. wenn nun nur ein Wert nicht vor kommt bekommt a1 diesen wert zugewiesen gibt es mehrere mögliche werte die zugewiesen werden können fährt das Programm zunächst mit dem nächsten Feld also a2 fort bis jedes Feld des Sudoku durchgetestet ist und dann beginnt es wieder von vorn bis alle werte ermittelt sind.
Also mein Programm löst ein herkömmliches 9x9 Sudoku in 3 bis 7 Testfasen also jedes Feld wurde 3-7 mal auf Lösbarkeit getestet und das dauert keine Sekunde.
Allerdings war es wegen der 81 Variablen doch recht viel Schreibarbeit, ich habe mich lediglich, Schleifen, Vergleichsoperatoren, und Kontrollstrukturen, bedient und mein Programm ist auf gut 500 Zeilen angewachsen.
Wenn sich jemand den Quelltext mal anschauen möchte sagt bescheid würde gern mal eure Meinung dazu hören.
Aber du hast recht es gibt Sudokus die nur mit Logik nicht zu lösen sind also wo man sich für einen Wert entscheiden muss und erst anhand weiterer Lösungen feststellt ob man richtig gelegen hat. Aber die meisten Sudokus bieten eigentlich eine klare Lösbarkeit. Dieser Post wurde am 20.12.2008 um 15:04 Uhr von Zealot editiert. |