Annotation of 43BSDTahoe/ucb/pascal/tstpx/src/eightqueens.p, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.