1BSD/puman/eightout1

UNIX Pascal PI -- Version 1.0 (September 6, 1977)

Tue Sep  6 10:40 1977  eightqueens.p

     1  program eightqueens(output);
     2  label 13;
     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;

    10     procedure print;
    11        var k, l: integer;
    12     begin
    13        writeln;
    14        writeln('*** Solution to the Eight Queens Problem ***');
    15        writeln;
    16        for l := 1 to 8 do begin
    17           write(tab, 9 - l : 1, '  ');
    18           for k := 1 to 8 do begin
    19              if x[l] = k then
    20                  write('Q ')
    21              else if odd (k + l) then
    22                  write('* ')
    23              else
    24                  write('- ')
    25           end;
    26           writeln
    27        end;
    28        writeln;
    29        writeln(tab, '   q q q q k k k k');
    30        writeln(tab, '   r n b     b n r');
    31        writeln;
    32        goto 13
    33     end ;

    35  procedure trycol(j : integer);
    36     var i : integer;

    38     procedure setqueen;
    39     begin a[i] := false; b[i+j] := false; c[i-j] := false;
    40     end ;

    42     procedure removequeen;
    43     begin a[i] := true; b[i+j] := true; c[i-j] := true;
    44     end ;

    46      begin
    47        repeat i := i+1; safe := a[i] and b[i+j] and c[i-j];
    48           if safe then
    49           begin setqueen; x[j] := i;
    50              if j < 8 then trycol(j+1) else print;
    51              removequeen
    52           end
    53        until i = 8
    54  end;

    56  begin
    57        for i := 1 to 8 do a[i] := true;
    58        for i := 2 to 16 do b[i] := true;
    59        for i := -7 to 7 do c[i] := true;
    60        trycol(1);
    61        writeln('No solutions!');
    62        halt;
    63  13:
    64  end.
Execution begins...

*** Solution to the Eight Queens Problem ***

        8  Q * - * - * - * 
        7  * - * - Q - * - 
        6  - * - * - * - Q 
        5  * - * - * Q * - 
        4  - * Q * - * - * 
        3  * - * - * - Q - 
        2  - Q - * - * - * 
        1  * - * Q * - * - 

           q q q q k k k k
           r n b     b n r

Execution terminated
4208 statements executed in 0.52 seconds cpu time