-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhj_queens.tig
40 lines (33 loc) · 908 Bytes
/
hj_queens.tig
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
/* A program to solve the 8-queens problem */
let
var N := 8
type intArray = array of int
var row := intArray [ N ] of 0
var col := intArray [ N ] of 0
var diag1 := intArray [N+N-1] of 0
var diag2 := intArray [N+N-1] of 0
function printboard() =
(
for i := 0 to N - 1
do (for j := 0 to N - 1
do print(if col[i]=j then "O" else ".");
print("\n")
);
print("===========\n")
)
function try(c:int) =
(
if c=N
then printboard()
else for r := 0 to N - 1
do
(
if row[r]=0 & diag1[r+c]=0 & diag2[r+7-c]=0
then (row[r]:=1; diag1[r+c]:=1; diag2[r+7-c]:=1;
col[c]:=r;
try(c+1);
row[r]:=0; diag1[r+c]:=0; diag2[r+7-c]:=0)
)
)
in try(0)
end