Files
ortools-clone/examples/flatzinc/minesweeper_6.fzn
2012-09-03 18:26:36 +00:00

240 lines
18 KiB
MiniZinc

array [1..64] of int: game = [-1, 3, 2, -1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 3, 3, -1, -1, 2, -1, -1, -1, 4, -1, 5, -1, -1, -1, 5, -1, -1, -1, -1, 6, -1, -1, -1, 5, -1, 3, -1, -1, -1, 5, -1, -1, 4, 2, -1, -1, 5, -1, -1, -1, -1, -1, -1, 2, -1, -1, 3, 4, -1];
var bool: BOOL____00001 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00002 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00009 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00010 :: 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____00016 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00017 :: 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____00022 :: 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____00027 :: 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____00041 :: 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____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____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____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;
var bool: BOOL____00073 :: 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____00078 :: 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____00087 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00091 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00092 :: 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____00099 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00100 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00101 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00105 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00106 :: 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____00115 :: 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____00122 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00123 :: 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____00126 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00127 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00128 :: 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____00137 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00138 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00139 :: is_defined_var :: var_is_introduced;
var bool: BOOL____00140 :: 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;
array [1..64] of var 0..1: mines :: output_array([1..8, 1..8]);
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, true);
constraint int_eq_reif(mines[3], 1, false);
constraint int_eq_reif(mines[4], 0, BOOL____00009) :: defines_var(BOOL____00009);
constraint int_eq_reif(mines[4], 1, BOOL____00010) :: defines_var(BOOL____00010);
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, BOOL____00016) :: defines_var(BOOL____00016);
constraint int_eq_reif(mines[7], 1, BOOL____00017) :: defines_var(BOOL____00017);
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, BOOL____00022) :: defines_var(BOOL____00022);
constraint int_eq_reif(mines[10], 1, BOOL____00023) :: defines_var(BOOL____00023);
constraint int_eq_reif(mines[11], 0, BOOL____00024) :: defines_var(BOOL____00024);
constraint int_eq_reif(mines[11], 1, BOOL____00025) :: defines_var(BOOL____00025);
constraint int_eq_reif(mines[12], 0, BOOL____00026) :: defines_var(BOOL____00026);
constraint int_eq_reif(mines[12], 1, BOOL____00027) :: defines_var(BOOL____00027);
constraint int_eq_reif(mines[13], 0, true);
constraint int_eq_reif(mines[13], 1, false);
constraint int_eq_reif(mines[14], 0, BOOL____00031) :: defines_var(BOOL____00031);
constraint int_eq_reif(mines[14], 1, BOOL____00032) :: defines_var(BOOL____00032);
constraint int_eq_reif(mines[15], 0, BOOL____00033) :: defines_var(BOOL____00033);
constraint int_eq_reif(mines[15], 1, BOOL____00034) :: defines_var(BOOL____00034);
constraint int_eq_reif(mines[16], 0, true);
constraint int_eq_reif(mines[16], 1, false);
constraint int_eq_reif(mines[17], 0, true);
constraint int_eq_reif(mines[17], 1, false);
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, BOOL____00043) :: defines_var(BOOL____00043);
constraint int_eq_reif(mines[19], 1, BOOL____00044) :: defines_var(BOOL____00044);
constraint int_eq_reif(mines[20], 0, true);
constraint int_eq_reif(mines[20], 1, false);
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, BOOL____00050) :: defines_var(BOOL____00050);
constraint int_eq_reif(mines[22], 1, BOOL____00051) :: defines_var(BOOL____00051);
constraint int_eq_reif(mines[23], 0, BOOL____00052) :: defines_var(BOOL____00052);
constraint int_eq_reif(mines[23], 1, BOOL____00053) :: defines_var(BOOL____00053);
constraint int_eq_reif(mines[24], 0, true);
constraint int_eq_reif(mines[24], 1, false);
constraint int_eq_reif(mines[25], 0, BOOL____00057) :: defines_var(BOOL____00057);
constraint int_eq_reif(mines[25], 1, BOOL____00058) :: defines_var(BOOL____00058);
constraint int_eq_reif(mines[26], 0, true);
constraint int_eq_reif(mines[26], 1, false);
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, BOOL____00066) :: defines_var(BOOL____00066);
constraint int_eq_reif(mines[29], 1, BOOL____00067) :: defines_var(BOOL____00067);
constraint int_eq_reif(mines[30], 0, true);
constraint int_eq_reif(mines[30], 1, false);
constraint int_eq_reif(mines[31], 0, BOOL____00071) :: defines_var(BOOL____00071);
constraint int_eq_reif(mines[31], 1, BOOL____00072) :: defines_var(BOOL____00072);
constraint int_eq_reif(mines[32], 0, BOOL____00073) :: defines_var(BOOL____00073);
constraint int_eq_reif(mines[32], 1, BOOL____00074) :: defines_var(BOOL____00074);
constraint int_eq_reif(mines[33], 0, BOOL____00075) :: defines_var(BOOL____00075);
constraint int_eq_reif(mines[33], 1, BOOL____00076) :: defines_var(BOOL____00076);
constraint int_eq_reif(mines[34], 0, BOOL____00077) :: defines_var(BOOL____00077);
constraint int_eq_reif(mines[34], 1, BOOL____00078) :: defines_var(BOOL____00078);
constraint int_eq_reif(mines[35], 0, true);
constraint int_eq_reif(mines[35], 1, false);
constraint int_eq_reif(mines[36], 0, BOOL____00082) :: defines_var(BOOL____00082);
constraint int_eq_reif(mines[36], 1, BOOL____00083) :: defines_var(BOOL____00083);
constraint int_eq_reif(mines[37], 0, BOOL____00084) :: defines_var(BOOL____00084);
constraint int_eq_reif(mines[37], 1, BOOL____00085) :: defines_var(BOOL____00085);
constraint int_eq_reif(mines[38], 0, BOOL____00086) :: defines_var(BOOL____00086);
constraint int_eq_reif(mines[38], 1, BOOL____00087) :: defines_var(BOOL____00087);
constraint int_eq_reif(mines[39], 0, true);
constraint int_eq_reif(mines[39], 1, false);
constraint int_eq_reif(mines[40], 0, BOOL____00091) :: defines_var(BOOL____00091);
constraint int_eq_reif(mines[40], 1, BOOL____00092) :: defines_var(BOOL____00092);
constraint int_eq_reif(mines[41], 0, true);
constraint int_eq_reif(mines[41], 1, false);
constraint int_eq_reif(mines[42], 0, BOOL____00096) :: defines_var(BOOL____00096);
constraint int_eq_reif(mines[42], 1, BOOL____00097) :: defines_var(BOOL____00097);
constraint int_eq_reif(mines[43], 0, BOOL____00098) :: defines_var(BOOL____00098);
constraint int_eq_reif(mines[43], 1, BOOL____00099) :: defines_var(BOOL____00099);
constraint int_eq_reif(mines[44], 0, BOOL____00100) :: defines_var(BOOL____00100);
constraint int_eq_reif(mines[44], 1, BOOL____00101) :: defines_var(BOOL____00101);
constraint int_eq_reif(mines[45], 0, true);
constraint int_eq_reif(mines[45], 1, false);
constraint int_eq_reif(mines[46], 0, BOOL____00105) :: defines_var(BOOL____00105);
constraint int_eq_reif(mines[46], 1, BOOL____00106) :: defines_var(BOOL____00106);
constraint int_eq_reif(mines[47], 0, BOOL____00107) :: defines_var(BOOL____00107);
constraint int_eq_reif(mines[47], 1, BOOL____00108) :: defines_var(BOOL____00108);
constraint int_eq_reif(mines[48], 0, true);
constraint int_eq_reif(mines[48], 1, false);
constraint int_eq_reif(mines[49], 0, true);
constraint int_eq_reif(mines[49], 1, false);
constraint int_eq_reif(mines[50], 0, BOOL____00115) :: defines_var(BOOL____00115);
constraint int_eq_reif(mines[50], 1, BOOL____00116) :: defines_var(BOOL____00116);
constraint int_eq_reif(mines[51], 0, BOOL____00117) :: defines_var(BOOL____00117);
constraint int_eq_reif(mines[51], 1, BOOL____00118) :: defines_var(BOOL____00118);
constraint int_eq_reif(mines[52], 0, true);
constraint int_eq_reif(mines[52], 1, false);
constraint int_eq_reif(mines[53], 0, BOOL____00122) :: defines_var(BOOL____00122);
constraint int_eq_reif(mines[53], 1, BOOL____00123) :: defines_var(BOOL____00123);
constraint int_eq_reif(mines[54], 0, BOOL____00124) :: defines_var(BOOL____00124);
constraint int_eq_reif(mines[54], 1, BOOL____00125) :: defines_var(BOOL____00125);
constraint int_eq_reif(mines[55], 0, BOOL____00126) :: defines_var(BOOL____00126);
constraint int_eq_reif(mines[55], 1, BOOL____00127) :: defines_var(BOOL____00127);
constraint int_eq_reif(mines[56], 0, BOOL____00128) :: defines_var(BOOL____00128);
constraint int_eq_reif(mines[56], 1, BOOL____00129) :: defines_var(BOOL____00129);
constraint int_eq_reif(mines[57], 0, BOOL____00130) :: defines_var(BOOL____00130);
constraint int_eq_reif(mines[57], 1, BOOL____00131) :: defines_var(BOOL____00131);
constraint int_eq_reif(mines[58], 0, BOOL____00132) :: defines_var(BOOL____00132);
constraint int_eq_reif(mines[58], 1, BOOL____00133) :: defines_var(BOOL____00133);
constraint int_eq_reif(mines[59], 0, true);
constraint int_eq_reif(mines[59], 1, false);
constraint int_eq_reif(mines[60], 0, BOOL____00137) :: defines_var(BOOL____00137);
constraint int_eq_reif(mines[60], 1, BOOL____00138) :: defines_var(BOOL____00138);
constraint int_eq_reif(mines[61], 0, BOOL____00139) :: defines_var(BOOL____00139);
constraint int_eq_reif(mines[61], 1, BOOL____00140) :: defines_var(BOOL____00140);
constraint int_eq_reif(mines[62], 0, true);
constraint int_eq_reif(mines[62], 1, false);
constraint int_eq_reif(mines[63], 0, true);
constraint int_eq_reif(mines[63], 1, false);
constraint int_eq_reif(mines[64], 0, BOOL____00147) :: defines_var(BOOL____00147);
constraint int_eq_reif(mines[64], 1, BOOL____00148) :: defines_var(BOOL____00148);
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[2], mines[3], mines[4], mines[10], mines[11], mines[12]], -2, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[5], mines[6], mines[7], mines[13], mines[14], mines[15]], -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]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[9], mines[10], mines[17], mines[18], mines[25], mines[26]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[15], mines[16], mines[23], mines[24], mines[31], mines[32]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[33], mines[34], mines[41], mines[42], mines[49], mines[50]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[39], mines[40], mines[47], mines[48], mines[55], mines[56]], -4, 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[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[53], mines[54], mines[55], mines[61], mines[62], mines[63]], -3, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[54], mines[55], mines[56], mines[62], mines[63], mines[64]], -4, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[4], mines[5], mines[6], mines[12], mines[13], mines[14], mines[20], mines[21], mines[22]], -1, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[11], mines[12], mines[13], mines[19], mines[20], mines[21], mines[27], mines[28], mines[29]], -2, 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[21], mines[22], mines[23], mines[29], mines[30], mines[31], mines[37], mines[38], mines[39]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[26], mines[27], mines[28], mines[34], mines[35], mines[36], mines[42], mines[43], mines[44]], -6, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[30], mines[31], mines[32], mines[38], mines[39], mines[40], mines[46], mines[47], mines[48]], -5, true);
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1, -1, -1, -1], [mines[36], mines[37], mines[38], mines[44], mines[45], mines[46], mines[52], mines[53], mines[54]], -5, 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]], -5, 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;