import cp. % CP approach queens_cp(N, Q) => Q = new_list(N), Q :: 1..N, all_different(Q), all_different([$Q[I]-I : I in 1..N]), all_different([$Q[I]+I : I in 1..N]), solve([ff],Q). % SAT approach (using a N x N matrix) 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).