#const diags = queens * 2 - 1. d(1..queens). diag(1..diags). 1 { q(X,Y) : d(Y) } 1 :- d(X). 1 { q(X,Y) : d(X) } 1 :- d(Y). d1(X,Y,X - Y + queens) :- d(X;Y). d2(X,Y,X + Y - 1) :- d(X;Y). :- diag(D), 2 { q(X,Y) : d1(X,Y,D) }. :- diag(D), 2 { q(X,Y) : d2(X,Y,D) }. #hide. #show q(X,Y).