home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xc212os2.zip / SAMPLES / SIMPLE / queens.mod < prev    next >
Text File  |  1995-01-31  |  960b  |  43 lines

  1. MODULE queens;
  2.  
  3. IMPORT InOut;
  4.  
  5. VAR i, n: INTEGER;
  6.     a: ARRAY [ 1.. 8] OF BOOLEAN;
  7.     b: ARRAY [ 2..16] OF BOOLEAN;
  8.     c: ARRAY [-7.. 7] OF BOOLEAN;
  9.  
  10. PROCEDURE try(i: INTEGER);
  11.   VAR j: INTEGER;
  12. BEGIN
  13.   FOR j := 1 TO 8 DO
  14.     IF a[j] & b[i+j] & c[i-j] THEN
  15.       a[j]   := FALSE;
  16.       b[i+j] := FALSE;
  17.       c[i-j] := FALSE;
  18.       IF i<8 THEN
  19.         try (i+1);
  20.       ELSE
  21.         INC (n);
  22.       END;
  23.       a[j]   := TRUE;
  24.       b[i+j] := TRUE;
  25.       c[i-j] := TRUE;
  26.     END;
  27.   END;
  28. END try;
  29.  
  30. BEGIN
  31.   InOut.WriteString ("Eight Queens Problem Benchmark"); InOut.WriteLn;
  32.   InOut.WriteString ("------------------------------"); InOut.WriteLn;
  33.   InOut.WriteLn;
  34.   FOR i :=  1 TO  8 DO a[i] := TRUE; END;
  35.   FOR i :=  2 TO 16 DO b[i] := TRUE; END;
  36.   FOR i := -7 TO  7 DO c[i] := TRUE; END;
  37.   n := 0;
  38.   try (1);
  39.   InOut.WriteString ("There are ");
  40.   InOut.WriteInt (n, 1);
  41.   InOut.WriteString (" solutions");
  42. END queens.
  43.