git-subtree-dir: software/minizinc git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
41 lines
813 B
MiniZinc
41 lines
813 B
MiniZinc
/***
|
|
!Test
|
|
solvers: [gecode, chuffed]
|
|
expected:
|
|
- !Result
|
|
solution: !Solution
|
|
board:
|
|
- [0, 0, 0, 0, 0]
|
|
- [0, 0, 0, 0, 0]
|
|
- [0, 0, 0, 0, 0]
|
|
- [0, 0, 0, 0, 0]
|
|
- [0, 0, 0, 0, 0]
|
|
- !Result
|
|
solution: !Solution
|
|
board:
|
|
- [2, 2, 2, 2, 2]
|
|
- [2, 2, 2, 2, 2]
|
|
- [2, 2, 2, 2, 2]
|
|
- [2, 2, 2, 2, 2]
|
|
- [2, 2, 2, 2, 2]
|
|
***/
|
|
% vim: et ts=4
|
|
% Cut down version of MiniZinc bug 110.
|
|
% When flattened with mzn2fzn 1.1 this model results in negative
|
|
% (and more generally out-of-bounds) array accesses.
|
|
|
|
array[1..5,1..5] of var 0..2: board;
|
|
|
|
constraint
|
|
forall(row,col in 1..5) (
|
|
( board[row, col] = 1 ->
|
|
forall(i in 1..5) (
|
|
(((row-i > 0) /\ (col-i > 0)) -> (board[row-i,col-i] < 2))
|
|
)
|
|
)
|
|
);
|
|
|
|
solve satisfy;
|
|
|
|
output ["board = ", show(board), ";\n"];
|