59 lines
4.2 KiB
MiniZinc
59 lines
4.2 KiB
MiniZinc
array [1..16] of int: game = [0, 0, 0, -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 0];
|
|
var bool: BOOL____00010 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00011 :: 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____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____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____00028 :: is_defined_var :: var_is_introduced;
|
|
var bool: BOOL____00029 :: is_defined_var :: var_is_introduced;
|
|
array [1..16] of var 0..1: mines :: output_array([1..4, 1..4]);
|
|
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, true);
|
|
constraint int_eq_reif(mines[3], 1, false);
|
|
constraint int_eq_reif(mines[4], 0, BOOL____00010) :: defines_var(BOOL____00010);
|
|
constraint int_eq_reif(mines[4], 1, BOOL____00011) :: defines_var(BOOL____00011);
|
|
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, BOOL____00017) :: defines_var(BOOL____00017);
|
|
constraint int_eq_reif(mines[7], 1, BOOL____00018) :: defines_var(BOOL____00018);
|
|
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, BOOL____00026) :: defines_var(BOOL____00026);
|
|
constraint int_eq_reif(mines[11], 1, BOOL____00027) :: defines_var(BOOL____00027);
|
|
constraint int_eq_reif(mines[12], 0, BOOL____00028) :: defines_var(BOOL____00028);
|
|
constraint int_eq_reif(mines[12], 1, BOOL____00029) :: defines_var(BOOL____00029);
|
|
constraint int_eq_reif(mines[13], 0, true);
|
|
constraint int_eq_reif(mines[13], 1, false);
|
|
constraint int_eq_reif(mines[14], 0, true);
|
|
constraint int_eq_reif(mines[14], 1, false);
|
|
constraint int_eq_reif(mines[15], 0, true);
|
|
constraint int_eq_reif(mines[15], 1, false);
|
|
constraint int_eq_reif(mines[16], 0, true);
|
|
constraint int_eq_reif(mines[16], 1, false);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[1], mines[2], mines[5], mines[6]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[9], mines[10], mines[13], mines[14]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1], [mines[11], mines[12], mines[15], mines[16]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[3], mines[5], mines[6], mines[7]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[1], mines[2], mines[5], mines[6], mines[9], mines[10]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[2], mines[3], mines[4], mines[6], mines[7], mines[8]], 0, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[5], mines[6], mines[9], mines[10], mines[13], mines[14]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[9], mines[10], mines[11], mines[13], mines[14], mines[15]], -1, true);
|
|
constraint int_lin_eq_reif([-1, -1, -1, -1, -1, -1], [mines[10], mines[11], mines[12], mines[14], mines[15], mines[16]], -1, 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]], first_fail, indomain, complete) satisfy;
|