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

95 lines
4.7 KiB
MiniZinc

predicate all_different_int(array [int] of var int: x);
predicate count(array [int] of var int: x, var int: y, var int: c);
predicate fixed_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, int: b);
predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
predicate maximum_int(var int: m, array [int] of var int: x);
predicate minimum_int(var int: m, array [int] of var int: x);
predicate sliding_sum(int: low, int: up, int: seq, array [int] of var int: vs);
predicate sort(array [int] of var int: x, array [int] of var int: y);
predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);
predicate table_int(array [int] of var int: x, array [int, int] of int: t);
predicate var_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
array [1..3] of var 0..6: gcc1____00003;
array [1..3] of var 0..6: gcc1____00019;
array [1..3] of var 0..6: gcc1____00029;
array [1..3] of var 0..6: gcc2____00004;
array [1..3] of var 0..6: gcc2____00020;
array [1..3] of var 0..6: gcc2____00030;
array [1..6] of var 0..2: m1____00001;
array [1..6] of var 0..2: m1____00017;
array [1..6] of var 0..2: m1____00027;
array [1..6] of var 0..2: m2____00002;
array [1..6] of var 0..2: m2____00018;
array [1..6] of var 0..2: m2____00028;
array [1..18] of var 1..9: v :: output_array([1..3, 1..6]);
constraint global_cardinality(m1____00001, [0, 1, 2], gcc1____00003);
constraint global_cardinality(m1____00017, [0, 1, 2], gcc1____00019);
constraint global_cardinality(m1____00027, [0, 1, 2], gcc1____00029);
constraint global_cardinality(m2____00002, [0, 1, 2], gcc2____00004);
constraint global_cardinality(m2____00018, [0, 1, 2], gcc2____00020);
constraint global_cardinality(m2____00028, [0, 1, 2], gcc2____00030);
constraint int_eq(1, v[1]);
constraint int_eq(1, v[3]);
constraint int_eq(1, v[6]);
constraint int_eq(1, v[9]);
constraint int_eq(1, v[10]);
constraint int_eq(1, v[13]);
constraint int_eq(2, v[5]);
constraint int_eq(2, v[16]);
constraint int_eq(3, v[14]);
constraint int_eq(4, v[8]);
constraint int_eq(4, v[15]);
constraint int_eq(5, v[4]);
constraint int_eq(5, v[11]);
constraint int_eq(5, v[12]);
constraint int_eq(6, v[7]);
constraint int_eq(7, v[18]);
constraint int_eq(8, v[17]);
constraint int_eq(9, v[2]);
constraint int_eq(gcc1____00003[1], gcc2____00004[1]);
constraint int_eq(gcc1____00003[2], gcc2____00004[2]);
constraint int_eq(gcc1____00003[3], gcc2____00004[3]);
constraint int_eq(gcc1____00019[1], gcc2____00020[1]);
constraint int_eq(gcc1____00019[2], gcc2____00020[2]);
constraint int_eq(gcc1____00019[3], gcc2____00020[3]);
constraint int_eq(gcc1____00029[1], gcc2____00030[1]);
constraint int_eq(gcc1____00029[2], gcc2____00030[2]);
constraint int_eq(gcc1____00029[3], gcc2____00030[3]);
constraint int_eq(m1____00017[1], m1____00001[1]);
constraint int_eq(m1____00017[2], m1____00001[2]);
constraint int_eq(m1____00017[3], m1____00001[3]);
constraint int_eq(m1____00017[4], m1____00001[4]);
constraint int_eq(m1____00017[5], m1____00001[5]);
constraint int_eq(m1____00017[6], m1____00001[6]);
constraint int_eq(m1____00027[1], m2____00002[1]);
constraint int_eq(m1____00027[2], m2____00002[2]);
constraint int_eq(m1____00027[3], m2____00002[3]);
constraint int_eq(m1____00027[4], m2____00002[4]);
constraint int_eq(m1____00027[5], m2____00002[5]);
constraint int_eq(m1____00027[6], m2____00002[6]);
constraint int_eq(m2____00028[1], m2____00018[1]);
constraint int_eq(m2____00028[2], m2____00018[2]);
constraint int_eq(m2____00028[3], m2____00018[3]);
constraint int_eq(m2____00028[4], m2____00018[4]);
constraint int_eq(m2____00028[5], m2____00018[5]);
constraint int_eq(m2____00028[6], m2____00018[6]);
constraint int_mod(v[1], 3, m1____00001[1]);
constraint int_mod(v[2], 3, m1____00001[2]);
constraint int_mod(v[3], 3, m1____00001[3]);
constraint int_mod(v[4], 3, m1____00001[4]);
constraint int_mod(v[5], 3, m1____00001[5]);
constraint int_mod(v[6], 3, m1____00001[6]);
constraint int_mod(v[7], 3, m2____00002[1]);
constraint int_mod(v[8], 3, m2____00002[2]);
constraint int_mod(v[9], 3, m2____00002[3]);
constraint int_mod(v[10], 3, m2____00002[4]);
constraint int_mod(v[11], 3, m2____00002[5]);
constraint int_mod(v[12], 3, m2____00002[6]);
constraint int_mod(v[13], 3, m2____00018[1]);
constraint int_mod(v[14], 3, m2____00018[2]);
constraint int_mod(v[15], 3, m2____00018[3]);
constraint int_mod(v[16], 3, m2____00018[4]);
constraint int_mod(v[17], 3, m2____00018[5]);
constraint int_mod(v[18], 3, m2____00018[6]);
solve :: int_search([v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15], v[16], v[17], v[18]], first_fail, indomain_min, complete) satisfy;