105 lines
7.2 KiB
MiniZinc
105 lines
7.2 KiB
MiniZinc
predicate fzn_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_fzn_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_fzn_cumulative(array [int] of var int: s, array [int] of int: d, array [int] of int: r, var int: b);
|
|
var bool: BOOL____00008 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00010 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00011 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00012 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00013 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00014 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00017 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00019 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00020 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00021 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00022 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00023 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00025 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00027 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00029 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00031 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00033 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00035 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00037 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00039 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00041 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00043 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00007 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00009 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00016 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00018 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00026 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00028 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00030 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00032 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00034 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00036 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00038 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00040 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00042 :: is_defined_var :: var_is_introduced;
|
|
var 0..1: INT____00044 :: is_defined_var :: var_is_introduced;
|
|
array [1..2] of var 0..9: a_d1;
|
|
array [1..2] of var 0..9: a_d2;
|
|
array [1..2] of var 0..9: a_d3;
|
|
array [1..6] of var 0..9: a = [a_d1[1], a_d1[2], a_d2[1], a_d2[2], a_d3[1], a_d3[2]];
|
|
array [1..10] of var 0..9: a_digits :: output_array([0..9]);
|
|
var 0..54: all_sum;
|
|
var 1..40: d1;
|
|
var 2..40: d2;
|
|
var 12..40: d3;
|
|
var 10..10: used_digits_sum = 10;
|
|
constraint array_bool_and([BOOL____00008, BOOL____00010], BOOL____00013) :: defines_var(BOOL____00013);
|
|
constraint array_bool_and([BOOL____00011, BOOL____00012], BOOL____00014) :: defines_var(BOOL____00014);
|
|
constraint array_bool_and([BOOL____00017, BOOL____00019], BOOL____00022) :: defines_var(BOOL____00022);
|
|
constraint array_bool_and([BOOL____00020, BOOL____00021], BOOL____00023) :: defines_var(BOOL____00023);
|
|
constraint array_bool_or([BOOL____00013, BOOL____00014], true);
|
|
constraint array_bool_or([BOOL____00022, BOOL____00023], true);
|
|
constraint bool2int(BOOL____00025, INT____00026) :: defines_var(INT____00026);
|
|
constraint bool2int(BOOL____00027, INT____00028) :: defines_var(INT____00028);
|
|
constraint bool2int(BOOL____00029, INT____00030) :: defines_var(INT____00030);
|
|
constraint bool2int(BOOL____00031, INT____00032) :: defines_var(INT____00032);
|
|
constraint bool2int(BOOL____00033, INT____00034) :: defines_var(INT____00034);
|
|
constraint bool2int(BOOL____00035, INT____00036) :: defines_var(INT____00036);
|
|
constraint bool2int(BOOL____00037, INT____00038) :: defines_var(INT____00038);
|
|
constraint bool2int(BOOL____00039, INT____00040) :: defines_var(INT____00040);
|
|
constraint bool2int(BOOL____00041, INT____00042) :: defines_var(INT____00042);
|
|
constraint bool2int(BOOL____00043, INT____00044) :: defines_var(INT____00044);
|
|
constraint global_cardinality(a, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], a_digits);
|
|
constraint int_eq_reif(INT____00007, 0, BOOL____00012) :: defines_var(BOOL____00012);
|
|
constraint int_eq_reif(INT____00007, 1, BOOL____00008) :: defines_var(BOOL____00008);
|
|
constraint int_eq_reif(INT____00009, 0, BOOL____00010) :: defines_var(BOOL____00010);
|
|
constraint int_eq_reif(INT____00009, 1, BOOL____00011) :: defines_var(BOOL____00011);
|
|
constraint int_eq_reif(INT____00016, 0, BOOL____00020) :: defines_var(BOOL____00020);
|
|
constraint int_eq_reif(INT____00016, 1, BOOL____00017) :: defines_var(BOOL____00017);
|
|
constraint int_eq_reif(INT____00018, 0, BOOL____00021) :: defines_var(BOOL____00021);
|
|
constraint int_eq_reif(INT____00018, 1, BOOL____00019) :: defines_var(BOOL____00019);
|
|
constraint int_lin_eq([-1, 1], [d3, d2], -10);
|
|
constraint int_lin_eq([-1, 2], [d2, d1], 0);
|
|
constraint int_lin_eq([-1, 10, 1], [d1, a_d1[1], a_d1[2]], 0);
|
|
constraint int_lin_eq([-1, 10, 1], [d2, a_d2[1], a_d2[2]], 0);
|
|
constraint int_lin_eq([-1, 10, 1], [d3, a_d3[1], a_d3[2]], 0);
|
|
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1], [all_sum, a_d1[1], a_d1[2], a_d2[1], a_d2[2], a_d3[1], a_d3[2]], 0);
|
|
constraint int_lin_eq([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, INT____00028, INT____00030, INT____00032, INT____00034, INT____00036, INT____00038, INT____00040, INT____00042, INT____00044], 0);
|
|
constraint int_lt_reif(0, a_digits[1], BOOL____00025) :: defines_var(BOOL____00025);
|
|
constraint int_lt_reif(0, a_digits[2], BOOL____00027) :: defines_var(BOOL____00027);
|
|
constraint int_lt_reif(0, a_digits[3], BOOL____00029) :: defines_var(BOOL____00029);
|
|
constraint int_lt_reif(0, a_digits[4], BOOL____00031) :: defines_var(BOOL____00031);
|
|
constraint int_lt_reif(0, a_digits[5], BOOL____00033) :: defines_var(BOOL____00033);
|
|
constraint int_lt_reif(0, a_digits[6], BOOL____00035) :: defines_var(BOOL____00035);
|
|
constraint int_lt_reif(0, a_digits[7], BOOL____00037) :: defines_var(BOOL____00037);
|
|
constraint int_lt_reif(0, a_digits[8], BOOL____00039) :: defines_var(BOOL____00039);
|
|
constraint int_lt_reif(0, a_digits[9], BOOL____00041) :: defines_var(BOOL____00041);
|
|
constraint int_lt_reif(0, a_digits[10], BOOL____00043) :: defines_var(BOOL____00043);
|
|
constraint int_mod(a_d1[1], 2, INT____00007) :: defines_var(INT____00007);
|
|
constraint int_mod(a_d1[2], 2, INT____00009) :: defines_var(INT____00009);
|
|
constraint int_mod(a_d2[1], 2, INT____00016) :: defines_var(INT____00016);
|
|
constraint int_mod(a_d2[2], 2, INT____00018) :: defines_var(INT____00018);
|
|
solve satisfy;
|