229 lines
18 KiB
MiniZinc
229 lines
18 KiB
MiniZinc
array [1..64] of int: game = [2, 3, -1, 2, 2, -1, 2, 1, -1, -1, 4, -1, -1, 4, -1, 2, -1, -1, -1, -1, -1, -1, 4, -1, -1, 5, -1, 6, -1, -1, -1, 2, 2, -1, -1, -1, 5, 5, -1, 2, 1, 3, 4, -1, -1, -1, 4, -1, 0, 1, -1, 4, -1, -1, -1, 3, 0, 1, 2, -1, 2, 3, -1, 2];
|
|
var bool: BOOL____00007 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00008 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00015 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00016 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00023 :: 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____00026 :: 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____00033 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00037 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00038 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00042 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00043 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00044 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00045 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00046 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00047 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00048 :: 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____00051 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00052 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00053 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00057 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00058 :: 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____00064 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00065 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00069 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00070 :: 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;
|
|
var bool: BOOL____00073 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00074 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00081 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00082 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00083 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00084 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00085 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00086 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00093 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00094 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00107 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00108 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00109 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00110 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00111 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00112 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00116 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00117 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00124 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00125 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00129 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00130 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00131 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00132 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00133 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00134 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00147 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00148 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00155 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00156 :: is_defined_var :: var_is_introduced;
|
|
array [1..64] of var 0..1: mines :: output_array([1..8, 1..8]);
|
|
constraint int_eq_reif(mines[1], 0, true);
|
|
constraint int_eq_reif(mines[1], 1, false);
|
|
constraint int_eq_reif(mines[2], 0, true);
|
|
constraint int_eq_reif(mines[2], 1, false);
|
|
constraint int_eq_reif(mines[3], 0, BOOL____00007) :: defines_var(BOOL____00007);
|
|
constraint int_eq_reif(mines[3], 1, BOOL____00008) :: defines_var(BOOL____00008);
|
|
constraint int_eq_reif(mines[4], 0, true);
|
|
constraint int_eq_reif(mines[4], 1, false);
|
|
constraint int_eq_reif(mines[5], 0, true);
|
|
constraint int_eq_reif(mines[5], 1, false);
|
|
constraint int_eq_reif(mines[6], 0, BOOL____00015) :: defines_var(BOOL____00015);
|
|
constraint int_eq_reif(mines[6], 1, BOOL____00016) :: defines_var(BOOL____00016);
|
|
constraint int_eq_reif(mines[7], 0, true);
|
|
constraint int_eq_reif(mines[7], 1, false);
|
|
constraint int_eq_reif(mines[8], 0, true);
|
|
constraint int_eq_reif(mines[8], 1, false);
|
|
constraint int_eq_reif(mines[9], 0, BOOL____00023) :: defines_var(BOOL____00023);
|
|
constraint int_eq_reif(mines[9], 1, BOOL____00024) :: defines_var(BOOL____00024);
|
|
constraint int_eq_reif(mines[10], 0, BOOL____00025) :: defines_var(BOOL____00025);
|
|
constraint int_eq_reif(mines[10], 1, BOOL____00026) :: defines_var(BOOL____00026);
|
|
constraint int_eq_reif(mines[11], 0, true);
|
|
constraint int_eq_reif(mines[11], 1, false);
|
|
constraint int_eq_reif(mines[12], 0, BOOL____00030) :: defines_var(BOOL____00030);
|
|
constraint int_eq_reif(mines[12], 1, BOOL____00031) :: defines_var(BOOL____00031);
|
|
constraint int_eq_reif(mines[13], 0, BOOL____00032) :: defines_var(BOOL____00032);
|
|
constraint int_eq_reif(mines[13], 1, BOOL____00033) :: defines_var(BOOL____00033);
|
|
constraint int_eq_reif(mines[14], 0, true);
|
|
constraint int_eq_reif(mines[14], 1, false);
|
|
constraint int_eq_reif(mines[15], 0, BOOL____00037) :: defines_var(BOOL____00037);
|
|
constraint int_eq_reif(mines[15], 1, BOOL____00038) :: defines_var(BOOL____00038);
|
|
constraint int_eq_reif(mines[16], 0, true);
|
|
constraint int_eq_reif(mines[16], 1, false);
|
|
constraint int_eq_reif(mines[17], 0, BOOL____00042) :: defines_var(BOOL____00042);
|
|
constraint int_eq_reif(mines[17], 1, BOOL____00043) :: defines_var(BOOL____00043);
|
|
constraint int_eq_reif(mines[18], 0, BOOL____00044) :: defines_var(BOOL____00044);
|
|
constraint int_eq_reif(mines[18], 1, BOOL____00045) :: defines_var(BOOL____00045);
|
|
constraint int_eq_reif(mines[19], 0, BOOL____00046) :: defines_var(BOOL____00046);
|
|
constraint int_eq_reif(mines[19], 1, BOOL____00047) :: defines_var(BOOL____00047);
|
|
constraint int_eq_reif(mines[20], 0, BOOL____00048) :: defines_var(BOOL____00048);
|
|
constraint int_eq_reif(mines[20], 1, BOOL____00049) :: defines_var(BOOL____00049);
|
|
constraint int_eq_reif(mines[21], 0, BOOL____00050) :: defines_var(BOOL____00050);
|
|
constraint int_eq_reif(mines[21], 1, BOOL____00051) :: defines_var(BOOL____00051);
|
|
constraint int_eq_reif(mines[22], 0, BOOL____00052) :: defines_var(BOOL____00052);
|
|
constraint int_eq_reif(mines[22], 1, BOOL____00053) :: defines_var(BOOL____00053);
|
|
constraint int_eq_reif(mines[23], 0, true);
|
|
constraint int_eq_reif(mines[23], 1, false);
|
|
constraint int_eq_reif(mines[24], 0, BOOL____00057) :: defines_var(BOOL____00057);
|
|
constraint int_eq_reif(mines[24], 1, BOOL____00058) :: defines_var(BOOL____00058);
|
|
constraint int_eq_reif(mines[25], 0, BOOL____00059) :: defines_var(BOOL____00059);
|
|
constraint int_eq_reif(mines[25], 1, BOOL____00060) :: defines_var(BOOL____00060);
|
|
constraint int_eq_reif(mines[26], 0, true);
|
|
constraint int_eq_reif(mines[26], 1, false);
|
|
constraint int_eq_reif(mines[27], 0, BOOL____00064) :: defines_var(BOOL____00064);
|
|
constraint int_eq_reif(mines[27], 1, BOOL____00065) :: defines_var(BOOL____00065);
|
|
constraint int_eq_reif(mines[28], 0, true);
|
|
constraint int_eq_reif(mines[28], 1, false);
|
|
constraint int_eq_reif(mines[29], 0, BOOL____00069) :: defines_var(BOOL____00069);
|
|
constraint int_eq_reif(mines[29], 1, BOOL____00070) :: defines_var(BOOL____00070);
|
|
constraint int_eq_reif(mines[30], 0, BOOL____00071) :: defines_var(BOOL____00071);
|
|
constraint int_eq_reif(mines[30], 1, BOOL____00072) :: defines_var(BOOL____00072);
|
|
constraint int_eq_reif(mines[31], 0, BOOL____00073) :: defines_var(BOOL____00073);
|
|
constraint int_eq_reif(mines[31], 1, BOOL____00074) :: defines_var(BOOL____00074);
|
|
constraint int_eq_reif(mines[32], 0, true);
|
|
constraint int_eq_reif(mines[32], 1, false);
|
|
constraint int_eq_reif(mines[33], 0, true);
|
|
constraint int_eq_reif(mines[33], 1, false);
|
|
constraint int_eq_reif(mines[34], 0, BOOL____00081) :: defines_var(BOOL____00081);
|
|
constraint int_eq_reif(mines[34], 1, BOOL____00082) :: defines_var(BOOL____00082);
|
|
constraint int_eq_reif(mines[35], 0, BOOL____00083) :: defines_var(BOOL____00083);
|
|
constraint int_eq_reif(mines[35], 1, BOOL____00084) :: defines_var(BOOL____00084);
|
|
constraint int_eq_reif(mines[36], 0, BOOL____00085) :: defines_var(BOOL____00085);
|
|
constraint int_eq_reif(mines[36], 1, BOOL____00086) :: defines_var(BOOL____00086);
|
|
constraint int_eq_reif(mines[37], 0, true);
|
|
constraint int_eq_reif(mines[37], 1, false);
|
|
constraint int_eq_reif(mines[38], 0, true);
|
|
constraint int_eq_reif(mines[38], 1, false);
|
|
constraint int_eq_reif(mines[39], 0, BOOL____00093) :: defines_var(BOOL____00093);
|
|
constraint int_eq_reif(mines[39], 1, BOOL____00094) :: defines_var(BOOL____00094);
|
|
constraint int_eq_reif(mines[40], 0, true);
|
|
constraint int_eq_reif(mines[40], 1, false);
|
|
constraint int_eq_reif(mines[41], 0, true);
|
|
constraint int_eq_reif(mines[41], 1, false);
|
|
constraint int_eq_reif(mines[42], 0, true);
|
|
constraint int_eq_reif(mines[42], 1, false);
|
|
constraint int_eq_reif(mines[43], 0, true);
|
|
constraint int_eq_reif(mines[43], 1, false);
|
|
constraint int_eq_reif(mines[44], 0, BOOL____00107) :: defines_var(BOOL____00107);
|
|
constraint int_eq_reif(mines[44], 1, BOOL____00108) :: defines_var(BOOL____00108);
|
|
constraint int_eq_reif(mines[45], 0, BOOL____00109) :: defines_var(BOOL____00109);
|
|
constraint int_eq_reif(mines[45], 1, BOOL____00110) :: defines_var(BOOL____00110);
|
|
constraint int_eq_reif(mines[46], 0, BOOL____00111) :: defines_var(BOOL____00111);
|
|
constraint int_eq_reif(mines[46], 1, BOOL____00112) :: defines_var(BOOL____00112);
|
|
constraint int_eq_reif(mines[47], 0, true);
|
|
constraint int_eq_reif(mines[47], 1, false);
|
|
constraint int_eq_reif(mines[48], 0, BOOL____00116) :: defines_var(BOOL____00116);
|
|
constraint int_eq_reif(mines[48], 1, BOOL____00117) :: defines_var(BOOL____00117);
|
|
constraint int_eq_reif(mines[49], 0, true);
|
|
constraint int_eq_reif(mines[49], 1, false);
|
|
constraint int_eq_reif(mines[50], 0, true);
|
|
constraint int_eq_reif(mines[50], 1, false);
|
|
constraint int_eq_reif(mines[51], 0, BOOL____00124) :: defines_var(BOOL____00124);
|
|
constraint int_eq_reif(mines[51], 1, BOOL____00125) :: defines_var(BOOL____00125);
|
|
constraint int_eq_reif(mines[52], 0, true);
|
|
constraint int_eq_reif(mines[52], 1, false);
|
|
constraint int_eq_reif(mines[53], 0, BOOL____00129) :: defines_var(BOOL____00129);
|
|
constraint int_eq_reif(mines[53], 1, BOOL____00130) :: defines_var(BOOL____00130);
|
|
constraint int_eq_reif(mines[54], 0, BOOL____00131) :: defines_var(BOOL____00131);
|
|
constraint int_eq_reif(mines[54], 1, BOOL____00132) :: defines_var(BOOL____00132);
|
|
constraint int_eq_reif(mines[55], 0, BOOL____00133) :: defines_var(BOOL____00133);
|
|
constraint int_eq_reif(mines[55], 1, BOOL____00134) :: defines_var(BOOL____00134);
|
|
constraint int_eq_reif(mines[56], 0, true);
|
|
constraint int_eq_reif(mines[56], 1, false);
|
|
constraint int_eq_reif(mines[57], 0, true);
|
|
constraint int_eq_reif(mines[57], 1, false);
|
|
constraint int_eq_reif(mines[58], 0, true);
|
|
constraint int_eq_reif(mines[58], 1, false);
|
|
constraint int_eq_reif(mines[59], 0, true);
|
|
constraint int_eq_reif(mines[59], 1, false);
|
|
constraint int_eq_reif(mines[60], 0, BOOL____00147) :: defines_var(BOOL____00147);
|
|
constraint int_eq_reif(mines[60], 1, BOOL____00148) :: defines_var(BOOL____00148);
|
|
constraint int_eq_reif(mines[61], 0, true);
|
|
constraint int_eq_reif(mines[61], 1, false);
|
|
constraint int_eq_reif(mines[62], 0, true);
|
|
constraint int_eq_reif(mines[62], 1, false);
|
|
constraint int_eq_reif(mines[63], 0, BOOL____00155) :: defines_var(BOOL____00155);
|
|
constraint int_eq_reif(mines[63], 1, BOOL____00156) :: defines_var(BOOL____00156);
|
|
constraint int_eq_reif(mines[64], 0, true);
|
|
constraint int_eq_reif(mines[64], 1, false);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[1], mines[2], mines[9], mines[10]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[7], mines[8], mines[15], mines[16]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[49], mines[50], mines[57], mines[58]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[55], mines[56], mines[63], mines[64]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[3], mines[9], mines[10], mines[11]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[3], mines[4], mines[5], mines[11], mines[12], mines[13]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[4], mines[5], mines[6], mines[12], mines[13], mines[14]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[6], mines[7], mines[8], mines[14], mines[15], mines[16]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[7], mines[8], mines[15], mines[16], mines[23], mines[24]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[23], mines[24], mines[31], mines[32], mines[39], mines[40]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[25], mines[26], mines[33], mines[34], mines[41], mines[42]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[31], mines[32], mines[39], mines[40], mines[47], mines[48]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[33], mines[34], mines[41], mines[42], mines[49], mines[50]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[41], mines[42], mines[49], mines[50], mines[57], mines[58]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[47], mines[48], mines[55], mines[56], mines[63], mines[64]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[49], mines[50], mines[51], mines[57], mines[58], mines[59]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[50], mines[51], mines[52], mines[58], mines[59], mines[60]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[52], mines[53], mines[54], mines[60], mines[61], mines[62]], -2, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[53], mines[54], mines[55], mines[61], mines[62], mines[63]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[2], mines[3], mines[4], mines[10], mines[11], mines[12], mines[18], mines[19], mines[20]], -4, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[5], mines[6], mines[7], mines[13], mines[14], mines[15], mines[21], mines[22], mines[23]], -4, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[14], mines[15], mines[16], mines[22], mines[23], mines[24], mines[30], mines[31], mines[32]], -4, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[17], mines[18], mines[19], mines[25], mines[26], mines[27], mines[33], mines[34], mines[35]], -5, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[19], mines[20], mines[21], mines[27], mines[28], mines[29], mines[35], mines[36], mines[37]], -6, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[28], mines[29], mines[30], mines[36], mines[37], mines[38], mines[44], mines[45], mines[46]], -5, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[29], mines[30], mines[31], mines[37], mines[38], mines[39], mines[45], mines[46], mines[47]], -5, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[33], mines[34], mines[35], mines[41], mines[42], mines[43], mines[49], mines[50], mines[51]], -3, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[34], mines[35], mines[36], mines[42], mines[43], mines[44], mines[50], mines[51], mines[52]], -4, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[38], mines[39], mines[40], mines[46], mines[47], mines[48], mines[54], mines[55], mines[56]], -4, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[41], mines[42], mines[43], mines[49], mines[50], mines[51], mines[57], mines[58], mines[59]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[43], mines[44], mines[45], mines[51], mines[52], mines[53], mines[59], mines[60], mines[61]], -4, 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], mines[31], mines[32], mines[33], mines[34], mines[35], mines[36], mines[37], mines[38], mines[39], mines[40], mines[41], mines[42], mines[43], mines[44], mines[45], mines[46], mines[47], mines[48], mines[49], mines[50], mines[51], mines[52], mines[53], mines[54], mines[55], mines[56], mines[57], mines[58], mines[59], mines[60], mines[61], mines[62], mines[63], mines[64]], first_fail, indomain, complete) satisfy;
|