36 namespace Test {
namespace FlatZinc {
45 (void)
new FlatZincTest(
"sudoku",
46 "predicate all_different_int(array [int] of var int: x);\n\ 47 predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 48 predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 49 predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 50 predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 51 var 1..9: X____00001;\n\ 52 var 1..9: X____00002;\n\ 53 var 1..9: X____00003;\n\ 54 var 1..9: X____00004;\n\ 55 var 1..9: X____00005;\n\ 56 var 1..9: X____00006;\n\ 57 var 1..9: X____00007;\n\ 58 var 1..9: X____00008;\n\ 59 var 1..9: X____00009;\n\ 60 var 1..9: X____00010;\n\ 61 var 1..9: X____00011;\n\ 62 var 1..9: X____00012;\n\ 63 var 1..9: X____00013;\n\ 64 var 1..9: X____00014;\n\ 65 var 1..9: X____00015;\n\ 66 var 1..9: X____00016;\n\ 67 var 1..9: X____00017;\n\ 68 var 1..9: X____00018;\n\ 69 var 1..9: X____00019;\n\ 70 var 1..9: X____00020;\n\ 71 var 1..9: X____00021;\n\ 72 var 1..9: X____00022;\n\ 73 var 1..9: X____00023;\n\ 74 var 1..9: X____00024;\n\ 75 var 1..9: X____00025;\n\ 76 var 1..9: X____00026;\n\ 77 var 1..9: X____00027;\n\ 78 var 1..9: X____00028;\n\ 79 var 1..9: X____00029;\n\ 80 var 1..9: X____00030;\n\ 81 var 1..9: X____00031;\n\ 82 var 1..9: X____00032;\n\ 83 var 1..9: X____00033;\n\ 84 var 1..9: X____00034;\n\ 85 var 1..9: X____00035;\n\ 86 var 1..9: X____00036;\n\ 87 var 1..9: X____00037;\n\ 88 var 1..9: X____00038;\n\ 89 var 1..9: X____00039;\n\ 90 var 1..9: X____00040;\n\ 91 var 1..9: X____00041;\n\ 92 var 1..9: X____00042;\n\ 93 var 1..9: X____00043;\n\ 94 var 1..9: X____00044;\n\ 95 var 1..9: X____00045;\n\ 96 var 1..9: X____00046;\n\ 97 var 1..9: X____00047;\n\ 98 var 1..9: X____00048;\n\ 99 var 1..9: X____00049;\n\ 100 var 1..9: X____00050;\n\ 101 var 1..9: X____00051;\n\ 102 var 1..9: X____00052;\n\ 103 var 1..9: X____00053;\n\ 104 array [1..81] of var 1..9: puzzle :: output_array([1..9, 1..9]) = [X____00001, X____00002, X____00003, X____00004, X____00005, X____00006, X____00007, X____00008, X____00009, X____00010, 6, 8, 4, X____00011, 1, X____00012, 7, X____00013, X____00014, X____00015, X____00016, X____00017, 8, 5, X____00018, 3, X____00019, X____00020, 2, 6, 8, X____00021, 9, X____00022, 4, X____00023, X____00024, X____00025, 7, X____00026, X____00027, X____00028, 9, X____00029, X____00030, X____00031, 5, X____00032, 1, X____00033, 6, 3, 2, X____00034, X____00035, 4, X____00036, 6, 1, X____00037, X____00038, X____00039, X____00040, X____00041, 3, X____00042, 2, X____00043, 7, 6, 9, X____00044, X____00045, X____00046, X____00047, X____00048, X____00049, X____00050, X____00051, X____00052, X____00053];\n\ 105 constraint all_different_int([6, 1, X____00037, 2, X____00043, 7, X____00048, X____00049, X____00050]);\n\ 106 constraint all_different_int([8, X____00021, 9, X____00026, X____00027, X____00028, 1, X____00033, 6]);\n\ 107 constraint all_different_int([X____00001, X____00002, X____00003, X____00004, X____00005, X____00006, X____00007, X____00008, X____00009]);\n\ 108 constraint all_different_int([X____00001, X____00002, X____00003, X____00010, 6, 8, X____00014, X____00015, X____00016]);\n\ 109 constraint all_different_int([X____00001, X____00010, X____00014, X____00020, X____00024, X____00031, X____00035, X____00041, X____00045]);\n\ 110 constraint all_different_int([X____00002, 6, X____00015, 2, X____00025, 5, 4, 3, X____00046]);\n\ 111 constraint all_different_int([X____00003, 8, X____00016, 6, 7, X____00032, X____00036, X____00042, X____00047]);\n\ 112 constraint all_different_int([X____00004, 4, X____00017, 8, X____00026, 1, 6, 2, X____00048]);\n\ 113 constraint all_different_int([X____00004, X____00005, X____00006, 4, X____00011, 1, X____00017, 8, 5]);\n\ 114 constraint all_different_int([X____00005, X____00011, 8, X____00021, X____00027, X____00033, 1, X____00043, X____00049]);\n\ 115 constraint all_different_int([X____00006, 1, 5, 9, X____00028, 6, X____00037, 7, X____00050]);\n\ 116 constraint all_different_int([X____00007, X____00008, X____00009, X____00012, 7, X____00013, X____00018, 3, X____00019]);\n\ 117 constraint all_different_int([X____00007, X____00012, X____00018, X____00022, 9, 3, X____00038, 6, X____00051]);\n\ 118 constraint all_different_int([X____00008, 7, 3, 4, X____00029, 2, X____00039, 9, X____00052]);\n\ 119 constraint all_different_int([X____00009, X____00013, X____00019, X____00023, X____00030, X____00034, X____00040, X____00044, X____00053]);\n\ 120 constraint all_different_int([X____00010, 6, 8, 4, X____00011, 1, X____00012, 7, X____00013]);\n\ 121 constraint all_different_int([X____00014, X____00015, X____00016, X____00017, 8, 5, X____00018, 3, X____00019]);\n\ 122 constraint all_different_int([X____00020, 2, 6, 8, X____00021, 9, X____00022, 4, X____00023]);\n\ 123 constraint all_different_int([X____00020, 2, 6, X____00024, X____00025, 7, X____00031, 5, X____00032]);\n\ 124 constraint all_different_int([X____00022, 4, X____00023, 9, X____00029, X____00030, 3, 2, X____00034]);\n\ 125 constraint all_different_int([X____00024, X____00025, 7, X____00026, X____00027, X____00028, 9, X____00029, X____00030]);\n\ 126 constraint all_different_int([X____00031, 5, X____00032, 1, X____00033, 6, 3, 2, X____00034]);\n\ 127 constraint all_different_int([X____00035, 4, X____00036, 6, 1, X____00037, X____00038, X____00039, X____00040]);\n\ 128 constraint all_different_int([X____00035, 4, X____00036, X____00041, 3, X____00042, X____00045, X____00046, X____00047]);\n\ 129 constraint all_different_int([X____00038, X____00039, X____00040, 6, 9, X____00044, X____00051, X____00052, X____00053]);\n\ 130 constraint all_different_int([X____00041, 3, X____00042, 2, X____00043, 7, 6, 9, X____00044]);\n\ 131 constraint all_different_int([X____00045, X____00046, X____00047, X____00048, X____00049, X____00050, X____00051, X____00052, X____00053]);\n\ 133 ",
"puzzle = array2d(1..9, 1..9, [5, 9, 3, 7, 6, 2, 8, 1, 4, 2, 6, 8, 4, 3, 1, 5, 7, 9, 7, 1, 4, 9, 8, 5, 2, 3, 6, 3, 2, 6, 8, 5, 9, 1, 4, 7, 1, 8, 7, 3, 2, 4, 9, 6, 5, 4, 5, 9, 1, 7, 6, 3, 2, 8, 9, 4, 2, 6, 1, 8, 7, 5, 3, 8, 3, 5, 2, 4, 7, 6, 9, 1, 6, 7, 1, 5, 9, 3, 4, 8, 2]);\n\ Gecode::FloatVal c(-8, 8)