Java Sudoku

redbuttler

Mitglied
Hallo,
ich möchte ein Programm schreiben ,dass ein vollständig ausgefülltes Sudoku generiert.

Also bisher bin ich soweit:

Code:
import javax.swing.JOptionPane;
public class Aufgabe31 {
	
	static String output = "\n";
	static String Sudoku(int iFeld[][]){
		for(int i = 0;i<iFeld.length;i++) {
			for(int j = 0;j<iFeld[i].length;j++){
					iFeld[i][j] = 1 + (int)(Math.random() * 9);	
					output = output + iFeld[i][j] + "       " ;	
				  }
			
			output = output + "\n";
			
		}
	return output;
	}
	 public static void main(String[] args) {
    	int iFeld2[][] = new int[9][9];
    	JOptionPane.showMessageDialog(null,Sudoku(iFeld2));
    	
    	
    	System.exit(0);
    }
}

Das Programm füllt allerdings nur 81 Zellen, ohne darauf zu achten, ob in einer Zeile oder in einer Spalte zweimal die selbe Zahl auftritt. Außerdem berücksichtigt es auch nicht, ob in einem 9ner Kästchen(das Feld ist ja noch in 9 3mal3er Felder aufgeteilt) zweimal die selbe Zahl vorkommt.

Kann mir jemand sagen wie man das überprüfen kann?

Danke schonmal
Viele Grüße
 
Hi,

Du müsstest Deine Schleifenlogic ändern...am besten kommst Du wenn Du Dir die Regeln die Du umsetzen möchtest auf ein Papier schreibst und dann dass ganze auf Dich wirken lässt....dann siehst Du die Lösung...

Bzw. fang erstmal an Dir Positionen der 9 3x3 Felder zu berechnen, dann ist der Rest nur noch schreib arbeit.

hmf

PS: Relativ einfach kann man so ein Spiel in Prolog implementieren, das kann dir auch die Lösung erstellen....
 
ok, danke erstmal, aber wie kann ich das jetzt genau machen, wie kann ich zum Beispiel die erste Zeile solange mit Zufallszahlen belegen, bis alle Zahlen unterschiedlich sind?


Gruß
 
Überleg dir wie du es von Hand machen würdest: Du würdest mit einem Würfel an einem Feld so lange Würfeln bis du eine Zahl erhälst die in der Zeile noch nicht vorhanden ist.

Das gleiche machst du auch in deinem Programm: Du merkst dir welche Zahlen in der Zeile schon vorhanden sind und würfelst so lange weiter bist du eine bisher nicht verwendete Zufallszahl erhälst. Du könntest z.B. immer alle Zellen der Zeile noch einmal durchlaufen und schauen ob die Zahl dort schon vorhanden ist.
 
Zurück