201 lines
15 KiB
MiniZinc
201 lines
15 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 global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);
|
|
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);
|
|
var 1..21: INT____00001 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00002 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00003 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00005 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00006 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00007 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00009 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00010 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00011 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00013 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00014 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00015 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00017 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00018 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00019 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00021 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00022 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00023 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00025 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00026 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00027 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00029 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00030 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00031 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00033 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00034 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00035 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00037 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00038 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00039 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00041 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00042 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00043 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00045 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00046 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00047 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00049 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00050 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00051 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00053 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00054 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00055 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00057 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00058 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00059 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00061 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00062 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00063 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00065 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00066 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00067 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00069 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00070 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00071 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00073 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00074 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00075 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00077 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00078 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00079 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00081 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00082 :: is_defined_var :: var_is_introduced;
|
|
var 1..21: INT____00083 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00085 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00086 :: is_defined_var :: var_is_introduced;
|
|
var 2..22: INT____00087 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00089 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00090 :: is_defined_var :: var_is_introduced;
|
|
var 3..23: INT____00091 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00093 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00094 :: is_defined_var :: var_is_introduced;
|
|
var 4..24: INT____00095 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00097 :: is_defined_var :: var_is_introduced;
|
|
var 1..5: INT____00098 :: is_defined_var :: var_is_introduced;
|
|
var 5..25: INT____00099 :: is_defined_var :: var_is_introduced;
|
|
array [1..25] of var 1..5: q :: output_array([1..5, 1..5]);
|
|
constraint fzn_all_different_int([q[1], q[2], q[3], q[4], q[5]]);
|
|
constraint fzn_all_different_int([q[1], q[6], q[11], q[16], q[21]]);
|
|
constraint fzn_all_different_int([q[2], q[7], q[12], q[17], q[22]]);
|
|
constraint fzn_all_different_int([q[3], q[8], q[13], q[18], q[23]]);
|
|
constraint fzn_all_different_int([q[4], q[9], q[14], q[19], q[24]]);
|
|
constraint fzn_all_different_int([q[5], q[10], q[15], q[20], q[25]]);
|
|
constraint fzn_all_different_int([q[6], q[7], q[8], q[9], q[10]]);
|
|
constraint fzn_all_different_int([q[11], q[12], q[13], q[14], q[15]]);
|
|
constraint fzn_all_different_int([q[16], q[17], q[18], q[19], q[20]]);
|
|
constraint fzn_all_different_int([q[21], q[22], q[23], q[24], q[25]]);
|
|
constraint array_var_int_element(INT____00001, q, INT____00002) :: defines_var(INT____00002);
|
|
constraint array_var_int_element(INT____00003, q, 1);
|
|
constraint array_var_int_element(INT____00005, q, INT____00006) :: defines_var(INT____00006);
|
|
constraint array_var_int_element(INT____00007, q, 1);
|
|
constraint array_var_int_element(INT____00009, q, INT____00010) :: defines_var(INT____00010);
|
|
constraint array_var_int_element(INT____00011, q, 1);
|
|
constraint array_var_int_element(INT____00013, q, INT____00014) :: defines_var(INT____00014);
|
|
constraint array_var_int_element(INT____00015, q, 1);
|
|
constraint array_var_int_element(INT____00017, q, INT____00018) :: defines_var(INT____00018);
|
|
constraint array_var_int_element(INT____00019, q, 1);
|
|
constraint array_var_int_element(INT____00021, q, INT____00022) :: defines_var(INT____00022);
|
|
constraint array_var_int_element(INT____00023, q, 2);
|
|
constraint array_var_int_element(INT____00025, q, INT____00026) :: defines_var(INT____00026);
|
|
constraint array_var_int_element(INT____00027, q, 2);
|
|
constraint array_var_int_element(INT____00029, q, INT____00030) :: defines_var(INT____00030);
|
|
constraint array_var_int_element(INT____00031, q, 2);
|
|
constraint array_var_int_element(INT____00033, q, INT____00034) :: defines_var(INT____00034);
|
|
constraint array_var_int_element(INT____00035, q, 2);
|
|
constraint array_var_int_element(INT____00037, q, INT____00038) :: defines_var(INT____00038);
|
|
constraint array_var_int_element(INT____00039, q, 2);
|
|
constraint array_var_int_element(INT____00041, q, INT____00042) :: defines_var(INT____00042);
|
|
constraint array_var_int_element(INT____00043, q, 3);
|
|
constraint array_var_int_element(INT____00045, q, INT____00046) :: defines_var(INT____00046);
|
|
constraint array_var_int_element(INT____00047, q, 3);
|
|
constraint array_var_int_element(INT____00049, q, INT____00050) :: defines_var(INT____00050);
|
|
constraint array_var_int_element(INT____00051, q, 3);
|
|
constraint array_var_int_element(INT____00053, q, INT____00054) :: defines_var(INT____00054);
|
|
constraint array_var_int_element(INT____00055, q, 3);
|
|
constraint array_var_int_element(INT____00057, q, INT____00058) :: defines_var(INT____00058);
|
|
constraint array_var_int_element(INT____00059, q, 3);
|
|
constraint array_var_int_element(INT____00061, q, INT____00062) :: defines_var(INT____00062);
|
|
constraint array_var_int_element(INT____00063, q, 4);
|
|
constraint array_var_int_element(INT____00065, q, INT____00066) :: defines_var(INT____00066);
|
|
constraint array_var_int_element(INT____00067, q, 4);
|
|
constraint array_var_int_element(INT____00069, q, INT____00070) :: defines_var(INT____00070);
|
|
constraint array_var_int_element(INT____00071, q, 4);
|
|
constraint array_var_int_element(INT____00073, q, INT____00074) :: defines_var(INT____00074);
|
|
constraint array_var_int_element(INT____00075, q, 4);
|
|
constraint array_var_int_element(INT____00077, q, INT____00078) :: defines_var(INT____00078);
|
|
constraint array_var_int_element(INT____00079, q, 4);
|
|
constraint array_var_int_element(INT____00081, q, INT____00082) :: defines_var(INT____00082);
|
|
constraint array_var_int_element(INT____00083, q, 5);
|
|
constraint array_var_int_element(INT____00085, q, INT____00086) :: defines_var(INT____00086);
|
|
constraint array_var_int_element(INT____00087, q, 5);
|
|
constraint array_var_int_element(INT____00089, q, INT____00090) :: defines_var(INT____00090);
|
|
constraint array_var_int_element(INT____00091, q, 5);
|
|
constraint array_var_int_element(INT____00093, q, INT____00094) :: defines_var(INT____00094);
|
|
constraint array_var_int_element(INT____00095, q, 5);
|
|
constraint array_var_int_element(INT____00097, q, INT____00098) :: defines_var(INT____00098);
|
|
constraint array_var_int_element(INT____00099, q, 5);
|
|
constraint int_eq(q[1], 1);
|
|
constraint int_eq(q[7], 2);
|
|
constraint int_eq(q[13], 3);
|
|
constraint int_eq(q[19], 4);
|
|
constraint int_eq(q[25], 5);
|
|
constraint int_lin_eq([-1, 5], [INT____00001, q[1]], 4) :: defines_var(INT____00001) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00003, INT____00002], 4) :: defines_var(INT____00003) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00005, q[6]], 3) :: defines_var(INT____00005) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00007, INT____00006], 3) :: defines_var(INT____00007) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00009, q[11]], 2) :: defines_var(INT____00009) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00011, INT____00010], 2) :: defines_var(INT____00011) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00013, q[16]], 1) :: defines_var(INT____00013) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00015, INT____00014], 1) :: defines_var(INT____00015) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00017, q[21]], 0) :: defines_var(INT____00017) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00019, INT____00018], 0) :: defines_var(INT____00019) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00021, q[2]], 4) :: defines_var(INT____00021) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00023, INT____00022], 4) :: defines_var(INT____00023) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00025, q[7]], 3) :: defines_var(INT____00025) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00027, INT____00026], 3) :: defines_var(INT____00027) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00029, q[12]], 2) :: defines_var(INT____00029) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00031, INT____00030], 2) :: defines_var(INT____00031) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00033, q[17]], 1) :: defines_var(INT____00033) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00035, INT____00034], 1) :: defines_var(INT____00035) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00037, q[22]], 0) :: defines_var(INT____00037) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00039, INT____00038], 0) :: defines_var(INT____00039) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00041, q[3]], 4) :: defines_var(INT____00041) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00043, INT____00042], 4) :: defines_var(INT____00043) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00045, q[8]], 3) :: defines_var(INT____00045) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00047, INT____00046], 3) :: defines_var(INT____00047) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00049, q[13]], 2) :: defines_var(INT____00049) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00051, INT____00050], 2) :: defines_var(INT____00051) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00053, q[18]], 1) :: defines_var(INT____00053) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00055, INT____00054], 1) :: defines_var(INT____00055) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00057, q[23]], 0) :: defines_var(INT____00057) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00059, INT____00058], 0) :: defines_var(INT____00059) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00061, q[4]], 4) :: defines_var(INT____00061) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00063, INT____00062], 4) :: defines_var(INT____00063) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00065, q[9]], 3) :: defines_var(INT____00065) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00067, INT____00066], 3) :: defines_var(INT____00067) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00069, q[14]], 2) :: defines_var(INT____00069) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00071, INT____00070], 2) :: defines_var(INT____00071) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00073, q[19]], 1) :: defines_var(INT____00073) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00075, INT____00074], 1) :: defines_var(INT____00075) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00077, q[24]], 0) :: defines_var(INT____00077) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00079, INT____00078], 0) :: defines_var(INT____00079) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00081, q[5]], 4) :: defines_var(INT____00081) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00083, INT____00082], 4) :: defines_var(INT____00083) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00085, q[10]], 3) :: defines_var(INT____00085) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00087, INT____00086], 3) :: defines_var(INT____00087) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00089, q[15]], 2) :: defines_var(INT____00089) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00091, INT____00090], 2) :: defines_var(INT____00091) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00093, q[20]], 1) :: defines_var(INT____00093) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00095, INT____00094], 1) :: defines_var(INT____00095) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00097, q[25]], 0) :: defines_var(INT____00097) :: domain;
|
|
constraint int_lin_eq([-1, 5], [INT____00099, INT____00098], 0) :: defines_var(INT____00099) :: domain;
|
|
constraint int_lt(q[1], 3);
|
|
constraint int_lt(q[6], 4);
|
|
constraint int_lt(q[11], 5);
|
|
solve :: int_search(q, input_order, indomain, complete) satisfy;
|