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

238 lines
18 KiB
MiniZinc
Raw Permalink Normal View History

2012-09-03 18:26:36 +00:00
array [1..64] of int: game = [2, -1, -1, -1, 3, -1, 1, -1, -1, 5, -1, 4, -1, -1, -1, 1, -1, -1, 5, -1, -1, 4, -1, -1, 2, -1, -1, -1, 4, -1, 5, -1, -1, 2, -1, 4, -1, -1, -1, 2, -1, -1, 5, -1, -1, 4, -1, -1, 2, -1, -1, -1, 5, -1, 4, -1, -1, 3, -1, 3, -1, -1, -1, 2];
var bool: BOOL____00004 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00005 :: 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____00008 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00009 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00013 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00014 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00018 :: 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____00021 :: 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____00034 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00035 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00039 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00040 :: 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____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____00053 :: 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____00056 :: 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____00063 :: 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____00074 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00075 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00076 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00077 :: 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____00086 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00087 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00088 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00089 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00090 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00091 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00095 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00096 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00097 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00098 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00102 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00103 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00104 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00105 :: 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____00118 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00119 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00120 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00121 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00125 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00126 :: 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____00137 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00138 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00142 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00143 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00144 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00145 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00146 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00147 :: 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, BOOL____00004) :: defines_var(BOOL____00004);
constraint int_eq_reif(mines[2], 1, BOOL____00005) :: defines_var(BOOL____00005);
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, BOOL____00008) :: defines_var(BOOL____00008);
constraint int_eq_reif(mines[4], 1, BOOL____00009) :: defines_var(BOOL____00009);
constraint int_eq_reif(mines[5], 0, true);
constraint int_eq_reif(mines[5], 1, false);
constraint int_eq_reif(mines[6], 0, BOOL____00013) :: defines_var(BOOL____00013);
constraint int_eq_reif(mines[6], 1, BOOL____00014) :: defines_var(BOOL____00014);
constraint int_eq_reif(mines[7], 0, true);
constraint int_eq_reif(mines[7], 1, false);
constraint int_eq_reif(mines[8], 0, BOOL____00018) :: defines_var(BOOL____00018);
constraint int_eq_reif(mines[8], 1, BOOL____00019) :: defines_var(BOOL____00019);
constraint int_eq_reif(mines[9], 0, BOOL____00020) :: defines_var(BOOL____00020);
constraint int_eq_reif(mines[9], 1, BOOL____00021) :: defines_var(BOOL____00021);
constraint int_eq_reif(mines[10], 0, true);
constraint int_eq_reif(mines[10], 1, false);
constraint int_eq_reif(mines[11], 0, BOOL____00025) :: defines_var(BOOL____00025);
constraint int_eq_reif(mines[11], 1, BOOL____00026) :: defines_var(BOOL____00026);
constraint int_eq_reif(mines[12], 0, true);
constraint int_eq_reif(mines[12], 1, false);
constraint int_eq_reif(mines[13], 0, BOOL____00030) :: defines_var(BOOL____00030);
constraint int_eq_reif(mines[13], 1, BOOL____00031) :: defines_var(BOOL____00031);
constraint int_eq_reif(mines[14], 0, BOOL____00032) :: defines_var(BOOL____00032);
constraint int_eq_reif(mines[14], 1, BOOL____00033) :: defines_var(BOOL____00033);
constraint int_eq_reif(mines[15], 0, BOOL____00034) :: defines_var(BOOL____00034);
constraint int_eq_reif(mines[15], 1, BOOL____00035) :: defines_var(BOOL____00035);
constraint int_eq_reif(mines[16], 0, true);
constraint int_eq_reif(mines[16], 1, false);
constraint int_eq_reif(mines[17], 0, BOOL____00039) :: defines_var(BOOL____00039);
constraint int_eq_reif(mines[17], 1, BOOL____00040) :: defines_var(BOOL____00040);
constraint int_eq_reif(mines[18], 0, BOOL____00041) :: defines_var(BOOL____00041);
constraint int_eq_reif(mines[18], 1, BOOL____00042) :: defines_var(BOOL____00042);
constraint int_eq_reif(mines[19], 0, true);
constraint int_eq_reif(mines[19], 1, false);
constraint int_eq_reif(mines[20], 0, BOOL____00046) :: defines_var(BOOL____00046);
constraint int_eq_reif(mines[20], 1, BOOL____00047) :: defines_var(BOOL____00047);
constraint int_eq_reif(mines[21], 0, BOOL____00048) :: defines_var(BOOL____00048);
constraint int_eq_reif(mines[21], 1, BOOL____00049) :: defines_var(BOOL____00049);
constraint int_eq_reif(mines[22], 0, true);
constraint int_eq_reif(mines[22], 1, false);
constraint int_eq_reif(mines[23], 0, BOOL____00053) :: defines_var(BOOL____00053);
constraint int_eq_reif(mines[23], 1, BOOL____00054) :: defines_var(BOOL____00054);
constraint int_eq_reif(mines[24], 0, BOOL____00055) :: defines_var(BOOL____00055);
constraint int_eq_reif(mines[24], 1, BOOL____00056) :: defines_var(BOOL____00056);
constraint int_eq_reif(mines[25], 0, true);
constraint int_eq_reif(mines[25], 1, false);
constraint int_eq_reif(mines[26], 0, BOOL____00060) :: defines_var(BOOL____00060);
constraint int_eq_reif(mines[26], 1, BOOL____00061) :: defines_var(BOOL____00061);
constraint int_eq_reif(mines[27], 0, BOOL____00062) :: defines_var(BOOL____00062);
constraint int_eq_reif(mines[27], 1, BOOL____00063) :: defines_var(BOOL____00063);
constraint int_eq_reif(mines[28], 0, BOOL____00064) :: defines_var(BOOL____00064);
constraint int_eq_reif(mines[28], 1, BOOL____00065) :: defines_var(BOOL____00065);
constraint int_eq_reif(mines[29], 0, true);
constraint int_eq_reif(mines[29], 1, false);
constraint int_eq_reif(mines[30], 0, BOOL____00069) :: defines_var(BOOL____00069);
constraint int_eq_reif(mines[30], 1, BOOL____00070) :: defines_var(BOOL____00070);
constraint int_eq_reif(mines[31], 0, true);
constraint int_eq_reif(mines[31], 1, false);
constraint int_eq_reif(mines[32], 0, BOOL____00074) :: defines_var(BOOL____00074);
constraint int_eq_reif(mines[32], 1, BOOL____00075) :: defines_var(BOOL____00075);
constraint int_eq_reif(mines[33], 0, BOOL____00076) :: defines_var(BOOL____00076);
constraint int_eq_reif(mines[33], 1, BOOL____00077) :: defines_var(BOOL____00077);
constraint int_eq_reif(mines[34], 0, true);
constraint int_eq_reif(mines[34], 1, false);
constraint int_eq_reif(mines[35], 0, BOOL____00081) :: defines_var(BOOL____00081);
constraint int_eq_reif(mines[35], 1, BOOL____00082) :: defines_var(BOOL____00082);
constraint int_eq_reif(mines[36], 0, true);
constraint int_eq_reif(mines[36], 1, false);
constraint int_eq_reif(mines[37], 0, BOOL____00086) :: defines_var(BOOL____00086);
constraint int_eq_reif(mines[37], 1, BOOL____00087) :: defines_var(BOOL____00087);
constraint int_eq_reif(mines[38], 0, BOOL____00088) :: defines_var(BOOL____00088);
constraint int_eq_reif(mines[38], 1, BOOL____00089) :: defines_var(BOOL____00089);
constraint int_eq_reif(mines[39], 0, BOOL____00090) :: defines_var(BOOL____00090);
constraint int_eq_reif(mines[39], 1, BOOL____00091) :: defines_var(BOOL____00091);
constraint int_eq_reif(mines[40], 0, true);
constraint int_eq_reif(mines[40], 1, false);
constraint int_eq_reif(mines[41], 0, BOOL____00095) :: defines_var(BOOL____00095);
constraint int_eq_reif(mines[41], 1, BOOL____00096) :: defines_var(BOOL____00096);
constraint int_eq_reif(mines[42], 0, BOOL____00097) :: defines_var(BOOL____00097);
constraint int_eq_reif(mines[42], 1, BOOL____00098) :: defines_var(BOOL____00098);
constraint int_eq_reif(mines[43], 0, true);
constraint int_eq_reif(mines[43], 1, false);
constraint int_eq_reif(mines[44], 0, BOOL____00102) :: defines_var(BOOL____00102);
constraint int_eq_reif(mines[44], 1, BOOL____00103) :: defines_var(BOOL____00103);
constraint int_eq_reif(mines[45], 0, BOOL____00104) :: defines_var(BOOL____00104);
constraint int_eq_reif(mines[45], 1, BOOL____00105) :: defines_var(BOOL____00105);
constraint int_eq_reif(mines[46], 0, true);
constraint int_eq_reif(mines[46], 1, false);
constraint int_eq_reif(mines[47], 0, BOOL____00109) :: defines_var(BOOL____00109);
constraint int_eq_reif(mines[47], 1, BOOL____00110) :: defines_var(BOOL____00110);
constraint int_eq_reif(mines[48], 0, BOOL____00111) :: defines_var(BOOL____00111);
constraint int_eq_reif(mines[48], 1, BOOL____00112) :: defines_var(BOOL____00112);
constraint int_eq_reif(mines[49], 0, true);
constraint int_eq_reif(mines[49], 1, false);
constraint int_eq_reif(mines[50], 0, BOOL____00116) :: defines_var(BOOL____00116);
constraint int_eq_reif(mines[50], 1, BOOL____00117) :: defines_var(BOOL____00117);
constraint int_eq_reif(mines[51], 0, BOOL____00118) :: defines_var(BOOL____00118);
constraint int_eq_reif(mines[51], 1, BOOL____00119) :: defines_var(BOOL____00119);
constraint int_eq_reif(mines[52], 0, BOOL____00120) :: defines_var(BOOL____00120);
constraint int_eq_reif(mines[52], 1, BOOL____00121) :: defines_var(BOOL____00121);
constraint int_eq_reif(mines[53], 0, true);
constraint int_eq_reif(mines[53], 1, false);
constraint int_eq_reif(mines[54], 0, BOOL____00125) :: defines_var(BOOL____00125);
constraint int_eq_reif(mines[54], 1, BOOL____00126) :: defines_var(BOOL____00126);
constraint int_eq_reif(mines[55], 0, true);
constraint int_eq_reif(mines[55], 1, false);
constraint int_eq_reif(mines[56], 0, BOOL____00130) :: defines_var(BOOL____00130);
constraint int_eq_reif(mines[56], 1, BOOL____00131) :: defines_var(BOOL____00131);
constraint int_eq_reif(mines[57], 0, BOOL____00132) :: defines_var(BOOL____00132);
constraint int_eq_reif(mines[57], 1, BOOL____00133) :: defines_var(BOOL____00133);
constraint int_eq_reif(mines[58], 0, true);
constraint int_eq_reif(mines[58], 1, false);
constraint int_eq_reif(mines[59], 0, BOOL____00137) :: defines_var(BOOL____00137);
constraint int_eq_reif(mines[59], 1, BOOL____00138) :: defines_var(BOOL____00138);
constraint int_eq_reif(mines[60], 0, true);
constraint int_eq_reif(mines[60], 1, false);
constraint int_eq_reif(mines[61], 0, BOOL____00142) :: defines_var(BOOL____00142);
constraint int_eq_reif(mines[61], 1, BOOL____00143) :: defines_var(BOOL____00143);
constraint int_eq_reif(mines[62], 0, BOOL____00144) :: defines_var(BOOL____00144);
constraint int_eq_reif(mines[62], 1, BOOL____00145) :: defines_var(BOOL____00145);
constraint int_eq_reif(mines[63], 0, BOOL____00146) :: defines_var(BOOL____00146);
constraint int_eq_reif(mines[63], 1, BOOL____00147) :: defines_var(BOOL____00147);
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[55], mines[56], mines[63], mines[64]], -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]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[6], mines[7], mines[8], mines[14], mines[15], mines[16]], -1, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[7], mines[8], mines[15], mines[16], mines[23], mines[24]], -1, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[17], mines[18], mines[25], mines[26], mines[33], mines[34]], -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[41], mines[42], mines[49], mines[50], mines[57], mines[58]], -2, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[49], mines[50], mines[51], mines[57], mines[58], mines[59]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[51], mines[52], mines[53], mines[59], mines[60], mines[61]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[3], mines[9], mines[10], mines[11], mines[17], mines[18], mines[19]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[3], mines[4], mines[5], mines[11], mines[12], mines[13], mines[19], mines[20], mines[21]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[10], mines[11], mines[12], mines[18], mines[19], mines[20], mines[26], mines[27], mines[28]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[13], mines[14], mines[15], mines[21], mines[22], mines[23], mines[29], mines[30], mines[31]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[20], mines[21], mines[22], mines[28], mines[29], mines[30], mines[36], mines[37], mines[38]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[22], mines[23], mines[24], mines[30], mines[31], mines[32], mines[38], mines[39], mines[40]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[25], mines[26], mines[27], mines[33], mines[34], mines[35], mines[41], mines[42], mines[43]], -2, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[27], mines[28], mines[29], mines[35], mines[36], mines[37], mines[43], mines[44], mines[45]], -4, 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]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[37], mines[38], mines[39], mines[45], mines[46], mines[47], mines[53], mines[54], mines[55]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[44], mines[45], mines[46], mines[52], mines[53], mines[54], mines[60], mines[61], mines[62]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[46], mines[47], mines[48], mines[54], mines[55], mines[56], mines[62], mines[63], mines[64]], -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;