Howdy! I’m trying to make a Sudoku Solver and I can’t seem to figure out this bug. I’ve got too many console.logs in here but you should be able see what’s happening. I use a recursive function to try all possible numbers but when it fails, I want it to backtrack through the stack, however when it backtracks it’s keeping the same indecies. Any idea what’s wrong? Thanks!
function solve() {
for (jj = 0; jj < size; jj++) {
for (ii = 0; ii < size; ii++) {
if (grid[jj * size + ii].value == 0) {
for (n = 1; n < size + 1; n++) {
console.log('test (' + ii + ',' + jj + ') = ' + n)
if (grid[jj * size + ii].possible(n)) {
grid[jj * size + ii].value = n;
console.log('(' + ii + '),(' + jj + ') set to ' +grid[jj * size + ii].value);
redraw();
solve();
grid[jj * size + ii].value = 0;
console.log('(' + ii + '),(' + jj + ') set to ' +grid[jj * size + ii].value);
redraw();
}
}
console.log('back track');
return
}
}
}
}
Console Log
test (2,0) = 1
(2),(0) set to 1
test (3,0) = 1
test (3,0) = 2
(3),(0) set to 2
test (5,0) = 1
test (5,0) = 2
test (5,0) = 3
test (5,0) = 4
(5),(0) set to 4
test (6,0) = 1
test (6,0) = 2
test (6,0) = 3
test (6,0) = 4
test (6,0) = 5
test (6,0) = 6
test (6,0) = 7
test (6,0) = 8
(6),(0) set to 8
test (7,0) = 1
test (7,0) = 2
test (7,0) = 3
test (7,0) = 4
test (7,0) = 5
test (7,0) = 6
test (7,0) = 7
test (7,0) = 8
test (7,0) = 9
(7),(0) set to 9
test (8,0) = 1
test (8,0) = 2
test (8,0) = 3
test (8,0) = 4
test (8,0) = 5
test (8,0) = 6
test (8,0) = 7
test (8,0) = 8
test (8,0) = 9
back track
(8),(0) set to 0
back track
(8),(0) set to 0
back track
(8),(0) set to 0
back track
(8),(0) set to 0
back track
(8),(0) set to 0
back track
▶[Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell, Cell]