Files
ortools-clone/examples/flatzinc/houses.fzn

201 lines
12 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____00012 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00014 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00016 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00018 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00020 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00022 :: 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 bool: BOOL____00045 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00047 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00049 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00051 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00053 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00055 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00057 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00061 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00063 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00067 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00069 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00071 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00073 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00075 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00077 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00079 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00081 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00083 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00085 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00087 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00089 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00091 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00093 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00095 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00097 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00099 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00101 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00108 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00110 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00112 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00114 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00116 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00118 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00120 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00122 :: is_defined_var :: var_is_introduced;
var -5..7: INT____00001 :: is_defined_var :: var_is_introduced;
var -2..7: INT____00003 :: is_defined_var :: var_is_introduced;
var -6..7: INT____00005 :: is_defined_var :: var_is_introduced;
var -7..2: INT____00007 :: is_defined_var :: var_is_introduced;
var 1..8: adrienne;
var 3..8: allison;
var 6..8: belinda;
var 1..7: benito;
var 2..8: cheri;
var 1..8: crawford;
var 1..3: daryl;
var 1..8: don;
array [1..8] of var 1..8: all :: output_array([1..8]) = [allison, belinda, adrienne, benito, cheri, crawford, daryl, don];
array [1..8] of var 1..8: houses :: output_array([1..8]);
constraint fzn_all_different_int(all);
constraint int_abs(INT____00001, 1);
constraint int_abs(INT____00003, 2);
constraint int_abs(INT____00005, 3);
constraint int_abs(INT____00007, 4);
constraint int_eq_reif(adrienne, 1, BOOL____00035);
constraint int_eq_reif(adrienne, 2, BOOL____00037);
constraint int_eq_reif(adrienne, 3, BOOL____00039);
constraint int_eq_reif(adrienne, 4, BOOL____00041);
constraint int_eq_reif(adrienne, 5, BOOL____00043);
constraint int_eq_reif(adrienne, 6, BOOL____00045);
constraint int_eq_reif(adrienne, 7, BOOL____00047);
constraint int_eq_reif(adrienne, 8, BOOL____00049);
constraint int_eq_reif(allison, 3, BOOL____00012);
constraint int_eq_reif(allison, 4, BOOL____00014);
constraint int_eq_reif(allison, 5, BOOL____00016);
constraint int_eq_reif(allison, 6, BOOL____00018);
constraint int_eq_reif(allison, 7, BOOL____00020);
constraint int_eq_reif(allison, 8, BOOL____00022);
constraint int_eq_reif(belinda, 6, BOOL____00029);
constraint int_eq_reif(belinda, 7, BOOL____00031);
constraint int_eq_reif(belinda, 8, BOOL____00033);
constraint int_eq_reif(benito, 1, BOOL____00051);
constraint int_eq_reif(benito, 2, BOOL____00053);
constraint int_eq_reif(benito, 3, BOOL____00055);
constraint int_eq_reif(benito, 4, BOOL____00057);
constraint int_eq_reif(benito, 5, BOOL____00059);
constraint int_eq_reif(benito, 6, BOOL____00061);
constraint int_eq_reif(benito, 7, BOOL____00063);
constraint int_eq_reif(cheri, 2, BOOL____00067);
constraint int_eq_reif(cheri, 3, BOOL____00069);
constraint int_eq_reif(cheri, 4, BOOL____00071);
constraint int_eq_reif(cheri, 5, BOOL____00073);
constraint int_eq_reif(cheri, 6, BOOL____00075);
constraint int_eq_reif(cheri, 7, BOOL____00077);
constraint int_eq_reif(cheri, 8, BOOL____00079);
constraint int_eq_reif(crawford, 1, BOOL____00081);
constraint int_eq_reif(crawford, 2, BOOL____00083);
constraint int_eq_reif(crawford, 3, BOOL____00085);
constraint int_eq_reif(crawford, 4, BOOL____00087);
constraint int_eq_reif(crawford, 5, BOOL____00089);
constraint int_eq_reif(crawford, 6, BOOL____00091);
constraint int_eq_reif(crawford, 7, BOOL____00093);
constraint int_eq_reif(crawford, 8, BOOL____00095);
constraint int_eq_reif(daryl, 1, BOOL____00097);
constraint int_eq_reif(daryl, 2, BOOL____00099);
constraint int_eq_reif(daryl, 3, BOOL____00101);
constraint int_eq_reif(don, 1, BOOL____00108);
constraint int_eq_reif(don, 2, BOOL____00110);
constraint int_eq_reif(don, 3, BOOL____00112);
constraint int_eq_reif(don, 4, BOOL____00114);
constraint int_eq_reif(don, 5, BOOL____00116);
constraint int_eq_reif(don, 6, BOOL____00118);
constraint int_eq_reif(don, 7, BOOL____00120);
constraint int_eq_reif(don, 8, BOOL____00122);
constraint int_eq_reif(houses[1], 1, false);
constraint int_eq_reif(houses[1], 2, false);
constraint int_eq_reif(houses[1], 3, BOOL____00035) :: defines_var(BOOL____00035);
constraint int_eq_reif(houses[1], 4, BOOL____00051) :: defines_var(BOOL____00051);
constraint int_eq_reif(houses[1], 5, false);
constraint int_eq_reif(houses[1], 6, BOOL____00081) :: defines_var(BOOL____00081);
constraint int_eq_reif(houses[1], 7, BOOL____00097) :: defines_var(BOOL____00097);
constraint int_eq_reif(houses[1], 8, BOOL____00108) :: defines_var(BOOL____00108);
constraint int_eq_reif(houses[2], 1, false);
constraint int_eq_reif(houses[2], 2, false);
constraint int_eq_reif(houses[2], 3, BOOL____00037) :: defines_var(BOOL____00037);
constraint int_eq_reif(houses[2], 4, BOOL____00053) :: defines_var(BOOL____00053);
constraint int_eq_reif(houses[2], 5, BOOL____00067) :: defines_var(BOOL____00067);
constraint int_eq_reif(houses[2], 6, BOOL____00083) :: defines_var(BOOL____00083);
constraint int_eq_reif(houses[2], 7, BOOL____00099) :: defines_var(BOOL____00099);
constraint int_eq_reif(houses[2], 8, BOOL____00110) :: defines_var(BOOL____00110);
constraint int_eq_reif(houses[3], 1, BOOL____00012) :: defines_var(BOOL____00012);
constraint int_eq_reif(houses[3], 2, false);
constraint int_eq_reif(houses[3], 3, BOOL____00039) :: defines_var(BOOL____00039);
constraint int_eq_reif(houses[3], 4, BOOL____00055) :: defines_var(BOOL____00055);
constraint int_eq_reif(houses[3], 5, BOOL____00069) :: defines_var(BOOL____00069);
constraint int_eq_reif(houses[3], 6, BOOL____00085) :: defines_var(BOOL____00085);
constraint int_eq_reif(houses[3], 7, BOOL____00101) :: defines_var(BOOL____00101);
constraint int_eq_reif(houses[3], 8, BOOL____00112) :: defines_var(BOOL____00112);
constraint int_eq_reif(houses[4], 1, BOOL____00014) :: defines_var(BOOL____00014);
constraint int_eq_reif(houses[4], 2, false);
constraint int_eq_reif(houses[4], 3, BOOL____00041) :: defines_var(BOOL____00041);
constraint int_eq_reif(houses[4], 4, BOOL____00057) :: defines_var(BOOL____00057);
constraint int_eq_reif(houses[4], 5, BOOL____00071) :: defines_var(BOOL____00071);
constraint int_eq_reif(houses[4], 6, BOOL____00087) :: defines_var(BOOL____00087);
constraint int_eq_reif(houses[4], 7, false);
constraint int_eq_reif(houses[4], 8, BOOL____00114) :: defines_var(BOOL____00114);
constraint int_eq_reif(houses[5], 1, BOOL____00016) :: defines_var(BOOL____00016);
constraint int_eq_reif(houses[5], 2, false);
constraint int_eq_reif(houses[5], 3, BOOL____00043) :: defines_var(BOOL____00043);
constraint int_eq_reif(houses[5], 4, BOOL____00059) :: defines_var(BOOL____00059);
constraint int_eq_reif(houses[5], 5, BOOL____00073) :: defines_var(BOOL____00073);
constraint int_eq_reif(houses[5], 6, BOOL____00089) :: defines_var(BOOL____00089);
constraint int_eq_reif(houses[5], 7, false);
constraint int_eq_reif(houses[5], 8, BOOL____00116) :: defines_var(BOOL____00116);
constraint int_eq_reif(houses[6], 1, BOOL____00018) :: defines_var(BOOL____00018);
constraint int_eq_reif(houses[6], 2, BOOL____00029) :: defines_var(BOOL____00029);
constraint int_eq_reif(houses[6], 3, BOOL____00045) :: defines_var(BOOL____00045);
constraint int_eq_reif(houses[6], 4, BOOL____00061) :: defines_var(BOOL____00061);
constraint int_eq_reif(houses[6], 5, BOOL____00075) :: defines_var(BOOL____00075);
constraint int_eq_reif(houses[6], 6, BOOL____00091) :: defines_var(BOOL____00091);
constraint int_eq_reif(houses[6], 7, false);
constraint int_eq_reif(houses[6], 8, BOOL____00118) :: defines_var(BOOL____00118);
constraint int_eq_reif(houses[7], 1, BOOL____00020) :: defines_var(BOOL____00020);
constraint int_eq_reif(houses[7], 2, BOOL____00031) :: defines_var(BOOL____00031);
constraint int_eq_reif(houses[7], 3, BOOL____00047) :: defines_var(BOOL____00047);
constraint int_eq_reif(houses[7], 4, BOOL____00063) :: defines_var(BOOL____00063);
constraint int_eq_reif(houses[7], 5, BOOL____00077) :: defines_var(BOOL____00077);
constraint int_eq_reif(houses[7], 6, BOOL____00093) :: defines_var(BOOL____00093);
constraint int_eq_reif(houses[7], 7, false);
constraint int_eq_reif(houses[7], 8, BOOL____00120) :: defines_var(BOOL____00120);
constraint int_eq_reif(houses[8], 1, BOOL____00022) :: defines_var(BOOL____00022);
constraint int_eq_reif(houses[8], 2, BOOL____00033) :: defines_var(BOOL____00033);
constraint int_eq_reif(houses[8], 3, BOOL____00049) :: defines_var(BOOL____00049);
constraint int_eq_reif(houses[8], 4, false);
constraint int_eq_reif(houses[8], 5, BOOL____00079) :: defines_var(BOOL____00079);
constraint int_eq_reif(houses[8], 6, BOOL____00095) :: defines_var(BOOL____00095);
constraint int_eq_reif(houses[8], 7, false);
constraint int_eq_reif(houses[8], 8, BOOL____00122) :: defines_var(BOOL____00122);
constraint int_lin_eq([-1, -1, 1], [INT____00001, adrienne, allison], 0) :: defines_var(INT____00001);
constraint int_lt(benito, cheri);
constraint int_plus(INT____00003, benito, belinda) :: defines_var(INT____00003);
constraint int_plus(INT____00005, crawford, cheri) :: defines_var(INT____00005);
constraint int_plus(INT____00007, don, daryl) :: defines_var(INT____00007);
solve satisfy;