|
|
1.1 root 1: program eightqueens(output);
2: const doprint = 1;
3: var i : integer;
4: a : array [ 1..8 ] of boolean;
5: b : array [ 2..16] of boolean;
6: c : array [-7..7 ] of boolean;
7: x : array [ 1..8 ] of integer;
8: safe : boolean;
9:
10: procedure print;
11: var k: integer;
12: begin
13: if doprint = 1 then begin
14: write(' ');
15: for k := 1 to 8 do write(x[k]:2);
16: writeln;
17: end
18: end ;
19:
20: procedure trycol(j : integer);
21: var i : integer;
22:
23: procedure setqueen;
24: begin a[i] := false; b[i+j] := false; c[i-j] := false;
25: end ;
26:
27: procedure removequeen;
28: begin a[i] := true; b[i+j] := true; c[i-j] := true;
29: end ;
30:
31: begin
32: i := 0;
33: repeat i := i+1; safe := a[i] and b[i+j] and c[i-j];
34: if safe then
35: begin setqueen; x[j] := i;
36: if j < 8 then trycol(j+1) else print;
37: removequeen
38: end
39: until i = 8
40: end;
41:
42: begin print; for i := 1 to 8 do a[i] := true;
43: for i := 2 to 16 do b[i] := true;
44: for i := -7 to 7 do c[i] := true;
45: trycol(1);
46: end.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.