Ich habe ein Problem mit dem Erstellen eines zufälligen Sudoku-Rasters. Ich habe versucht, ein rekursives Muster zu modifizieren, mit dem ich das Rätsel gelöst habe. Das Puzzle selbst ist ein zweidimensionales Integer-Array. Das ist, was ich habe (. Übrigens, das Verfahren nicht nur die erste Zeile zufällig hatte ich eine Idee die erste Reihe randomisieren, entschied sich dann einfach das ganze Gitter zu tun):Sudoku-Rekursionsproblem (Java)
public boolean randomizeFirstRow(int row, int col){
Random rGen = new Random();
if(row == 9){
return true;
}
else{
boolean res;
for(int ndx = rGen.nextInt() + 1; ndx <= 9;){
//Input values into the boxes
sGrid[row][col] = ndx;
//Then test to see if the value is valid
if(this.isRowValid(row, sGrid) && this.isColumnValid(col, sGrid) && this.isQuadrantValid(row, col, sGrid)){
// grid valid, move to the next cell
if(col + 1 < 9){
res = randomizeFirstRow(row, col+1);
}
else{
res = randomizeFirstRow(row+1, 0);
}
//If the value inputed is valid, restart loop
if(res == true){
return true;
}
}
}
}
//If no value can be put in, set value to 0 to prevent program counting to 9
setGridValue(row, col, 0);
//Return to previous method in stack
return false;
}
Diese Ergebnisse in einer ArrayIndexOutOfBoundsException mit einer lächerlich hohen oder niedrigen Zahl (+ - 100.000). Ich habe versucht, zu sehen, wie weit es in dem Verfahren geht, und es geht nie über diese Linie:
if(this.isRowValid(row, sGrid) && this.isColumnValid(col, sGrid) && this.isQuadrantValid(row, col, sGrid))
Ich verstehe nicht, wie die Array-Index so hoch geht. Kann mir jemand helfen?
Wow .. Ich habe vergessen, Parameter hinzuzufügen. Ich bin bemerkenswert dumm. – SkylineAddict
Okay, also habe ich das behoben, aber es gibt nur Nullen zurück. Ich sah auf einem Brett, dass ich zufällige Indizes anstelle von zufälligen Eingabewerten verwenden soll. Wenn es nicht zu viel verlangt ist, könntest du mir zeigen, wie ich das umsetzen kann? Vielen Dank. – SkylineAddict
Ich verstehe nicht, was Sie fragen, Sie müssen genauer sein. –