# Sudoku Erzwungen Zahl!



## Guest (9. Jun 2006)

Hallo!

Ich hab folgendes Problem. Es geht um Sudoku in Java! 
Ich hab es bis jetzt soweit implementiert, so dass ich ein Sudoku Brett habe, wo an den Stellen ohne Zahl alle
Zahlen gespeichert sind die noch möglich sind bzgl. gleicher Spalte/Zeile/Block. Jetzt gehts um die Solver.
Ein Solver läuft einfach durch und setzt alle Felder bei denen nur noch einen Zahl möglich ist. Das funktioniert.
Der andere ist in folgendem Text erklärt:

"Die erzwungene Zahl: Wir betrachten eine bestimmte Zahl, beispielsweise
die Fünf. Im abgebildeten Beispiel kommt sie sowohl
in der ersten als auch in der dritten Spalte schon vor, nicht aber in
der zweiten. Wo in dieser Spalte könnte die Fünf stehen?
Nicht in den ersten drei Feldern dieser Spalte, denn das Kästchen
links oben enthält bereits eine Fünf. Mit derselben Begründung
schließt das Kästchen links unten die letzten drei Felder der
zweiten Spalte aus. Also muss die Fünf der zweiten Spalte in einem
der Felder 4, 5 oder 6 stehen. Davon ist nur eines noch frei: Folglich
steht eine Fünf im fünften Feld. Mit Überlegungen dieser Art lassen
sich die mit schwarzen Punkten markierten Felder in der Abbildung
füllen.

Ich hab jetzt schon verschiedene Möglichkeiten ausprobiert diesen "Sudoku Solver" zu implementieren. 
Und zwar mit folgendem PseudoCode:

- Iteriere über das das ganze Brett
- Halte an den Stellen ohne Zahl und erfasse die noch möglichen Zahlen in diesem Feld
- Überprüfe ob eine der möglichen Zahlen auch noch in der gleichen Zeile/Spalte/Block möglich ist. Wenn nicht dann setzte diese Zahl

Das Problem: Er verändert an meinem Sudoku Brett nichts wenn ich ihn drüber laufen lasse
Ich denke daher das mein Pseudo Code falsch ist... Könntet ihr mir bitte bitte helfen... Ich weiß echt nicht mehr weiter. Hat
jemand einen richtigen Pseudo Code?

Vielen Dank im voraus!

Mfg Martin


----------



## Leroy42 (9. Jun 2006)

Anonymous hat gesagt.:
			
		

> - Iteriere über das das ganze Brett
> - Halte an den Stellen ohne Zahl und erfasse die noch möglichen Zahlen in diesem Feld
> - Überprüfe ob eine der möglichen Zahlen auch noch in der gleichen Zeile/Spalte/Block möglich ist. Wenn nicht dann setzte diese Zahl



Der Algorithmus sieht vernünftig aus! Ich schätze mal, daß du einen Fehler bei
der Implementierung gemacht hast.

Allerdings wirst du Schwierigkeiten bekommen, diesen Ansatz später
rekursiv zu verallgemeinern.

So wie ich (ein paar) der Sudoku-Regeln bisher nebenbei
mitbekommen habe, muß der Solver sicherlich ähnlich
arbeiten wie ein Solver für Gitterrätsel.

Da bringt dich dieser Ansatz nicht allzuweit; Brute-Force-Backtracking
kannste von Haus aus knicken   

Je mehr ich von Sudoku höre, desto mehr reizt es mich, mich auch mal
mit den Regeln vertraut zu machen und einen Solver zu schreiben  :###  ???:L  :idea:


----------



## Guest (10. Sep 2006)

Leroy42 hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...


----------

