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

176 lines
10 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 1..39601: INT____00001 :: is_defined_var :: var_is_introduced;
var 4..39601: INT____00002 :: is_defined_var :: var_is_introduced;
var 9..39601: INT____00003 :: is_defined_var :: var_is_introduced;
var 16..39601: INT____00004 :: is_defined_var :: var_is_introduced;
var 25..39601: INT____00005 :: is_defined_var :: var_is_introduced;
var 36..39601: INT____00006 :: is_defined_var :: var_is_introduced;
var 49..39601: INT____00007 :: is_defined_var :: var_is_introduced;
var 64..39601: INT____00008 :: is_defined_var :: var_is_introduced;
var 81..39601: INT____00009 :: is_defined_var :: var_is_introduced;
var 100..39601: INT____00010 :: is_defined_var :: var_is_introduced;
var 121..39601: INT____00011 :: is_defined_var :: var_is_introduced;
var 144..39601: INT____00012 :: is_defined_var :: var_is_introduced;
var 169..39601: INT____00013 :: is_defined_var :: var_is_introduced;
var 196..39601: INT____00014 :: is_defined_var :: var_is_introduced;
var 225..39601: INT____00015 :: is_defined_var :: var_is_introduced;
var 256..39601: INT____00016 :: is_defined_var :: var_is_introduced;
var 289..39601: INT____00017 :: is_defined_var :: var_is_introduced;
var 324..39601: INT____00018 :: is_defined_var :: var_is_introduced;
var 361..39601: INT____00019 :: is_defined_var :: var_is_introduced;
var 400..39601: INT____00020 :: is_defined_var :: var_is_introduced;
var 441..39601: INT____00021 :: is_defined_var :: var_is_introduced;
var 484..39601: INT____00022 :: is_defined_var :: var_is_introduced;
var 529..39601: INT____00023 :: is_defined_var :: var_is_introduced;
var 576..39601: INT____00024 :: is_defined_var :: var_is_introduced;
var 4900..40000: INT____00026 :: is_defined_var :: var_is_introduced;
var 16..39601: INT____00046 :: is_defined_var :: var_is_introduced;
var 25..39601: INT____00047 :: is_defined_var :: var_is_introduced;
var 81..39601: INT____00048 :: is_defined_var :: var_is_introduced;
var 196..39601: INT____00049 :: is_defined_var :: var_is_introduced;
var 256..39601: INT____00050 :: is_defined_var :: var_is_introduced;
var 400..39601: INT____00051 :: is_defined_var :: var_is_introduced;
var 196..39601: INT____00052 :: is_defined_var :: var_is_introduced;
var 256..39601: INT____00053 :: is_defined_var :: var_is_introduced;
var 324..39601: INT____00054 :: is_defined_var :: var_is_introduced;
var 900..39601: INT____00055 :: is_defined_var :: var_is_introduced;
var 1521..39601: INT____00056 :: is_defined_var :: var_is_introduced;
var 576..39601: INT____00057 :: is_defined_var :: var_is_introduced;
var 900..39601: INT____00058 :: is_defined_var :: var_is_introduced;
var 3025..39601: INT____00059 :: is_defined_var :: var_is_introduced;
var 1600..39601: INT____00060 :: is_defined_var :: var_is_introduced;
var 900..39601: INT____00061 :: is_defined_var :: var_is_introduced;
var 1849..39601: INT____00062 :: is_defined_var :: var_is_introduced;
var 13484..950424: INT____00063 :: is_defined_var :: var_is_introduced;
var 18769..40000: INT____00064 :: is_defined_var :: var_is_introduced;
var 1..199: L1;
var 10..199: L10;
var 20..199: L11;
var 12..199: L12;
var 13..199: L13;
var 14..199: L14;
var 16..199: L15;
var 18..199: L16;
var 30..199: L17;
var 39..199: L18;
var 24..199: L19;
var 2..199: L2;
var 30..199: L20;
var 55..199: L21;
var 40..199: L22;
var 30..199: L23;
var 43..199: L24;
var 137..200: L25;
var 3..199: L3;
var 4..199: L4;
var 5..199: L5;
var 6..199: L6;
var 9..199: L7;
var 14..199: L8;
var 16..199: L9;
array [1..25] of var 1..200: LD :: output_array([1..25]) = [L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25];
var 13484..950424: LHS :: output_var = INT____00063;
var 18769..40000: RHS :: output_var = INT____00064;
constraint fzn_all_different_int(LD);
constraint int_lin_eq([-1, 1, 1, 1], [L11, L5, L8, L1], 0);
constraint int_lin_eq([-1, 1, 1, 1], [L18, L7, L8, L9], 0);
constraint int_lin_eq([-1, 1, 1, 1], [L25, L18, L21, L24], 0);
constraint int_lin_eq([-1, 1, 1, 1], [L25, L21, L22, L23], 0);
constraint int_lin_eq([-1, 1, 1, 1], [L9, L4, L7, L3], 0);
constraint int_lin_eq([1, 1, 1, -1], [L19, L20, L24, L25], 0);
constraint int_lin_eq([1, 1, 1, 1, -1], [L15, L16, L19, L23, L25], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00026, INT____00001, INT____00002, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007, INT____00008, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, INT____00015, INT____00016, INT____00017, INT____00018, INT____00019, INT____00020, INT____00021, INT____00022, INT____00023, INT____00024], 0) :: defines_var(INT____00026);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00063, INT____00001, INT____00002, INT____00003, INT____00006, INT____00010, INT____00012, INT____00013, INT____00046, INT____00047, INT____00048, INT____00049, INT____00050, INT____00051, INT____00052, INT____00053, INT____00054, INT____00055, INT____00056, INT____00057, INT____00058, INT____00059, INT____00060, INT____00061, INT____00062], 0) :: defines_var(INT____00063);
constraint int_lt(L1, L2);
constraint int_lt(L10, L11);
constraint int_lt(L11, L12);
constraint int_lt(L12, L13);
constraint int_lt(L13, L14);
constraint int_lt(L14, L15);
constraint int_lt(L15, L16);
constraint int_lt(L16, L17);
constraint int_lt(L17, L18);
constraint int_lt(L18, L19);
constraint int_lt(L19, L20);
constraint int_lt(L2, L3);
constraint int_lt(L20, L21);
constraint int_lt(L21, L22);
constraint int_lt(L22, L23);
constraint int_lt(L23, L24);
constraint int_lt(L24, L25);
constraint int_lt(L3, L4);
constraint int_lt(L4, L5);
constraint int_lt(L5, L6);
constraint int_lt(L6, L7);
constraint int_lt(L7, L8);
constraint int_lt(L8, L9);
constraint int_lt(L9, L10);
constraint int_plus(L1, L3, L4);
constraint int_plus(L11, L10, L17);
constraint int_plus(L12, L2, L14);
constraint int_plus(L14, L15, L23);
constraint int_plus(L14, L2, L15);
constraint int_plus(L15, L2, L16);
constraint int_plus(L16, L6, L19);
constraint int_plus(L17, L10, L22);
constraint int_plus(L19, L6, L20);
constraint int_plus(L20, L13, L24);
constraint int_plus(L4, L1, L5);
constraint int_plus(L4, L5, L7);
constraint int_plus(L5, L7, L8);
constraint int_plus(L9, L18, L21);
constraint int_times(L1, L1, INT____00001) :: defines_var(INT____00001);
constraint int_times(L10, L10, INT____00010) :: defines_var(INT____00010);
constraint int_times(L11, L11, INT____00011) :: defines_var(INT____00011);
constraint int_times(L11, L11, INT____00051) :: defines_var(INT____00051);
constraint int_times(L12, L12, INT____00012) :: defines_var(INT____00012);
constraint int_times(L13, L13, INT____00013) :: defines_var(INT____00013);
constraint int_times(L14, L14, INT____00014) :: defines_var(INT____00014);
constraint int_times(L14, L14, INT____00052) :: defines_var(INT____00052);
constraint int_times(L15, L15, INT____00015) :: defines_var(INT____00015);
constraint int_times(L15, L15, INT____00053) :: defines_var(INT____00053);
constraint int_times(L16, L16, INT____00016) :: defines_var(INT____00016);
constraint int_times(L16, L16, INT____00054) :: defines_var(INT____00054);
constraint int_times(L17, L17, INT____00017) :: defines_var(INT____00017);
constraint int_times(L17, L17, INT____00055) :: defines_var(INT____00055);
constraint int_times(L18, L18, INT____00018) :: defines_var(INT____00018);
constraint int_times(L18, L18, INT____00056) :: defines_var(INT____00056);
constraint int_times(L19, L19, INT____00019) :: defines_var(INT____00019);
constraint int_times(L19, L19, INT____00057) :: defines_var(INT____00057);
constraint int_times(L2, L2, INT____00002) :: defines_var(INT____00002);
constraint int_times(L20, L20, INT____00020) :: defines_var(INT____00020);
constraint int_times(L20, L20, INT____00058) :: defines_var(INT____00058);
constraint int_times(L21, L21, INT____00021) :: defines_var(INT____00021);
constraint int_times(L21, L21, INT____00059) :: defines_var(INT____00059);
constraint int_times(L22, L22, INT____00022) :: defines_var(INT____00022);
constraint int_times(L22, L22, INT____00060) :: defines_var(INT____00060);
constraint int_times(L23, L23, INT____00023) :: defines_var(INT____00023);
constraint int_times(L23, L23, INT____00061) :: defines_var(INT____00061);
constraint int_times(L24, L24, INT____00024) :: defines_var(INT____00024);
constraint int_times(L24, L24, INT____00062) :: defines_var(INT____00062);
constraint int_times(L25, L25, INT____00026);
constraint int_times(L25, L25, INT____00064) :: defines_var(INT____00064);
constraint int_times(L3, L3, INT____00003) :: defines_var(INT____00003);
constraint int_times(L4, L4, INT____00004) :: defines_var(INT____00004);
constraint int_times(L4, L4, INT____00046) :: defines_var(INT____00046);
constraint int_times(L5, L5, INT____00005) :: defines_var(INT____00005);
constraint int_times(L5, L5, INT____00047) :: defines_var(INT____00047);
constraint int_times(L6, L6, INT____00006) :: defines_var(INT____00006);
constraint int_times(L7, L7, INT____00007) :: defines_var(INT____00007);
constraint int_times(L7, L7, INT____00048) :: defines_var(INT____00048);
constraint int_times(L8, L8, INT____00008) :: defines_var(INT____00008);
constraint int_times(L8, L8, INT____00049) :: defines_var(INT____00049);
constraint int_times(L9, L9, INT____00009) :: defines_var(INT____00009);
constraint int_times(L9, L9, INT____00050) :: defines_var(INT____00050);
solve :: int_search([L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, L21, L22, L23, L24, L25, INT____00063, INT____00064], first_fail, indomain, complete) satisfy;