20 lines
519 B
Plaintext
20 lines
519 B
Plaintext
/*
|
|
n-queens.pure
|
|
Tectonics:
|
|
pure -c queens.pure -o queens
|
|
or
|
|
pure -q -i queens.pure
|
|
*/
|
|
using system;
|
|
|
|
queens n = search n 1 [] with
|
|
search n i p = [reverse p] if i>n;
|
|
= cat [search n (i+1) ((i,j):p) | j = 1..n; safe (i,j) p];
|
|
safe (i,j) p = ~any (check (i,j)) p;
|
|
check (i1,j1) (i2,j2)
|
|
= i1==i2 || j1==j2 || i1+j1==i2+j2 || i1-j1==i2-j2;
|
|
end;
|
|
|
|
compiling || (puts("queens 4: " + str(queens 4)) $$
|
|
puts("Solutions to queens 7: " + str(#queens 7)));
|