|
|
1 CO 2 3 @section Synopsis 4 5 'N' queens in classic backtracker. 6 7 CO 8 9 BEGIN 10 11 INT rank = 8; 12 printf (($"Rank="g(0)l$, rank)); 13 [1 : rank] CCOL column, INT sols found := 0; 14 15 PROC place from = (CROW this row) VOID: 16 IF this row > rank 17 THEN sols found +:= 1; 18 FOR row TO rank 19 DO print(("abcdefghijklmnopqrstuvwxyz"[row], whole(column[row], 0), " ")) 20 OD; 21 print ((sols found MOD 4 = 0 | new line | " ")) 22 ELSE FOR i TO rank 23 DO IF BOOL safe := TRUE; 24 FOR j TO this row - 1 25 WHILE safe 26 DO safe := safe AND NOT (column[j] = i ORF (column[j] - i = this row - j ORF column[j] - i = j - this row)) 27 OD; 28 safe 29 THEN column[this row] := i; 30 place from (this row + 1) 31 FI 32 OD 33 FI; 34 35 place from (1); 36 37 MODE CROW = INT, CCOL = INT; 38 39 SKIP 40 41 END
© 2001-2026 J.M. van der Veer
jmvdveer@algol68genie.nl