61 lines
1.0 KiB
MiniZinc
61 lines
1.0 KiB
MiniZinc
/***
|
|
!Test
|
|
expected:
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 4, 6, 8, 3, 1, 7, 5]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 5, 7, 1, 3, 8, 6, 4]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 5, 7, 4, 1, 8, 6, 3]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 6, 1, 7, 4, 8, 3, 5]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 6, 8, 3, 1, 4, 7, 5]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 7, 3, 6, 8, 5, 1, 4]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 7, 5, 8, 1, 4, 6, 3]
|
|
- !Result
|
|
solution: !Solution
|
|
q: [2, 8, 6, 1, 3, 5, 7, 4]
|
|
***/
|
|
|
|
% n-queens example in Zinc using CP techniques
|
|
% By Reza Rafeh July 2005
|
|
% MiniZinc version
|
|
% Peter Stuckey September 30 2006
|
|
|
|
int: n = 8;
|
|
|
|
array [1..n] of var 1..n: q :: add_to_output;
|
|
|
|
|
|
constraint
|
|
alldifferent(q) % rows
|
|
/\
|
|
alldifferent(i in 1..n)(q[i] + i-1) % diagonals
|
|
/\
|
|
alldifferent(i in 1..n)(q[i] + n-i);
|
|
|
|
constraint q[1] = 2;
|
|
%constraint q[2] = 1;
|
|
|
|
include "alldifferent.mzn";
|
|
|
|
|
|
solve ::
|
|
int_search(
|
|
q,
|
|
first_fail,
|
|
indomain_min,
|
|
complete
|
|
)
|
|
satisfy;
|