% by Tomi Janhunen (adopted from Ilkka Niemelä's encoding) d(1..queens). queens {q(X,Y):d(X;Y)} queens. :- q(X,Y1), q(X,Y2), Y1!=Y2, d(X;Y1;Y2). :- q(X1,Y), q(X2,Y), X1!=X2, d(X1;X2;Y). :- q(X1,Y1), q(X2,Y2), #abs(X1-X2)==#abs(Y1-Y2), X1!=X2, Y1!=Y2, d(X1;Y1;X2;Y2). #hide. #show q(X,Y).