blob: eedb576735ef13d4a4a39d8ff20d71b36a6262c1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
function solve() {
let board = self.readBoard(true);
let backtrack = 0;
let guesswork = 0;
let dcount = 0;
let time = Date.now();
if (solve()) {
stats();
self.writeBytes(board);
el.classList.add("solved");
} else {
stats();
alert("no solution");
}
function solve() {
let { index, moves, len } = analyze(board);
if (index == null) return true;
if (len > 1) guesswork++;
for (let m = 1; moves; m <<= 1) {
if (moves & m) {
dcount++;
board[index] = m;
if (solve()) return true;
moves ^= m;
}
}
board[index] = 0;
++backtrack;
return false;
}
function stats() {
log(el, `${dcount} digits placed<br>${backtrack} take-backs<br>${guesswork} guesses<br>${Date.now() - time} milliseconds`);
}
}
|