1 { q(X,Y) : d(Y) } 1 :- d(X). 1 { q(X,Y) : d(X) } 1 :- d(Y). :- dd(X), 2 { q(U,V) : d(U;V) : U<=X : V<=X : #abs(X-U) == #abs(1-V) }. :- dd(X), 2 { q(U,V) : d(U;V) : U>=queens-X+1: V<=X : #abs(queens-X+1-U) == #abs(1-V) }. dd(X) :- X=2*Y, d(Y). dd(X) :- X=2*Y-1,d(Y). d(1..queens). #hide. #show q(X,Y).