% An encoding of the 8-queens problem using choice rules and constraints % (c) 2007 Tomi Janhunen (adopted from Ilkka Niemelä's encoding) % % usage: lparse -c n=8 queens.lp | smodels 0 number(1..n). n {queen(X,Y):number(X;Y)} n. :- queen(X,Y1; X,Y2), Y1!=Y2, number(X;Y1;Y2). :- queen(X1,Y; X2,Y), X1!=X2, number(X1;X2;Y). :- queen(X1,Y1; X2,Y2), abs(X1-X2)==abs(Y1-Y2), X1!=X2, Y1!=Y2, number(X1;Y1;X2;Y2). hide number(N).