earthlin.fzn 1.71 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
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;