Research Article

Top- Based Adaptive Enumeration in Constraint Programming

Algorithm 3

:-lib(ic).
queens(N, Board):-
length(Board, N),
Board:: 1..N,
(fromto(Board, Q1|Cols, Cols, ) do
  (foreach(Q2, Cols), param(Q1), count(Dist,1,_) do
   noattack(Q1, Q2, Dist)
  )
),
%call to search predicate
noattack(Q1,Q2,Dist):-
Q2 #= Q1,
Q2 - Q1 #= Dist,
Q1 - Q2 #= Dist.