109 lines
8.3 KiB
MiniZinc
109 lines
8.3 KiB
MiniZinc
array [1..30] of int: game = [-1, 1, -1, 1, -1, 1, 2, -1, 2, -1, 1, -1, -1, 3, -1, 2, -1, 1, 1, -1, 3, -1, 2, -1, -1, 1, -1, 2, -1, 1];
|
|
var bool: BOOL____00001 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00002 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00006 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00007 :: 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____00019 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00020 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00024 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00025 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00029 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00030 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00031 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00032 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00036 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00037 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00041 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00042 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00049 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00050 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00054 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00055 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00059 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00060 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00061 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00062 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00066 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00067 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00071 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00072 :: is_defined_var :: var_is_introduced;
|
|
array [1..30] of var 0..1: mines :: output_array([1..5, 1..6]);
|
|
constraint int_eq_reif(mines[1], 0, BOOL____00001) :: defines_var(BOOL____00001);
|
|
constraint int_eq_reif(mines[1], 1, BOOL____00002) :: defines_var(BOOL____00002);
|
|
constraint int_eq_reif(mines[2], 0, true);
|
|
constraint int_eq_reif(mines[2], 1, false);
|
|
constraint int_eq_reif(mines[3], 0, BOOL____00006) :: defines_var(BOOL____00006);
|
|
constraint int_eq_reif(mines[3], 1, BOOL____00007) :: defines_var(BOOL____00007);
|
|
constraint int_eq_reif(mines[4], 0, true);
|
|
constraint int_eq_reif(mines[4], 1, false);
|
|
constraint int_eq_reif(mines[5], 0, BOOL____00011) :: defines_var(BOOL____00011);
|
|
constraint int_eq_reif(mines[5], 1, BOOL____00012) :: defines_var(BOOL____00012);
|
|
constraint int_eq_reif(mines[6], 0, true);
|
|
constraint int_eq_reif(mines[6], 1, false);
|
|
constraint int_eq_reif(mines[7], 0, true);
|
|
constraint int_eq_reif(mines[7], 1, false);
|
|
constraint int_eq_reif(mines[8], 0, BOOL____00019) :: defines_var(BOOL____00019);
|
|
constraint int_eq_reif(mines[8], 1, BOOL____00020) :: defines_var(BOOL____00020);
|
|
constraint int_eq_reif(mines[9], 0, true);
|
|
constraint int_eq_reif(mines[9], 1, false);
|
|
constraint int_eq_reif(mines[10], 0, BOOL____00024) :: defines_var(BOOL____00024);
|
|
constraint int_eq_reif(mines[10], 1, BOOL____00025) :: defines_var(BOOL____00025);
|
|
constraint int_eq_reif(mines[11], 0, true);
|
|
constraint int_eq_reif(mines[11], 1, false);
|
|
constraint int_eq_reif(mines[12], 0, BOOL____00029) :: defines_var(BOOL____00029);
|
|
constraint int_eq_reif(mines[12], 1, BOOL____00030) :: defines_var(BOOL____00030);
|
|
constraint int_eq_reif(mines[13], 0, BOOL____00031) :: defines_var(BOOL____00031);
|
|
constraint int_eq_reif(mines[13], 1, BOOL____00032) :: defines_var(BOOL____00032);
|
|
constraint int_eq_reif(mines[14], 0, true);
|
|
constraint int_eq_reif(mines[14], 1, false);
|
|
constraint int_eq_reif(mines[15], 0, BOOL____00036) :: defines_var(BOOL____00036);
|
|
constraint int_eq_reif(mines[15], 1, BOOL____00037) :: defines_var(BOOL____00037);
|
|
constraint int_eq_reif(mines[16], 0, true);
|
|
constraint int_eq_reif(mines[16], 1, false);
|
|
constraint int_eq_reif(mines[17], 0, BOOL____00041) :: defines_var(BOOL____00041);
|
|
constraint int_eq_reif(mines[17], 1, BOOL____00042) :: defines_var(BOOL____00042);
|
|
constraint int_eq_reif(mines[18], 0, true);
|
|
constraint int_eq_reif(mines[18], 1, false);
|
|
constraint int_eq_reif(mines[19], 0, true);
|
|
constraint int_eq_reif(mines[19], 1, false);
|
|
constraint int_eq_reif(mines[20], 0, BOOL____00049) :: defines_var(BOOL____00049);
|
|
constraint int_eq_reif(mines[20], 1, BOOL____00050) :: defines_var(BOOL____00050);
|
|
constraint int_eq_reif(mines[21], 0, true);
|
|
constraint int_eq_reif(mines[21], 1, false);
|
|
constraint int_eq_reif(mines[22], 0, BOOL____00054) :: defines_var(BOOL____00054);
|
|
constraint int_eq_reif(mines[22], 1, BOOL____00055) :: defines_var(BOOL____00055);
|
|
constraint int_eq_reif(mines[23], 0, true);
|
|
constraint int_eq_reif(mines[23], 1, false);
|
|
constraint int_eq_reif(mines[24], 0, BOOL____00059) :: defines_var(BOOL____00059);
|
|
constraint int_eq_reif(mines[24], 1, BOOL____00060) :: defines_var(BOOL____00060);
|
|
constraint int_eq_reif(mines[25], 0, BOOL____00061) :: defines_var(BOOL____00061);
|
|
constraint int_eq_reif(mines[25], 1, BOOL____00062) :: defines_var(BOOL____00062);
|
|
constraint int_eq_reif(mines[26], 0, true);
|
|
constraint int_eq_reif(mines[26], 1, false);
|
|
constraint int_eq_reif(mines[27], 0, BOOL____00066) :: defines_var(BOOL____00066);
|
|
constraint int_eq_reif(mines[27], 1, BOOL____00067) :: defines_var(BOOL____00067);
|
|
constraint int_eq_reif(mines[28], 0, true);
|
|
constraint int_eq_reif(mines[28], 1, false);
|
|
constraint int_eq_reif(mines[29], 0, BOOL____00071) :: defines_var(BOOL____00071);
|
|
constraint int_eq_reif(mines[29], 1, BOOL____00072) :: defines_var(BOOL____00072);
|
|
constraint int_eq_reif(mines[30], 0, true);
|
|
constraint int_eq_reif(mines[30], 1, false);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[5], mines[6], mines[11], mines[12]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[23], mines[24], mines[29], mines[30]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[3], mines[7], mines[8], mines[9]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[7], mines[8], mines[13], mines[14]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[3], mines[4], mines[5], mines[9], mines[10], mines[11]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[11], mines[12], mines[17], mines[18], mines[23], mines[24]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[13], mines[14], mines[19], mines[20], mines[25], mines[26]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[19], mines[20], mines[21], mines[25], mines[26], mines[27]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[21], mines[22], mines[23], mines[27], mines[28], mines[29]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[2], mines[3], mines[4], mines[8], mines[9], mines[10], mines[14], mines[15], mines[16]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[4], mines[5], mines[6], mines[10], mines[11], mines[12], mines[16], mines[17], mines[18]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[7], mines[8], mines[9], mines[13], mines[14], mines[15], mines[19], mines[20], mines[21]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[9], mines[10], mines[11], mines[15], mines[16], mines[17], mines[21], mines[22], mines[23]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[14], mines[15], mines[16], mines[20], mines[21], mines[22], mines[26], mines[27], mines[28]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[16], mines[17], mines[18], mines[22], mines[23], mines[24], mines[28], mines[29], mines[30]], -2, true);
|
|
solve :: int_search([mines[1], mines[2], mines[3], mines[4], mines[5], mines[6], mines[7], mines[8], mines[9], mines[10], mines[11], mines[12], mines[13], mines[14], mines[15], mines[16], mines[17], mines[18], mines[19], mines[20], mines[21], mines[22], mines[23], mines[24], mines[25], mines[26], mines[27], mines[28], mines[29], mines[30]], first_fail, indomain, complete) satisfy;
|