# Sudoku Löser



## pilx (28. Nov 2010)

Bin im Moment dabei einen Sudoko Löser zu programmieren. Allerdings hört er schon bei dem zweiten Element im Array auf... ich denke, dass ich da einfach irgendetwas falsch aufrufe oder so ???:L

```
public static boolean loese(int zeile, int spalte) {
		//pruefen ob Ende der Zeile erreicht
		if(spalte == 8) {
			//dann naechste Zeile
			zeile++;
			spalte = 0;
			
			//am Ende des Feldes?
			if(zeile == 8) {
				return true;
			}
			
		}
		
		if(feld[zeile][spalte] > 0) {
			/* dann haben wir einen Wert und koennen rekursiv weitergehen
			 * dabei in der Zeile eine Spalte weiter
			 */
			return loese(zeile,spalte+1);
		}
		
		//gehe die moeglichen Zahlen von 1 bis 9 durch und pruefe sie
		for(int moegl=1; moegl<=9; moegl++) {
			if(pruefe(zeile,spalte,moegl) == false) {
				//wenn Wert OK setze diesen ein
				feld[zeile][spalte] = moegl;
			}
			
			if(loese(zeile,spalte+1)) {
				return true;
			}  
		}
		
		//Wenn der Versuch nicht geklappt hat, das Feld aus null setzen
		feld[zeile][spalte] = 0;
		return loese(zeile,spalte-1);
		
	}
```


```
public static void main(String[] args) {
		
		IO.println("Das eingegebene Sudoku: ");
		ausgabe(feld);
		
		loese(0,0);
		
		IO.println("und die Loesung: ");
		ausgabe(feld);
			
	}
```

die anderen Methoden spare ich mir, da ich denke, dass die wohl funktionieren. Also habe da noch eine für Eingabe, Ausgabe & um die Zahl zu pruefen.


----------



## XHelp (28. Nov 2010)

Irgendwie sieht den Lösungsansatz nicht wirklich vollständig aus. Du überprüfst keine Zeilen, es kommt auch drauf an was in 
	
	
	
	





```
pruefe
```
 passiert etc.
Selbst auf wikipedia müssten Lösungsansätze in Pseudocode stehen, schau sie dir einfach mal an.


----------



## pilx (28. Nov 2010)

Ja da wird dann geprüft ob die Zahl in der Spalte, Zeile und/oder Block schon vorkommt, wollte das nicht alles posten


----------



## pilx (28. Nov 2010)

Erledigt, was eine geschweifte Klammer doch bewirken kann...


----------

