#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). :- diag(D), 2 { q(X,Y) : d(X;Y) : D==X - Y + queens }. :- diag(D), 2 { q(X,Y) : d(X;Y) : D==X + Y - 1 }. #hide. #show q(X,Y).