queens.mzn
722 Bytes
% n-queens example in MiniZinc using CP techniques
% vim: ft=zinc ts=4 sw=4 et tw=0
% By Reza Rafeh July 2005
% MiniZinc version
% Peter Stuckey September 30 2006
int: n; % The number of queens.
array [1..n] of var 1..n: q;
predicate
noattack(int: i, int: j, var int: qi, var int: qj) =
qi != qj /\
qi + i != qj + j /\
qi - i != qj - j;
constraint
forall (i in 1..n, j in i+1..n) (
noattack(i, j, q[i], q[j])
);
solve :: int_search(q, input_order, indomain_min, complete)
satisfy;
%solve satisfy;
output ["8 queens, CP version:\n"] ++
[ if fix(q[i]) = j then "Q " else ". " endif ++
if j = n then "\n" else "" endif
| i, j in 1..n
];