blob: a19a78102efad242da28cd914cddffa22acaa3fe (
plain)
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
|
/* A program to solve the N-queens problem */
let
var N := 5
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) =
( /* for i := 0 to c do print("."); print("\n"); flush();*/
if c=N
then printboard()
else for r := 0 to N-1
do if row[r]=0 & diag1[r+c]=0 & diag2[r+N-1-c]=0
then (row[r] :=1; diag1[r+c] :=1; diag2[r+N-1-c] :=1;
col[c] :=r;
try(c+1);
row[r] :=0; diag1[r+c] :=0; diag2[r+N-1-c] :=0)
)
in try(0)
end
|