Ich bin dabei, einen Sudoku-Solver zu schreiben (muss noch den Boxcheck schreiben und vervollständige das Programm), aber ich teste es so, wie ich weiß. Das Rätsel, das ich gerade teste, ist "sehr einfach", da es in jeder Zeile/Spalte nur eine leere Zelle gibt. Das Puzzle beginnt mit "leeren" Zellen als Nullen. Mein Problem ist, dass, wenn ich das Programm starte und das Puzzle nach dem Aufruf von solve() ausgibt, die Nullen sich nicht ändern und das ursprüngliche Puzzle einfach ausgedruckt wird. Nicht sicher, was mein Problem ist, würde eine Richtung schätzen!Java Sudoku Solver nicht leere Zellen ändern
public ArrayList<Integer> create(){
ArrayList<Integer> possible = new ArrayList<Integer>();
for(int i=1; i<10; i++){
possible.add(i);
}
return possible;
}
public sudoku(int size)
{
SIZE = size;
N = size*size;
Grid = new int[N][N];
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
Grid[i][j] = 0;
}
public void solve()
{
int a, b, c, d, i, j, k, l;
int count = 0;
int value= 0;
for(i=0; i<N;i++){
for(j=0; j<N;j++){
if(Grid[i][j]==0){
ArrayList<Integer> possible = create();
//check row
for(a=0; a<N;a++){
for(b=0; b<N; b++){
if(Grid[a][0]==possible.get(a)){
possible.set(a, 0);
}
}
}
//check column
for(c=0; c<N;c++){
for(d=0; d<N;d++){
if(Grid[0][d]==possible.get(d)){
possible.set(d,0);
}
}
}
for(k=0; k<9; k++){
if(possible.get(k)!=0){
count++;
}
}
if(count==1){
for(l=0; l<9; l++){
if(possible.get(l)!=0){
value=possible.get(l);
}
}
}
Grid[i][j]=value;
}
}
}
}
Nur ein Zeiger. Wenn Sie jede Spalte nach 'if (Grid [a] [0] == possible.get (a))' überprüfen, warum müssen Sie verschachtelte Schleifen verwenden? Sie können es einfach mit einer Schleife von "a = 0" bis "a = N" machen. Gleiches mit der Spaltenüberprüfung. – noMAD