|
|
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.