-
Notifications
You must be signed in to change notification settings - Fork 1
/
solver.html
116 lines (109 loc) · 3.37 KB
/
solver.html
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!doctype html>
<html lang="en">
<!-- Copyright 2010-2017 Michael Chaney, all rights reserved except as
noted in accompanying license file. -->
<head>
<meta charset="utf-8">
<link rel="stylesheet" media="all" href="sudoku.css" />
<script src="sudoku.js" type="text/javascript"></script>
<script type="text/javascript">
// This function will add an onload handler to the body. It's fine to
// add a bunch of handlers, this keeps track of all of them.
function add_body_onload(func) {
var old_body_onload=window.onload;
window.onload=function() {
if (old_body_onload) { old_body_onload(); }
func();
}
}
var sudoku;
var sudoku_div, solutions_div;
var regular_size_select, irregular_size_select;
// initialize the game
function init() {
sudoku_div = document.getElementById('sudoku');
solutions_div = document.getElementById('solutions');
regular_size_select = document.getElementById('regular_size');
irregular_size_select = document.getElementById('irregular_size');
setup_regular_puzzle();
}
add_body_onload(init);
function clear_puzzle() {
while (sudoku_div.firstChild) {
sudoku_div.removeChild(sudoku_div.firstChild);
}
}
function setup_regular_puzzle() {
clear_puzzle();
var regular_size = parseInt(regular_size_select.value);
sudoku=Object.create(Sudoku);
sudoku.init(regular_size);
sudoku.regular_groups();
sudoku.gather_groups();
sudoku.color_groups();
sudoku.display(sudoku_div);
setup_inputs();
}
function setup_irregular_puzzle() {
clear_puzzle();
var irregular_size = parseInt(irregular_size_select.value);
sudoku=Object.create(Sudoku);
sudoku.init(irregular_size);
sudoku.irregular_groups();
sudoku.gather_groups();
sudoku.color_groups();
sudoku.display(sudoku_div);
setup_inputs();
}
function setup_inputs() {
sudoku.setup_inputs();
}
function solve() {
sudoku.read_inputs();
sudoku.reveal();
sudoku.show_all_solutions(function(puzzle) {
puzzle.display(solutions_div,true);
});
}
</script>
</head>
<body>
<div id="sudoku-wrap">
<div id="game-controls">
<select id="regular_size">
<option value="4">4</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="12">12</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
</select>
<button onClick="setup_regular_puzzle();">Resize Regular</button>
<select id="irregular_size">
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
</select>
<button onClick="setup_irregular_puzzle();">Resize Irregular</button>
<button onClick="solve();">Solve</button>
</div>
<div id="sudoku" class="sudoku">
</div>
<div id="solutions">
</div>
</div>
</body>
</html>