Hallo,
da ich kein aktives Forum für Java kenne, wollte ich es mal hier probieren. Ich denke das mein Problem auch nichts mit Java direkt zu tun hat. Mein Problem ist mehr der Algorithmus. Ich will einen Algorithmus schreiben, womit ich eine Sudoku Matrix in meinem zweidimensionalen Array erzeugen kann. Dazu möchte ich eine Klasse schreiben.
Es gibt drei Methode die ich unbedingt verwenden muss:
1. public boolean checkRows(int[][] pSudokuMatrix) // Prüft, ob die Reihen den Spielregeln entsprechen
2. public boolean checkColumns(int[][] pSudokuMatrix) // Prüft, ob die Spalten den Spielregeln entsprechen
3. public boolean checkBlocks(int[][] pSudokuMatrix) // Prüft, ob die Blöcke den Spielregeln entsprechen
Nun zum Algorithmus, den ich verwenden soll!
Beginnend in der ersten Zeile, soll eine Zufallszahl erzeugt werden. Wenn die erzeugt Zufallszahl zwischen 1 und 9 den Regln entspricht, dann kann die erste Zahl eingetragen werden. Dann geht es mit der zweiten Zahl der ersten Reihe weiter. Das wird solange gemacht, bis die erste Reihe voll ist. Dann geht es zur zweiten Reihe. Das wird wieder solange bemacht, bis alle Reihen voll sind.
Ich glaube, dass ich den Algorithmus ganz gut imlementiert habe. Jedoch funktioniert er mal und mal nicht.
Hier mein Code:
Code:
public void generateSudokuMatrix() {
Random random = new Random();// Erzeugt ein Objekt der Klasse Random
int[][] temp = new int[size * size][size * size];// size hat den Wert 3 und temp ist ein zweidimensionales Array
int x;// Schleifenvariable
int y;// Schleifenvariable
y = 0;
do {
x = 0;
do {
temp[x][y] = random.nextInt(size * size) + 1;// Zufallszahl von 1 - 9 erzeugen
if(checkRows(temp) && checkColumns(temp) && checkBlocks(temp)) {
sudoku = temp; // Sudoku ist auch ein zweidimensionales Array
x++;
}
else {
temp[x][y] = 0;
}
}while(x != size * size);
y++;
}while(y != size * size);
}
Vieleicht könnt ihr mir helfen.
LG Christian