RosettaCodeData/Task/N-queens-problem/Picat/n-queens-problem-1.picat
2023-07-01 13:44:08 -04:00

23 lines
408 B
Text

import sat.
% import mip.
queens_sat(N,Q) =>
Q = new_array(N,N),
Q :: 0..1,
foreach (K in 1-N..N-1)
sum([Q[I,J] : I in 1..N, J in 1..N, I-J==K]) #=< 1
end,
foreach (K in 2..2*N)
sum([Q[I,J] : I in 1..N, J in 1..N, I+J==K]) #=< 1
end,
foreach (I in 1..N)
sum([Q[I,J] : J in 1..N]) #= 1
end,
foreach (J in 1..N)
sum([Q[I,J] : I in 1..N]) #= 1
end,
solve([inout],Q).