Files
ortools-clone/examples/flatzinc/earthlin.fzn
2012-09-03 18:26:36 +00:00

35 lines
1.7 KiB
MiniZinc

array [1..3] of var 0..3: d :: output_array([1..3]);
array [1..9] of var 0..1: x :: output_array([1..3, 1..3]);
array [1..9] of var 0..1: y :: output_array([1..3, 1..3]);
constraint int_eq(x[1], x[6]);
constraint int_eq(x[1], x[9]);
constraint int_eq(x[4], x[3]);
constraint int_lin_eq([1, 1, 1], [x[1], x[2], x[3]], 1);
constraint int_lin_eq([1, 1, 1], [x[1], x[4], x[7]], 1);
constraint int_lin_eq([1, 1, 1], [x[2], x[5], x[8]], 1);
constraint int_lin_eq([1, 1, 1], [x[3], x[6], x[9]], 1);
constraint int_lin_eq([1, 1, 1], [x[4], x[5], x[6]], 1);
constraint int_lin_eq([1, 1, 1], [x[7], x[8], x[9]], 1);
constraint int_lin_eq([1, 1, 1], [y[1], y[2], y[3]], 1);
constraint int_lin_eq([1, 1, 1], [y[1], y[4], y[7]], 1);
constraint int_lin_eq([1, 1, 1], [y[2], y[5], y[8]], 1);
constraint int_lin_eq([1, 1, 1], [y[3], y[6], y[9]], 1);
constraint int_lin_eq([1, 1, 1], [y[4], y[5], y[6]], 1);
constraint int_lin_eq([1, 1, 1], [y[7], y[8], y[9]], 1);
constraint int_lin_eq([-1, 1, 1, 1], [d[1], x[1], x[5], x[9]], 0);
constraint int_lin_eq([-1, 1, 1, 1], [d[2], x[1], x[6], x[8]], 0);
constraint int_lin_eq([-1, 1, 1, 1], [d[3], x[3], x[4], x[8]], 0);
constraint int_lin_le([-1, -1], [d[1], y[3]], -1);
constraint int_lin_le([-1, -1], [d[2], y[6]], -1);
constraint int_lin_le([-1, -1], [d[3], y[9]], -1);
constraint int_lin_le([-1, 3], [d[1], y[1]], 0);
constraint int_lin_le([-1, 3], [d[2], y[4]], 0);
constraint int_lin_le([-1, 3], [d[3], y[7]], 0);
constraint int_lin_le([1, -3], [d[1], y[1]], 2);
constraint int_lin_le([1, -3], [d[2], y[4]], 2);
constraint int_lin_le([1, -3], [d[3], y[7]], 2);
constraint int_lin_le([1, 3], [d[1], y[3]], 3);
constraint int_lin_le([1, 3], [d[2], y[6]], 3);
constraint int_lin_le([1, 3], [d[3], y[9]], 3);
solve satisfy;