git-subtree-dir: software/mza git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
27 lines
697 B
MiniZinc
27 lines
697 B
MiniZinc
% RUNS ON mzn20_fd
|
|
% RUNS ON mzn-fzn_fd
|
|
% RUNS ON mzn20_fd_linear
|
|
% RUNS ON mzn20_mip
|
|
% latin_squares_fd.mzn
|
|
% vim: ft=zinc ts=4 sw=4 et tw=0
|
|
% Author: Peter Stuckey
|
|
% Edited: Ralph Becket
|
|
%
|
|
% Latin squares FD only.
|
|
|
|
int: size = 9;
|
|
|
|
set of int: range = 1..size;
|
|
|
|
array[range, range, range] of var 0..1: x;
|
|
|
|
constraint forall (i, j in range) ((sum (k in range) (x[i,j,k]) = 1));
|
|
constraint forall (i, k in range) ((sum (j in range) (x[i,j,k]) = 1));
|
|
constraint forall (j, k in range) ((sum (i in range) (x[i,j,k]) = 1));
|
|
|
|
solve satisfy;
|
|
|
|
output [ if j = 1 /\ k = 1 then "\n" else "" endif ++
|
|
if fix(x[i,j,k]) = 1 then show(k) else "" endif
|
|
| i, j, k in range ] ++ ["\n"];
|