00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include "test/flatzinc.hh"
00035
00036 namespace Test { namespace FlatZinc {
00037
00038 namespace {
00040 class Create {
00041 public:
00042
00044 Create(void) {
00045 (void) new FlatZincTest("knights",
00046 "predicate all_different_int(array [int] of var int: x);\n\
00047 predicate all_equal_int(array [int] of var int: x);\n\
00048 predicate among(var int: n, array [int] of var int: x, set of int: v);\n\
00049 predicate array_bool_lq(array [int] of var bool: x, array [int] of var bool: y);\n\
00050 predicate array_bool_lt(array [int] of var bool: x, array [int] of var bool: y);\n\
00051 predicate array_int_lq(array [int] of var int: x, array [int] of var int: y);\n\
00052 predicate array_int_lt(array [int] of var int: x, array [int] of var int: y);\n\
00053 predicate array_set_partition(array [int] of var set of int: S, set of int: universe);\n\
00054 predicate at_least_int(int: n, array [int] of var int: x, int: v);\n\
00055 predicate at_most_int(int: n, array [int] of var int: x, int: v);\n\
00056 predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00057 predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00058 predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00059 predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00060 predicate count(array [int] of var int: x, var int: y, var int: c);\n\
00061 predicate count_reif(array [int] of var int: x, var int: y, var int: c, var bool: b);\n\
00062 predicate cumulatives(array [int] of var int: s, array [int] of var int: d, array [int] of var int: r, var int: b);\n\
00063 predicate decreasing_bool(array [int] of var bool: x);\n\
00064 predicate decreasing_int(array [int] of var int: x);\n\
00065 predicate disjoint(var set of int: s1, var set of int: s2);\n\
00066 predicate gecode_array_set_element_union(var set of int: x, array [int] of var set of int: y, var set of int: z);\n\
00067 predicate gecode_bin_packing_load(array [int] of var int: l, array [int] of var int: bin, array [int] of int: w, int: minIndex);\n\
00068 predicate gecode_circuit(int: offset, array [int] of var int: x);\n\
00069 predicate gecode_int_set_channel(array [int] of var int: x, int: xoff, array [int] of var set of int: y, int: yoff);\n\
00070 predicate gecode_inverse_set(array [int] of var set of int: f, array [int] of var set of int: invf, int: xoff, int: yoff);\n\
00071 predicate gecode_link_set_to_booleans(var set of int: s, array [int] of var bool: b, int: idx);\n\
00072 predicate gecode_member_bool_reif(array [int] of var bool: x, var bool: y, var bool: b);\n\
00073 predicate gecode_member_int_reif(array [int] of var int: x, var int: y, var bool: b);\n\
00074 predicate gecode_nooverlap(array [int] of var int: x, array [int] of var int: w, array [int] of var int: y, array [int] of var int: h);\n\
00075 predicate gecode_precede(array [int] of var int: x, int: s, int: t);\n\
00076 predicate gecode_precede_set(array [int] of var set of int: x, int: s, int: t);\n\
00077 predicate gecode_range(array [int] of var int: x, int: xoff, var set of int: s, var set of int: t);\n\
00078 predicate gecode_set_weights(array [int] of int: csi, array [int] of int: cs, var set of int: x, var int: y);\n\
00079 predicate global_cardinality(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);\n\
00080 predicate global_cardinality_closed(array [int] of var int: x, array [int] of int: cover, array [int] of var int: counts);\n\
00081 predicate global_cardinality_low_up(array [int] of var int: x, array [int] of int: cover, array [int] of int: lbound, array [int] of int: ubound);\n\
00082 predicate global_cardinality_low_up_closed(array [int] of var int: x, array [int] of int: cover, array [int] of int: lbound, array [int] of int: ubound);\n\
00083 predicate increasing_bool(array [int] of var bool: x);\n\
00084 predicate increasing_int(array [int] of var int: x);\n\
00085 predicate inverse_offsets(array [int] of var int: f, int: foff, array [int] of var int: invf, int: invfoff);\n\
00086 predicate maximum_int(var int: m, array [int] of var int: x);\n\
00087 predicate member_bool(array [int] of var bool: x, var bool: y);\n\
00088 predicate member_int(array [int] of var int: x, var int: y);\n\
00089 predicate minimum_int(var int: m, array [int] of var int: x);\n\
00090 predicate nvalue(var int: n, array [int] of var int: x);\n\
00091 predicate regular(array [int] of var int: x, int: Q, int: S, array [int, int] of int: d, int: q0, set of int: F);\n\
00092 predicate sort(array [int] of var int: x, array [int] of var int: y);\n\
00093 predicate table_bool(array [int] of var bool: x, array [int, int] of bool: t);\n\
00094 predicate table_int(array [int] of var int: x, array [int, int] of int: t);\n\
00095 array [1..36] of set of int: neighbours = [{9, 14}, {10, 13, 15}, {7, 11, 14, 16}, {8, 12, 15, 17}, {9, 16, 18}, {10, 17}, {3, 15, 20}, {4, 16, 19, 21}, {1, 5, 13, 17, 20, 22}, {2, 6, 14, 18, 21, 23}, {3, 15, 22, 24}, {4, 16, 23}, {2, 9, 21, 26}, {1, 3, 10, 22, 25, 27}, {2, 4, 7, 11, 19, 23, 26, 28}, {3, 5, 8, 12, 20, 24, 27, 29}, {4, 6, 9, 21, 28, 30}, {5, 10, 22, 29}, {8, 15, 27, 32}, {7, 9, 16, 28, 31, 33}, {8, 10, 13, 17, 25, 29, 32, 34}, {9, 11, 14, 18, 26, 30, 33, 35}, {10, 12, 15, 27, 34, 36}, {11, 16, 28, 35}, {14, 21, 33}, {13, 15, 22, 34}, {14, 16, 19, 23, 31, 35}, {15, 17, 20, 24, 32, 36}, {16, 18, 21, 33}, {17, 22, 34}, {20, 27}, {19, 21, 28}, {20, 22, 25, 29}, {21, 23, 26, 30}, {22, 24, 27}, {23, 28}];\n\
00096 var set of 1..36: SET____00001 :: is_defined_var :: var_is_introduced;\n\
00097 var set of 1..36: SET____00002 :: is_defined_var :: var_is_introduced;\n\
00098 var set of 1..36: SET____00003 :: is_defined_var :: var_is_introduced;\n\
00099 var set of 1..36: SET____00004 :: is_defined_var :: var_is_introduced;\n\
00100 var set of 1..36: SET____00005 :: is_defined_var :: var_is_introduced;\n\
00101 var set of 1..36: SET____00006 :: is_defined_var :: var_is_introduced;\n\
00102 var set of 1..36: SET____00007 :: is_defined_var :: var_is_introduced;\n\
00103 var set of 1..36: SET____00008 :: is_defined_var :: var_is_introduced;\n\
00104 var set of 1..36: SET____00009 :: is_defined_var :: var_is_introduced;\n\
00105 var set of 1..36: SET____00010 :: is_defined_var :: var_is_introduced;\n\
00106 var set of 1..36: SET____00011 :: is_defined_var :: var_is_introduced;\n\
00107 var set of 1..36: SET____00012 :: is_defined_var :: var_is_introduced;\n\
00108 var set of 1..36: SET____00013 :: is_defined_var :: var_is_introduced;\n\
00109 var set of 1..36: SET____00014 :: is_defined_var :: var_is_introduced;\n\
00110 var set of 1..36: SET____00015 :: is_defined_var :: var_is_introduced;\n\
00111 var set of 1..36: SET____00016 :: is_defined_var :: var_is_introduced;\n\
00112 var set of 1..36: SET____00017 :: is_defined_var :: var_is_introduced;\n\
00113 var set of 1..36: SET____00018 :: is_defined_var :: var_is_introduced;\n\
00114 var set of 1..36: SET____00019 :: is_defined_var :: var_is_introduced;\n\
00115 var set of 1..36: SET____00020 :: is_defined_var :: var_is_introduced;\n\
00116 var set of 1..36: SET____00021 :: is_defined_var :: var_is_introduced;\n\
00117 var set of 1..36: SET____00022 :: is_defined_var :: var_is_introduced;\n\
00118 var set of 1..36: SET____00023 :: is_defined_var :: var_is_introduced;\n\
00119 var set of 1..36: SET____00024 :: is_defined_var :: var_is_introduced;\n\
00120 var set of 1..36: SET____00025 :: is_defined_var :: var_is_introduced;\n\
00121 var set of 1..36: SET____00026 :: is_defined_var :: var_is_introduced;\n\
00122 var set of 1..36: SET____00027 :: is_defined_var :: var_is_introduced;\n\
00123 var set of 1..36: SET____00028 :: is_defined_var :: var_is_introduced;\n\
00124 var set of 1..36: SET____00029 :: is_defined_var :: var_is_introduced;\n\
00125 var set of 1..36: SET____00030 :: is_defined_var :: var_is_introduced;\n\
00126 var set of 1..36: SET____00031 :: is_defined_var :: var_is_introduced;\n\
00127 var set of 1..36: SET____00032 :: is_defined_var :: var_is_introduced;\n\
00128 var set of 1..36: SET____00033 :: is_defined_var :: var_is_introduced;\n\
00129 var set of 1..36: SET____00034 :: is_defined_var :: var_is_introduced;\n\
00130 var set of 1..36: SET____00035 :: is_defined_var :: var_is_introduced;\n\
00131 array [1..36] of var 1..36: p :: output_array([1..36]);\n\
00132 constraint all_different_int(p);\n\
00133 constraint array_set_element(p[1], neighbours, SET____00001) :: defines_var(SET____00001);\n\
00134 constraint array_set_element(p[2], neighbours, SET____00002) :: defines_var(SET____00002);\n\
00135 constraint array_set_element(p[3], neighbours, SET____00003) :: defines_var(SET____00003);\n\
00136 constraint array_set_element(p[4], neighbours, SET____00004) :: defines_var(SET____00004);\n\
00137 constraint array_set_element(p[5], neighbours, SET____00005) :: defines_var(SET____00005);\n\
00138 constraint array_set_element(p[6], neighbours, SET____00006) :: defines_var(SET____00006);\n\
00139 constraint array_set_element(p[7], neighbours, SET____00007) :: defines_var(SET____00007);\n\
00140 constraint array_set_element(p[8], neighbours, SET____00008) :: defines_var(SET____00008);\n\
00141 constraint array_set_element(p[9], neighbours, SET____00009) :: defines_var(SET____00009);\n\
00142 constraint array_set_element(p[10], neighbours, SET____00010) :: defines_var(SET____00010);\n\
00143 constraint array_set_element(p[11], neighbours, SET____00011) :: defines_var(SET____00011);\n\
00144 constraint array_set_element(p[12], neighbours, SET____00012) :: defines_var(SET____00012);\n\
00145 constraint array_set_element(p[13], neighbours, SET____00013) :: defines_var(SET____00013);\n\
00146 constraint array_set_element(p[14], neighbours, SET____00014) :: defines_var(SET____00014);\n\
00147 constraint array_set_element(p[15], neighbours, SET____00015) :: defines_var(SET____00015);\n\
00148 constraint array_set_element(p[16], neighbours, SET____00016) :: defines_var(SET____00016);\n\
00149 constraint array_set_element(p[17], neighbours, SET____00017) :: defines_var(SET____00017);\n\
00150 constraint array_set_element(p[18], neighbours, SET____00018) :: defines_var(SET____00018);\n\
00151 constraint array_set_element(p[19], neighbours, SET____00019) :: defines_var(SET____00019);\n\
00152 constraint array_set_element(p[20], neighbours, SET____00020) :: defines_var(SET____00020);\n\
00153 constraint array_set_element(p[21], neighbours, SET____00021) :: defines_var(SET____00021);\n\
00154 constraint array_set_element(p[22], neighbours, SET____00022) :: defines_var(SET____00022);\n\
00155 constraint array_set_element(p[23], neighbours, SET____00023) :: defines_var(SET____00023);\n\
00156 constraint array_set_element(p[24], neighbours, SET____00024) :: defines_var(SET____00024);\n\
00157 constraint array_set_element(p[25], neighbours, SET____00025) :: defines_var(SET____00025);\n\
00158 constraint array_set_element(p[26], neighbours, SET____00026) :: defines_var(SET____00026);\n\
00159 constraint array_set_element(p[27], neighbours, SET____00027) :: defines_var(SET____00027);\n\
00160 constraint array_set_element(p[28], neighbours, SET____00028) :: defines_var(SET____00028);\n\
00161 constraint array_set_element(p[29], neighbours, SET____00029) :: defines_var(SET____00029);\n\
00162 constraint array_set_element(p[30], neighbours, SET____00030) :: defines_var(SET____00030);\n\
00163 constraint array_set_element(p[31], neighbours, SET____00031) :: defines_var(SET____00031);\n\
00164 constraint array_set_element(p[32], neighbours, SET____00032) :: defines_var(SET____00032);\n\
00165 constraint array_set_element(p[33], neighbours, SET____00033) :: defines_var(SET____00033);\n\
00166 constraint array_set_element(p[34], neighbours, SET____00034) :: defines_var(SET____00034);\n\
00167 constraint array_set_element(p[35], neighbours, SET____00035) :: defines_var(SET____00035);\n\
00168 constraint int_eq(p[1], 1);\n\
00169 constraint int_eq(p[2], 9);\n\
00170 constraint int_eq(p[36], 14);\n\
00171 constraint set_in(p[2], SET____00001);\n\
00172 constraint set_in(p[3], SET____00002);\n\
00173 constraint set_in(p[4], SET____00003);\n\
00174 constraint set_in(p[5], SET____00004);\n\
00175 constraint set_in(p[6], SET____00005);\n\
00176 constraint set_in(p[7], SET____00006);\n\
00177 constraint set_in(p[8], SET____00007);\n\
00178 constraint set_in(p[9], SET____00008);\n\
00179 constraint set_in(p[10], SET____00009);\n\
00180 constraint set_in(p[11], SET____00010);\n\
00181 constraint set_in(p[12], SET____00011);\n\
00182 constraint set_in(p[13], SET____00012);\n\
00183 constraint set_in(p[14], SET____00013);\n\
00184 constraint set_in(p[15], SET____00014);\n\
00185 constraint set_in(p[16], SET____00015);\n\
00186 constraint set_in(p[17], SET____00016);\n\
00187 constraint set_in(p[18], SET____00017);\n\
00188 constraint set_in(p[19], SET____00018);\n\
00189 constraint set_in(p[20], SET____00019);\n\
00190 constraint set_in(p[21], SET____00020);\n\
00191 constraint set_in(p[22], SET____00021);\n\
00192 constraint set_in(p[23], SET____00022);\n\
00193 constraint set_in(p[24], SET____00023);\n\
00194 constraint set_in(p[25], SET____00024);\n\
00195 constraint set_in(p[26], SET____00025);\n\
00196 constraint set_in(p[27], SET____00026);\n\
00197 constraint set_in(p[28], SET____00027);\n\
00198 constraint set_in(p[29], SET____00028);\n\
00199 constraint set_in(p[30], SET____00029);\n\
00200 constraint set_in(p[31], SET____00030);\n\
00201 constraint set_in(p[32], SET____00031);\n\
00202 constraint set_in(p[33], SET____00032);\n\
00203 constraint set_in(p[34], SET____00033);\n\
00204 constraint set_in(p[35], SET____00034);\n\
00205 constraint set_in(p[36], SET____00035);\n\
00206 solve :: int_search(p, input_order, indomain_min, complete) satisfy;\n\
00207 ", "p = array1d(1..36, [1, 9, 5, 16, 3, 7, 15, 2, 10, 6, 17, 30, 34, 26, 13, 21, 32, 19, 8, 4, 12, 23, 36, 28, 20, 31, 27, 35, 24, 11, 22, 18, 29, 33, 25, 14]);\n\
00208 ----------\n\
00209 ");
00210 }
00211 };
00212
00213 Create c;
00214 }
00215
00216 }}
00217
00218