gecoder-with-gecode 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (634) hide show
  1. data/CHANGES +81 -0
  2. data/COPYING +17 -0
  3. data/LGPL-LICENSE +458 -0
  4. data/README +45 -0
  5. data/Rakefile +13 -0
  6. data/example/example_helper.rb +1 -0
  7. data/example/magic_sequence.rb +43 -0
  8. data/example/queens.rb +43 -0
  9. data/example/raw_bindings.rb +42 -0
  10. data/example/send_more_money.rb +43 -0
  11. data/example/send_most_money.rb +58 -0
  12. data/example/square_tiling.rb +84 -0
  13. data/example/sudoku-set.rb +110 -0
  14. data/example/sudoku.rb +61 -0
  15. data/ext/extconf.rb +29 -0
  16. data/ext/gecode-1.3.1/LICENSE +34 -0
  17. data/ext/gecode-1.3.1/Makefile.contribs +71 -0
  18. data/ext/gecode-1.3.1/Makefile.dep +3928 -0
  19. data/ext/gecode-1.3.1/Makefile.in +966 -0
  20. data/ext/gecode-1.3.1/changelog.in +1065 -0
  21. data/ext/gecode-1.3.1/configure +8590 -0
  22. data/ext/gecode-1.3.1/configure.ac +179 -0
  23. data/ext/gecode-1.3.1/configure.ac.in +175 -0
  24. data/ext/gecode-1.3.1/contribs/README +26 -0
  25. data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
  26. data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
  27. data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
  28. data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
  29. data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
  30. data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
  31. data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
  32. data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
  33. data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
  34. data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
  35. data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
  36. data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
  37. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
  38. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
  39. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
  40. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
  41. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
  42. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
  43. data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
  44. data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
  45. data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
  46. data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
  47. data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
  48. data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
  49. data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
  50. data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
  51. data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
  52. data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
  53. data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
  54. data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
  55. data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
  56. data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
  57. data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
  58. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
  59. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
  60. data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
  61. data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
  62. data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
  63. data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
  64. data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
  65. data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
  66. data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
  67. data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
  68. data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
  69. data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
  70. data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
  71. data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
  72. data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
  73. data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
  74. data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
  75. data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
  76. data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
  77. data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
  78. data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
  79. data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
  80. data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
  81. data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
  82. data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
  83. data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
  84. data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
  85. data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
  86. data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
  87. data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
  88. data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
  89. data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
  90. data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
  91. data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
  92. data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
  93. data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
  94. data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
  95. data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
  96. data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
  97. data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
  98. data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
  99. data/ext/gecode-1.3.1/examples/cars.cc +165 -0
  100. data/ext/gecode-1.3.1/examples/crew.cc +220 -0
  101. data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
  102. data/ext/gecode-1.3.1/examples/donald.cc +93 -0
  103. data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
  104. data/ext/gecode-1.3.1/examples/golf.cc +242 -0
  105. data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
  106. data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
  107. data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
  108. data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
  109. data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
  110. data/ext/gecode-1.3.1/examples/knights.cc +146 -0
  111. data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
  112. data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
  113. data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
  114. data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
  115. data/ext/gecode-1.3.1/examples/money.cc +92 -0
  116. data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
  117. data/ext/gecode-1.3.1/examples/packing.cc +211 -0
  118. data/ext/gecode-1.3.1/examples/partition.cc +126 -0
  119. data/ext/gecode-1.3.1/examples/photo.cc +155 -0
  120. data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
  121. data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
  122. data/ext/gecode-1.3.1/examples/queens.cc +99 -0
  123. data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
  124. data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
  125. data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
  126. data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
  127. data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
  128. data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
  129. data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
  130. data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
  131. data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
  132. data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
  133. data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
  134. data/ext/gecode-1.3.1/examples/support.cc +160 -0
  135. data/ext/gecode-1.3.1/examples/support.hh +98 -0
  136. data/ext/gecode-1.3.1/examples/support.icc +187 -0
  137. data/ext/gecode-1.3.1/examples/timer.cc +47 -0
  138. data/ext/gecode-1.3.1/examples/timer.hh +72 -0
  139. data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
  140. data/ext/gecode-1.3.1/extconf.rb +8 -0
  141. data/ext/gecode-1.3.1/gecode.m4 +736 -0
  142. data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
  143. data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
  144. data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
  145. data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
  146. data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
  147. data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
  148. data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
  149. data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
  150. data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
  151. data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
  152. data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
  153. data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
  154. data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
  155. data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
  156. data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
  157. data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
  158. data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
  159. data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
  160. data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
  161. data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
  162. data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
  163. data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
  164. data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
  165. data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
  166. data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
  167. data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
  168. data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
  169. data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
  170. data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
  171. data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
  172. data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
  173. data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
  174. data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
  175. data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
  176. data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
  177. data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
  178. data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
  179. data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
  180. data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
  181. data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
  182. data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
  183. data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
  184. data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
  185. data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
  186. data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
  187. data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
  188. data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
  189. data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
  190. data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
  191. data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
  192. data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
  193. data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
  194. data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
  195. data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
  196. data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
  197. data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
  198. data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
  199. data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
  200. data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
  201. data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
  202. data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
  203. data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
  204. data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
  205. data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
  206. data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
  207. data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
  208. data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
  209. data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
  210. data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
  211. data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
  212. data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
  213. data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
  214. data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
  215. data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
  216. data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
  217. data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
  218. data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
  219. data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
  220. data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
  221. data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
  222. data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
  223. data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
  224. data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
  225. data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
  226. data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
  227. data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
  228. data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
  229. data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
  230. data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
  231. data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
  232. data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
  233. data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
  234. data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
  235. data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
  236. data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
  237. data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
  238. data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
  239. data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
  240. data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
  241. data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
  242. data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
  243. data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
  244. data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
  245. data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
  246. data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
  247. data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
  248. data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
  249. data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
  250. data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
  251. data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
  252. data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
  253. data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
  254. data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
  255. data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
  256. data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
  257. data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
  258. data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
  259. data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
  260. data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
  261. data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
  262. data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
  263. data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
  264. data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
  265. data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
  266. data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
  267. data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
  268. data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
  269. data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
  270. data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
  271. data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
  272. data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
  273. data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
  274. data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
  275. data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
  276. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
  277. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
  278. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
  279. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
  280. data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
  281. data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
  282. data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
  283. data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
  284. data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
  285. data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
  286. data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
  287. data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
  288. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
  289. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
  290. data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
  291. data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
  292. data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
  293. data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
  294. data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
  295. data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
  296. data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
  297. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
  298. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
  299. data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
  300. data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
  301. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
  302. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
  303. data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
  304. data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
  305. data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
  306. data/ext/gecode-1.3.1/gecode/search.hh +745 -0
  307. data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
  308. data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
  309. data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
  310. data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
  311. data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
  312. data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
  313. data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
  314. data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
  315. data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
  316. data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
  317. data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
  318. data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
  319. data/ext/gecode-1.3.1/gecode/set.hh +419 -0
  320. data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
  321. data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
  322. data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
  323. data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
  324. data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
  325. data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
  326. data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
  327. data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
  328. data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
  329. data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
  330. data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
  331. data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
  332. data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
  333. data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
  334. data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
  335. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
  336. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
  337. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
  338. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
  339. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
  340. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
  341. data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
  342. data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
  343. data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
  344. data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
  345. data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
  346. data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
  347. data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
  348. data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
  349. data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
  350. data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
  351. data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
  352. data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
  353. data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
  354. data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
  355. data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
  356. data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
  357. data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
  358. data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
  359. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
  360. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
  361. data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
  362. data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
  363. data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
  364. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
  365. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
  366. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
  367. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
  368. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
  369. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
  370. data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
  371. data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
  372. data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
  373. data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
  374. data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
  375. data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
  376. data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
  377. data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
  378. data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
  379. data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
  380. data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
  381. data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
  382. data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
  383. data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
  384. data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
  385. data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
  386. data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
  387. data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
  388. data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
  389. data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
  390. data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
  391. data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
  392. data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
  393. data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
  394. data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
  395. data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
  396. data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
  397. data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
  398. data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
  399. data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
  400. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
  401. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
  402. data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
  403. data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
  404. data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
  405. data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
  406. data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
  407. data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
  408. data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
  409. data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
  410. data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
  411. data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
  412. data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
  413. data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
  414. data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
  415. data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
  416. data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
  417. data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
  418. data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
  419. data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
  420. data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
  421. data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
  422. data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
  423. data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
  424. data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
  425. data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
  426. data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
  427. data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
  428. data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
  429. data/ext/gecode-1.3.1/install-sh +323 -0
  430. data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
  431. data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
  432. data/ext/gecode-1.3.1/misc/debian/control +11 -0
  433. data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
  434. data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
  435. data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
  436. data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
  437. data/ext/gecode-1.3.1/misc/debian/rules +81 -0
  438. data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
  439. data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
  440. data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
  441. data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
  442. data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
  443. data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
  444. data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
  445. data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
  446. data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
  447. data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
  448. data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
  449. data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
  450. data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
  451. data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
  452. data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
  453. data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
  454. data/ext/gecode-1.3.1/test/int.cc +497 -0
  455. data/ext/gecode-1.3.1/test/int.hh +119 -0
  456. data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
  457. data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
  458. data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
  459. data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
  460. data/ext/gecode-1.3.1/test/int/count.cc +264 -0
  461. data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
  462. data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
  463. data/ext/gecode-1.3.1/test/int/element.cc +132 -0
  464. data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
  465. data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
  466. data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
  467. data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
  468. data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
  469. data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
  470. data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
  471. data/ext/gecode-1.3.1/test/intset.cc +40 -0
  472. data/ext/gecode-1.3.1/test/log.cc +515 -0
  473. data/ext/gecode-1.3.1/test/log.hh +68 -0
  474. data/ext/gecode-1.3.1/test/set.cc +542 -0
  475. data/ext/gecode-1.3.1/test/set.hh +152 -0
  476. data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
  477. data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
  478. data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
  479. data/ext/gecode-1.3.1/test/set/int.cc +249 -0
  480. data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
  481. data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
  482. data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
  483. data/ext/gecode-1.3.1/test/set/select.cc +108 -0
  484. data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
  485. data/ext/gecode-1.3.1/test/stress.cc +93 -0
  486. data/ext/gecode-1.3.1/test/stress.hh +74 -0
  487. data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
  488. data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
  489. data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
  490. data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
  491. data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
  492. data/ext/gecode-1.3.1/test/test.cc +215 -0
  493. data/ext/gecode-1.3.1/test/test.hh +107 -0
  494. data/ext/missing.cpp +328 -0
  495. data/ext/missing.h +120 -0
  496. data/ext/vararray.cpp +330 -0
  497. data/ext/vararray.h +149 -0
  498. data/lib/gecoder.rb +5 -0
  499. data/lib/gecoder/bindings.rb +34 -0
  500. data/lib/gecoder/bindings/bindings.rb +2209 -0
  501. data/lib/gecoder/interface.rb +8 -0
  502. data/lib/gecoder/interface/binding_changes.rb +313 -0
  503. data/lib/gecoder/interface/branch.rb +152 -0
  504. data/lib/gecoder/interface/constraints.rb +397 -0
  505. data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
  506. data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
  507. data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
  508. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
  509. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
  510. data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
  511. data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
  512. data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
  513. data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
  514. data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
  515. data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
  516. data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
  517. data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
  518. data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
  519. data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
  520. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
  521. data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
  522. data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
  523. data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
  524. data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
  525. data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
  526. data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
  527. data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
  528. data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
  529. data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
  530. data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
  531. data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
  532. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
  533. data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
  534. data/lib/gecoder/interface/enum_matrix.rb +64 -0
  535. data/lib/gecoder/interface/enum_wrapper.rb +153 -0
  536. data/lib/gecoder/interface/model.rb +251 -0
  537. data/lib/gecoder/interface/search.rb +123 -0
  538. data/lib/gecoder/interface/variables.rb +254 -0
  539. data/lib/gecoder/version.rb +4 -0
  540. data/specs/binding_changes.rb +76 -0
  541. data/specs/bool_var.rb +74 -0
  542. data/specs/branch.rb +170 -0
  543. data/specs/constraints/arithmetic.rb +266 -0
  544. data/specs/constraints/bool_enum.rb +140 -0
  545. data/specs/constraints/boolean.rb +232 -0
  546. data/specs/constraints/cardinality.rb +154 -0
  547. data/specs/constraints/channel.rb +126 -0
  548. data/specs/constraints/connection.rb +373 -0
  549. data/specs/constraints/constraint_helper.rb +180 -0
  550. data/specs/constraints/constraints.rb +74 -0
  551. data/specs/constraints/count.rb +139 -0
  552. data/specs/constraints/distinct.rb +218 -0
  553. data/specs/constraints/element.rb +106 -0
  554. data/specs/constraints/equality.rb +31 -0
  555. data/specs/constraints/int_domain.rb +69 -0
  556. data/specs/constraints/int_relation.rb +78 -0
  557. data/specs/constraints/linear.rb +332 -0
  558. data/specs/constraints/reification_sugar.rb +96 -0
  559. data/specs/constraints/selection.rb +292 -0
  560. data/specs/constraints/set_domain.rb +181 -0
  561. data/specs/constraints/set_operation.rb +285 -0
  562. data/specs/constraints/set_relation.rb +201 -0
  563. data/specs/constraints/sort.rb +175 -0
  564. data/specs/enum_matrix.rb +43 -0
  565. data/specs/enum_wrapper.rb +122 -0
  566. data/specs/int_var.rb +144 -0
  567. data/specs/logging.rb +24 -0
  568. data/specs/model.rb +190 -0
  569. data/specs/search.rb +246 -0
  570. data/specs/set_var.rb +68 -0
  571. data/specs/spec_helper.rb +93 -0
  572. data/tasks/all_tasks.rb +1 -0
  573. data/tasks/distribution.rake +129 -0
  574. data/tasks/rcov.rake +17 -0
  575. data/tasks/specs.rake +15 -0
  576. data/tasks/svn.rake +11 -0
  577. data/tasks/website.rake +51 -0
  578. data/vendor/rust/README +28 -0
  579. data/vendor/rust/bin/cxxgenerator.rb +93 -0
  580. data/vendor/rust/include/rust_checks.hh +115 -0
  581. data/vendor/rust/include/rust_conversions.hh +102 -0
  582. data/vendor/rust/rust.rb +67 -0
  583. data/vendor/rust/rust/attribute.rb +51 -0
  584. data/vendor/rust/rust/bindings.rb +172 -0
  585. data/vendor/rust/rust/class.rb +339 -0
  586. data/vendor/rust/rust/constants.rb +48 -0
  587. data/vendor/rust/rust/container.rb +110 -0
  588. data/vendor/rust/rust/cppifaceparser.rb +129 -0
  589. data/vendor/rust/rust/cwrapper.rb +72 -0
  590. data/vendor/rust/rust/cxxclass.rb +98 -0
  591. data/vendor/rust/rust/element.rb +81 -0
  592. data/vendor/rust/rust/enum.rb +63 -0
  593. data/vendor/rust/rust/function.rb +407 -0
  594. data/vendor/rust/rust/namespace.rb +61 -0
  595. data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
  596. data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
  597. data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
  598. data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
  599. data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
  600. data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
  601. data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
  602. data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
  603. data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
  604. data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
  605. data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
  606. data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
  607. data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
  608. data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
  609. data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
  610. data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
  611. data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
  612. data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
  613. data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
  614. data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
  615. data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
  616. data/vendor/rust/rust/type.rb +98 -0
  617. data/vendor/rust/test/Makefile +4 -0
  618. data/vendor/rust/test/constants.rb +36 -0
  619. data/vendor/rust/test/cppclass.cc +45 -0
  620. data/vendor/rust/test/cppclass.hh +67 -0
  621. data/vendor/rust/test/cppclass.rb +59 -0
  622. data/vendor/rust/test/cwrapper.c +74 -0
  623. data/vendor/rust/test/cwrapper.h +41 -0
  624. data/vendor/rust/test/cwrapper.rb +56 -0
  625. data/vendor/rust/test/dummyclass.hh +31 -0
  626. data/vendor/rust/test/lib/extension-test.rb +98 -0
  627. data/vendor/rust/test/operators.cc +41 -0
  628. data/vendor/rust/test/operators.hh +39 -0
  629. data/vendor/rust/test/operators.rb +39 -0
  630. data/vendor/rust/test/test-constants.rb +43 -0
  631. data/vendor/rust/test/test-cppclass.rb +82 -0
  632. data/vendor/rust/test/test-cwrapper.rb +80 -0
  633. data/vendor/rust/test/test-operators.rb +42 -0
  634. metadata +826 -0
@@ -0,0 +1,188 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:06:52 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3517 $
11
+ *
12
+ * This file is part of Gecode, the generic constraint
13
+ * development environment:
14
+ * http://www.gecode.org
15
+ *
16
+ * See the file "LICENSE" for information on usage and
17
+ * redistribution of this file, and for a
18
+ * DISCLAIMER OF ALL WARRANTIES.
19
+ *
20
+ */
21
+
22
+ #include "examples/support.hh"
23
+
24
+ #ifdef GECODE_HAVE_SET_VARS
25
+ #include "gecode/set.hh"
26
+ #endif
27
+
28
+ #include "gecode/minimodel.hh"
29
+
30
+ // include the example specifications
31
+ #include "examples/sudoku.icc"
32
+
33
+ #ifdef GECODE_HAVE_SET_VARS
34
+ void same(Space* home, int nn, IntVarArgs a, IntVarArgs b) {
35
+ SetVar u(home, IntSet::empty, 1, nn);
36
+ rel(home, SOT_DUNION, a, u);
37
+ rel(home, SOT_DUNION, b, u);
38
+ }
39
+
40
+ IntVarArgs
41
+ block_col(MiniModel::Matrix<IntVarArray> m,
42
+ int n, int bc, int i, int j) {
43
+ return m.slice(bc*n+i, bc*n+i+1, j*n, (j+1)*n);
44
+ }
45
+
46
+ IntVarArgs
47
+ block_row(MiniModel::Matrix<IntVarArray> m,
48
+ int n, int br, int i, int j) {
49
+ return m.slice(j*n, (j+1)*n, br*n+i, br*n+i+1);
50
+ }
51
+ #endif
52
+
53
+ /**
54
+ * \brief %Example: Some %Sudoku puzzles
55
+ *
56
+ * Does not really require any explanation...
57
+ *
58
+ * \ingroup Example
59
+ *
60
+ */
61
+ class Sudoku : public Example {
62
+ protected:
63
+ const int n;
64
+ IntVarArray x;
65
+ public:
66
+
67
+ /// Actual model
68
+ Sudoku(const Options& opt)
69
+ : n(example_size(examples[opt.size])),
70
+ x(this,n*n*n*n,1,n*n) {
71
+ const int nn = n*n;
72
+ MiniModel::Matrix<IntVarArray> m(x, nn, nn);
73
+
74
+ // Constraints for rows and columns
75
+ for (int i=0; i<nn; i++) {
76
+ distinct(this, m.row(i), opt.icl);
77
+ distinct(this, m.col(i), opt.icl);
78
+ }
79
+
80
+ // Constraints for squares
81
+ for (int i=0; i<nn; i+=n)
82
+ for (int j=0; j<nn; j+=n) {
83
+ distinct(this, m.slice(i, i+n, j, j+n), opt.icl);
84
+ }
85
+
86
+ #ifdef GECODE_HAVE_SET_VARS
87
+ if (!opt.naive) {
88
+ // Implied constraints linking squares and rows
89
+ for (int b=0; b<n; b++) {
90
+ int b1c = 0;
91
+ int b2c = 0;
92
+ IntVarArgs bc1(nn-n);
93
+ IntVarArgs bc2(nn-n);
94
+ IntVarArgs br1(nn-n);
95
+ IntVarArgs br2(nn-n);
96
+ for (int i=0; i<n; i++)
97
+ for (int j=0; j<n; j++) {
98
+ b1c = 0; b2c = 0;
99
+ for (int k=0; k<n; k++) {
100
+ if (k != j) {
101
+ IntVarArgs bc1s = block_col(m, n, b, i, k);
102
+ IntVarArgs br1s = block_row(m, n, b, i, k);
103
+ for (int count=0; count<n; count++) {
104
+ bc1[b1c] = bc1s[count];
105
+ br1[b1c] = br1s[count];
106
+ ++b1c;
107
+ }
108
+ }
109
+ if (k != i) {
110
+ IntVarArgs bc2s = block_col(m, n, b, k, j);
111
+ IntVarArgs br2s = block_row(m, n, b, k, j);
112
+ for (int count=0; count<n; count++) {
113
+ bc2[b2c] = bc2s[count];
114
+ br2[b2c] = br2s[count];
115
+ ++b2c;
116
+ }
117
+ }
118
+ }
119
+ same(this, nn, bc1, bc2);
120
+ same(this, nn, br1, br2);
121
+ }
122
+ }
123
+ }
124
+ #endif
125
+
126
+ // Fill-in predefined fields
127
+ for (int i=0; i<nn; i++)
128
+ for (int j=0; j<nn; j++)
129
+ if (int v = value_at(examples[opt.size], nn, i, j))
130
+ rel(this, m(i,j), IRT_EQ, v );
131
+
132
+ branch(this, x, BVAR_SIZE_MIN, BVAL_SPLIT_MIN);
133
+ }
134
+
135
+ /// Constructor for cloning \a s
136
+ Sudoku(bool share, Sudoku& s) : Example(share,s), n(s.n) {
137
+ x.update(this, share, s.x);
138
+ }
139
+
140
+ /// Perform copying during cloning
141
+ virtual Space*
142
+ copy(bool share) {
143
+ return new Sudoku(share,*this);
144
+ }
145
+
146
+ /// Print solution
147
+ virtual void
148
+ print(void) {
149
+ std::cout << " ";
150
+ for (int i = 0; i<n*n*n*n; i++) {
151
+ if (x[i].assigned()) {
152
+ if (x[i].val()<10)
153
+ std::cout << x[i] << " ";
154
+ else
155
+ std::cout << (char)(x[i].val()+'A'-10) << " ";
156
+ }
157
+ else
158
+ std::cout << ". ";
159
+ if((i+1)%(n*n) == 0)
160
+ std::cout << std::endl << " ";
161
+ }
162
+ std::cout << std::endl;
163
+ }
164
+ };
165
+
166
+
167
+ /** \brief Main-function
168
+ * \relates Sudoku
169
+ */
170
+ int
171
+ main(int argc, char** argv) {
172
+ Options opt("Sudoku");
173
+ opt.size = 0;
174
+ opt.icl = ICL_DOM;
175
+ opt.solutions = 1;
176
+ opt.naive = true;
177
+ opt.parse(argc,argv);
178
+ if (opt.size >= n_examples) {
179
+ std::cerr << "Error: size must be between 0 and "
180
+ << n_examples-1 << std::endl;
181
+ return 1;
182
+ }
183
+ Example::run<Sudoku,DFS>(opt);
184
+ return 0;
185
+ }
186
+
187
+
188
+ // STATISTICS: example-any
@@ -0,0 +1,703 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Mikael Lagerkvist <lagerkvist@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2005
8
+ * Mikael Lagerkvist, 2006
9
+ *
10
+ * Last modified:
11
+ * $Date: 2006-08-08 15:24:45 +0200 (Tue, 08 Aug 2006) $ by $Author: tack $
12
+ * $Revision: 3534 $
13
+ *
14
+ * This file is part of Gecode, the generic constraint
15
+ * development environment:
16
+ * http://www.gecode.org
17
+ *
18
+ * See the file "LICENSE" for information on usage and
19
+ * redistribution of this file, and for a
20
+ * DISCLAIMER OF ALL WARRANTIES.
21
+ *
22
+ */
23
+
24
+ #include <string.h>
25
+ #include <cmath>
26
+ #include <cctype>
27
+
28
+ /** \name %Sudoku specifications
29
+ *
30
+ * Each specification gives the initial positions that are filled in,
31
+ * with blank squares represented as zeroes.
32
+ *
33
+ * \relates Sudoku
34
+ */
35
+ //@{
36
+ const char* examples[] = {
37
+ // 0
38
+ "...2.5..."
39
+ ".9....73."
40
+ "..2..9.6."
41
+ "2.....4.9"
42
+ "....7...."
43
+ "6.9.....1"
44
+ ".8.4..1.."
45
+ ".63....8."
46
+ "...6.8..."
47
+ ,
48
+ // 1
49
+ "3..9.4..1"
50
+ "..2...4.."
51
+ ".61...79."
52
+ "6..247..5"
53
+ "........."
54
+ "2..836..4"
55
+ ".46...23."
56
+ "..9...6.."
57
+ "5..3.9..8"
58
+ ,
59
+ // 2
60
+ "....1...."
61
+ "3.14..86."
62
+ "9..5..2.."
63
+ "7..16...."
64
+ ".2.8.5.1."
65
+ "....97..4"
66
+ "..3..4..6"
67
+ ".48..69.7"
68
+ "....8...."
69
+ ,
70
+ // 3
71
+ // Fiendish puzzle April 212005 Times London
72
+ "..4..3.7."
73
+ ".8..7...."
74
+ ".7...82.5"
75
+ "4.....31."
76
+ "9.......8"
77
+ ".15.....4"
78
+ "1.69...3."
79
+ "....2..6."
80
+ ".2.4..5.."
81
+ ,
82
+ // 4
83
+ // This one requires search
84
+ ".43.8.25."
85
+ "6........"
86
+ ".....1.94"
87
+ "9....4.7."
88
+ "...6.8..."
89
+ ".1.2....3"
90
+ "82.5....."
91
+ "........5"
92
+ ".34.9.71."
93
+ ,
94
+ // 5
95
+ // Hard one from http://www.cs.mu.oz.au/671/proj3/node5.html
96
+ ".....3.6."
97
+ ".......1."
98
+ ".975...8."
99
+
100
+ "....9.2.."
101
+ "..8.7.4.."
102
+ "..3.6...."
103
+
104
+ ".1...289."
105
+ ".4......."
106
+ ".5.1....."
107
+ , // Puzzle 1 from http://www.sudoku.org.uk/bifurcation.htm
108
+ // 6
109
+ "1..9.7..3"
110
+ ".8.....7."
111
+ "..9...6.."
112
+ "..72.94.."
113
+ "41.....95"
114
+ "..85.43.."
115
+ "..3...7.."
116
+ ".5.....4."
117
+ "2..8.6..9"
118
+ , // Puzzle 2 from http://www.sudoku.org.uk/bifurcation.htm
119
+ // 7
120
+ "...3.2..."
121
+ ".5.798.3."
122
+ "..7...8.."
123
+ "..86.73.."
124
+ ".7.....6."
125
+ "..35.41.."
126
+ "..5...6.."
127
+ ".2.419.5."
128
+ "...8.6..."
129
+ , // Puzzle 3 from http://www.sudoku.org.uk/bifurcation.htm
130
+ // 8
131
+ "...8....6"
132
+ "..162.43."
133
+ "4...71..2"
134
+ "..72...8."
135
+ "....1...."
136
+ ".1...62.."
137
+ "1..73...4"
138
+ ".26.481.."
139
+ "3....5..."
140
+ , // Puzzle 4 from http://www.sudoku.org.uk/bifurcation.htm
141
+ // 9
142
+ "3.5..4.7."
143
+ ".7......1"
144
+ ".4.9...3."
145
+ "4...51..6"
146
+ ".9.....4."
147
+ "2..84...7"
148
+ ".2...7.6."
149
+ "8......9."
150
+ ".6.4..2.8"
151
+ , // Puzzle 5 from http://www.sudoku.org.uk/bifurcation.htm
152
+ // 10
153
+ "...7..3.."
154
+ ".6....57."
155
+ ".738..41."
156
+ "..928...."
157
+ "5.......9"
158
+ "....936.."
159
+ ".98..715."
160
+ ".54....6."
161
+ "..1..9..."
162
+ , // Puzzle 6 from http://www.sudoku.org.uk/bifurcation.htm
163
+ // 11
164
+ "...6....4"
165
+ ".3..9..2."
166
+ ".6.8..7.."
167
+ "..5.6...1"
168
+ "67.3.1.58"
169
+ "9...5.4.."
170
+ "..6..3.9."
171
+ ".1..8..6."
172
+ "2....6..."
173
+ , // Puzzle 7 from http://www.sudoku.org.uk/bifurcation.htm
174
+ // 12
175
+ "8....1.4."
176
+ "2.6.9..1."
177
+ "..9..6.8."
178
+ "124.....9"
179
+ "........."
180
+ "9.....824"
181
+ ".5.4..1.."
182
+ ".8..7.2.5"
183
+ ".9.5....7"
184
+ , // Puzzle 8 from http://www.sudoku.org.uk/bifurcation.htm
185
+ // 13
186
+ "652.48..7"
187
+ ".7.2.54.."
188
+ "........."
189
+ ".641...7."
190
+ "....8...."
191
+ ".8...456."
192
+ "........."
193
+ "..86.7.2."
194
+ "2..89.751"
195
+ , // Puzzle 9 from http://www.sudoku.org.uk/bifurcation.htm
196
+ // 14
197
+ "..6..2..9"
198
+ "1..5...2."
199
+ ".473.6..1"
200
+ ".....8.4."
201
+ ".3.....7."
202
+ ".1.6....."
203
+ "4..8.321."
204
+ ".6...1..4"
205
+ "3..4..9.."
206
+ , // Puzzle 10 from http://www.sudoku.org.uk/bifurcation.htm
207
+ // 15
208
+ "..4.5.9.."
209
+ "....7...6"
210
+ "37......2"
211
+ "..95...8."
212
+ "..12.43.."
213
+ ".6...92.."
214
+ "2......93"
215
+ "1...4...."
216
+ "..6.2.7.."
217
+ , // Puzzle 11 from http://www.sudoku.org.uk/bifurcation.htm
218
+ // 16
219
+ "....3.79."
220
+ "3.......5"
221
+ "...4.73.6"
222
+ ".53.94.7."
223
+ "....7...."
224
+ ".1.82.64."
225
+ "7.19.8..."
226
+ "8.......1"
227
+ ".94.1...."
228
+ , // From http://www.sudoku.org.uk/discus/messages/29/51.html?1131034031
229
+ // 17
230
+ "2581.4.37"
231
+ "936827514"
232
+ "47153.28."
233
+ "7152.3.4."
234
+ "849675321"
235
+ "36241..75"
236
+ "1249..753"
237
+ "593742168"
238
+ "687351492"
239
+ ,
240
+ // 18
241
+ // The following minimal 25*25 Sudokus are from Alain Frisch
242
+ // Sudoku website http://www.eleves.ens.fr/home/frisch/sudoku.html
243
+ "...G...9..4.....6F..L8..."
244
+ "CEIN.HDM.OF.1L..A..9PJ.4."
245
+ ".....A...L..JBN.2.D.1...H"
246
+ "P49...JB23.AD..7E..C5F..."
247
+ "A1H....F.N5....I.BL...26."
248
+ "....7..C.6...H4B..1....I5"
249
+ ".F.P...I..B..7.5.L...9..."
250
+ ".L6A...5OF.8P...K.NE..734"
251
+ "B2.E..L...1J.5....O7.K.AP"
252
+ "O.5.CB1.P....3EM....2L.H."
253
+ "2..MJ.A...9.3.7......P.8C"
254
+ ".....CF.DPG62N.E...OH.M.J"
255
+ ".DL..OM..IE.B8..NH...3..K"
256
+ ".CO1F.B.N.AH..P.78.JE...D"
257
+ "E..6.....H......4M.KIB9.."
258
+ "N.J..6......C..1.5.G..H.."
259
+ "...75LG...6..1..CI..4.E.."
260
+ "9K..6.....HGN.O2P.4......"
261
+ ".OA..IP849...2.K3...7GN.."
262
+ "..G....N...P.D9....A...C1"
263
+ "J...M.NAFE.4..23.7....8L."
264
+ ".....J.H9CD1LP..GO....4ME"
265
+ "48NK..5.M......JL.......9"
266
+ ".I.OG....835.A.DH..P....."
267
+ "35......L.J..E....8IG.67B"
268
+ ,
269
+ // 19
270
+ ".N..JG..O7591...8I....L.."
271
+ "FG.M.B8...P.E...CJ..H...."
272
+ "...........G.4.H.D.O.NJA2"
273
+ ".....J.EN4.L6MA.B.2......"
274
+ "HE..2..DC.....F4KMA.B.9O8"
275
+ "M....62...47C19......E5.."
276
+ ".I2.8M.JGL...ADN..K..3.F7"
277
+ "..H3.5..89....I.J.....NL."
278
+ "1B..9.FAP.6.N....537.H..O"
279
+ "......1..N...O...LC.68.PG"
280
+ "KOA.FNBH.....7.C.....M..6"
281
+ "45.ECP.I..N.F.J1...MK.79."
282
+ "I.L..8.O..9.P...A...2.1J."
283
+ "..621.D.M.....B8LG..P..CH"
284
+ ".HP.N7E.L1....3..B..O.G45"
285
+ "....BIO....5.C.P...FN48E."
286
+ "...FL.....2.DH..17..59O.."
287
+ "..I.MF..2G.N...A6O.HC.PB."
288
+ "72.1..L...IM.96E.45G....."
289
+ "..9...7M..A.O...I...L...."
290
+ ".C.JA.........1.....E.48."
291
+ "O.BI.......PHL.6..1....5C"
292
+ "G6M...N4FI8...K..H.E....."
293
+ ".L..4.917....BE.G8F.M.I.."
294
+ "8F......5.O3..4...9.....K"
295
+ ,
296
+ // 20
297
+ "5.PC..7..J..I...3..H.M.2L"
298
+ "H.......F..DA..N.G...9..P"
299
+ "...3LCP2.54.71.B....J.8.."
300
+ "76M8...3A...H..C.D.FO...."
301
+ "...DK..GI..B.L.6.8.14...."
302
+ "A......M....D.6.N.P....O2"
303
+ "...E5BLF..92..3AJC..6I..."
304
+ ".PNJ.6..E7A.8..IM.OL1.G.C"
305
+ ".L3...O.N.5.KI.46.....9E."
306
+ ".I.G.A..28.MBP...E..HJ3.7"
307
+ "J.74.L..D1O96.A3.M...GI.."
308
+ "E...1...K....J...P6.7.C.9"
309
+ "8M..A9JO.F.P..1...4.E3N6."
310
+ "...I.3.7.......EL.CD..H.."
311
+ "....DE2..P...N.........K."
312
+ ".O.7.FKI1..GJ.N.....9.P8."
313
+ ".89..H..BNM73D.KFJ..I.6.A"
314
+ "PDBN...9M..C.....O.6..7.."
315
+ ".F.K...4..LA9B..C.E75..GN"
316
+ "G.A.....7.8.....H....O.3."
317
+ "B...C...4......8K.3.P...."
318
+ "DHE5..FA...J.3..B.2.KC.98"
319
+ "...F...5....N..J9......I."
320
+ ".J...P..O.BK....I.M.3..5."
321
+ "9...8.B.6.D.M.I..H.5G.J4."
322
+ ,
323
+ // 21
324
+ "..6F.....5..3.....H..A.M2"
325
+ ".....3....I8.A.MC.KJ.LNG."
326
+ ".I.7N..K.2..6...3D..B.O85"
327
+ ".3A.PF.D8OBK7.2....L6.9H4"
328
+ ".K..CBML.....O.A8.G4.D..."
329
+ "1.4.AGL..M5..F.O.9....P2."
330
+ "..I.........8......N4E..."
331
+ "J.C8.1.6.3.LO.K7AG2P9.H.."
332
+ ".2.3BH..9.A...G......O..L"
333
+ ".H..M8.J.....NI1.LEF....B"
334
+ "I5..4.....G.27..K..3.M..H"
335
+ "P..E..I.A..3B.8....G.2..."
336
+ "AJ......NFK.I.O9476..G.1."
337
+ ".976...E3H....M5.F......O"
338
+ ".F.M3.5.GKC4.HJ.N.....ID7"
339
+ "..L1K..9.J37.ID..B..E6..."
340
+ ".82OH.1..PNML...E..C...J."
341
+ "....JLFN.B..G..6M..H..D.9"
342
+ "...C.A...I.6.......K.5..."
343
+ "E.G.I.....O....J.8F......"
344
+ "..M4..9.D.7.K.FE.3O......"
345
+ "H.N.....14E..B3L..8I...AG"
346
+ "K.O.62.PM...N..H...18C.9."
347
+ "LC..8.3...2...H.G...J..4E"
348
+ ".B..9NK.E....C6.P.4D.71OI"
349
+ ,
350
+ // 22
351
+ "A..F.N......M28DC.LI7..OJ"
352
+ "..B...D.M.6....9.....2A.."
353
+ ".2..I.56.B...J.MEH......."
354
+ "O7...HE...BA..G2........L"
355
+ ".H6J.2...G.7NDP.A...8..C."
356
+ ".PN35..B..869.2.GA..K.C.."
357
+ "....EM13OD.N...49K...7..."
358
+ "9G..C....IJF5.B..7.3....."
359
+ "HD.....JN....7...EF....9."
360
+ "1.OA..G.KL....H..B.CP...."
361
+ "..CE.......2..9I....3...."
362
+ "FJ..83P.E..K7.NL15H..I2.."
363
+ ".4..GJ...6DIB...P...AHL.C"
364
+ ".1I.2.M....83.F..4.NBE..."
365
+ "L3M.OD.H.AG..4.....69...F"
366
+ ".8...5H.3.....M...D..K..4"
367
+ "3..4..AEDO7J...5..9..G1.."
368
+ "..2N9.8F.P.OIGC.L6..E.H.."
369
+ "C...1.7..K.L6.4EO.8.5...N"
370
+ ".IG.H..M..E...1A2N4..8.F."
371
+ "6..5J..N1...2..H.IGA...P8"
372
+ ".L...O...H...C....M5G..A."
373
+ "..F...3C.7.P..5N..B..DMH9"
374
+ "291D..6..M..H.7.3.J.N..B."
375
+ "....MK..29F.G.DO4...6.E35"
376
+ ,
377
+ // 23
378
+ "....B12O3..D..F..KPL.E4.7"
379
+ "1M..GL..H..K.A.....39.P.."
380
+ ".8.3.4.....7..6.F.....CK."
381
+ "P.O...758.2..MC.....1L.A."
382
+ "...HFK6.A..8...9B...2...J"
383
+ "91.KJE..L.5O..GD.....4..."
384
+ ".I..3..D.2.....C4MLAK..N."
385
+ ".4..6IA.P7.....B9......3."
386
+ "M.F...4.J...8....N.H.1G7."
387
+ "..5P.N.....C.731.I.E.9A.."
388
+ ".....GO.KDL......BA......"
389
+ ".3A..F...9..K.EI5.7..6.DN"
390
+ ".G.54.L.....PH..3F6....2."
391
+ "....P.....G..2D.OH.1B...C"
392
+ "6.EM.7N....3.B4..DC..K1P."
393
+ "B.9.....I..5N...7OGK...46"
394
+ "OF.GD6HP..JM..BA8.I.C...."
395
+ "8.L7...........P.3M5...92"
396
+ ".EM.....45IF7....2.CJ8DL."
397
+ ".6.4.8..NA.2......9....GI"
398
+ "2..A1DCN..3G.F5.L..I..O6H"
399
+ "..BIO..1.H.L...G........."
400
+ "C.P.....M8.9O..5A..N.JK.D"
401
+ "H...N...FOA4..73....5..CM"
402
+ ".D4..3...6BE..N.2JH8..L.."
403
+ ,
404
+ // 24
405
+ "LJ.FH2...K....359.E.B6.N."
406
+ "...EML1FC.PJ.A.8I....2.K4"
407
+ "9........G1..6..K...PAL3C"
408
+ "P...C34..8.N7.........DE."
409
+ "...7....E..IO...124.J5.F."
410
+ ".8.L.PA.2..31FG....N..C.I"
411
+ "F.G......M........2.K..1."
412
+ "....2KH6.JOD..9.L..G...B."
413
+ ".6O3..G...4.NJ.H.PB...5.9"
414
+ "I...K..LBN...E.76.A....8."
415
+ "D.B.L......8.3.C.KM.6...."
416
+ ".C593.I.N4.26MB..1..L.K.."
417
+ "M.F6......DA45.9..N.I3..B"
418
+ ".G..79.H...KJ...4...AN.2."
419
+ ".KH...BC....LON..7..D.8.F"
420
+ "2..B...MP....7OEJ4....6.1"
421
+ ".4....2O.9......N..1....G"
422
+ ".....G.JF.2..L.6.5......."
423
+ "C9A.G...H1...PJ..L.3.8.MN"
424
+ "...1......M.....O.P8.K3J."
425
+ "...N.HP.K25G3..JC8..1M..."
426
+ "..2K.FC34.A....N7..9.LB.."
427
+ "..65DJ..L..C.4.1...BGF..."
428
+ "OF..E..7.B.......634...D."
429
+ "G.3..N.I9D7PM8KF2....4..."
430
+ ,
431
+ // 25
432
+ ".1..I8.P..6.N...BD...3O.."
433
+ ".9.6...E.M43.8..AK.2J.1.."
434
+ "...JKL...FA...P.I4...DB.."
435
+ "E...P.I.B.7.1..J.HC...98."
436
+ "..5M8GJ.KD.O...N3..1AI..."
437
+ "K.2C4.M.N..J..I.......H.5"
438
+ "N..B9O.D...KH6.E...C...7I"
439
+ "DE..JK4.....L.1B7..68PN2."
440
+ ".....P...C..F.7...L.O9..."
441
+ "...35.H......92..M.4.EC.1"
442
+ "P..IL..H.........1..3.D.."
443
+ "....B9..8.3I5.C...K...F1."
444
+ "FH....2O..D.4M.P...A...GC"
445
+ "JA.......KF.......4.EOMIP"
446
+ "3.7GNF...A.2OB9C.E5.HJ..."
447
+ "2.I.1.......AO5.P...K.3.."
448
+ "..H....L..M.CIJ..7...4..."
449
+ "GO.9..KF.I.P3...E.HJ...N7"
450
+ "5.37...B.E...4N..O.8....."
451
+ "4B...7.9O.HL..E2C3.K51.M."
452
+ "L.O42...D..AJ.8...GH.N..E"
453
+ "9M.8.H..LG1..N..5.E..F7B."
454
+ "......FAC..5M..I6J.B4...G"
455
+ "...F..82..P.E......36HK.L"
456
+ "B.J.G5...O.H2..98.7......"
457
+ ,
458
+ // 26
459
+ ".CNPHK.53.O9F..D.78..J..."
460
+ "J.....F.DB...7.G..PAE...L"
461
+ ".6.........5.4A......I..."
462
+ "A..L.6.E.1JG....5.H.2...9"
463
+ "..G4..P...E2N.M...C..FB.1"
464
+ "..PKJ...G41O..C.N..H....."
465
+ ".M..I5L97J.3H...E2.8...D."
466
+ "1.4..ON.83G.P.D59..C.BH.."
467
+ "..2.9.......4.F.3.6..O.7."
468
+ "3F.7.MEC..5...2..4K.LN8.."
469
+ "...I........MF7.6AOG..LE."
470
+ "C1.3..JG..D.9...4..N...68"
471
+ "...M7L9..NHA...FJ.I..3.C."
472
+ ".A...P...5...E3.8M..K4OFG"
473
+ ".....C.6KIP...8..3.DJ...."
474
+ ".2.J...3C..7.D.9A.EF6L..."
475
+ "4...3.6N.....L9.H..P8...2"
476
+ ".9.C.4H.......P....1..FJ3"
477
+ ".LD.K87.1.BM5AJN....4H.G."
478
+ ".B..MAI........47O.LD...."
479
+ ".G....3....F..1..9..M..K6"
480
+ "P7.A..B8.......2....I.3.."
481
+ "M..O....9K2..6..1.N.FE.L."
482
+ "....E...A..N.J.IG8...C.9."
483
+ "6KL.4...FCI.A.....5J.2D.N"
484
+ ,
485
+ // 27
486
+ "E..I...M......L....D...BK"
487
+ "F..BH9.K.A2.7..E4.P.6..M."
488
+ ".6.J..PD8FE.IM...K...54.."
489
+ "L...8E...IA..HC........7J"
490
+ ".....7H.4.JK..DOFC....9I."
491
+ "9...7A.5.B.M34E.KDJ8....."
492
+ "8...BD....O..7....CP.E.6."
493
+ ".1.3..8....D...2.ML.B..5A"
494
+ ".E2.A.O.7..1..I.659..8LD."
495
+ "KF..M2...PL......A.G..N3."
496
+ "...76N.1..CBG...DPK..O.J2"
497
+ ".JK...6B.9..P.7.N.EMFDG.5"
498
+ "N....G.F.8....OH9.2...E.7"
499
+ "....4.3....F9.....5.NC.A."
500
+ "M.A.GL.J......5..4.7.91.."
501
+ "C.8NE.5..6..M.....BJ17..H"
502
+ "7.6...NL.41.AC.I8...GJ3.."
503
+ "...53P.GM2.L..F.....K.68."
504
+ "J.4.D..H..IG..8K..35.N.FL"
505
+ "P.F...93.D.....A.1......M"
506
+ "..7.I...1...DF..PJ.4.MA.."
507
+ ".KN.....5H..O.63.E.2....4"
508
+ "....1...O..A2..DCH8B..KE."
509
+ "3.HA.6BP.....J1957O..28.."
510
+ "42JO.I...K5C......6.P.B.."
511
+ ,
512
+ // 28
513
+ "...G87..O..F.N..CH6..D..2"
514
+ "C16..N....DL.3.E........."
515
+ ".LN.EK..D..O.G6.412....5H"
516
+ "K...2........59M...P..3.."
517
+ "..A9.M.6....8.E7O3..K..LB"
518
+ "7..8B.1.EP.....4.L.6.C.9."
519
+ ".3.6...9.85.A2F.....B.EP."
520
+ ".D4K.L..NA....C.M.E..7..."
521
+ "L..P.3H.CG.7....DKF..I6.."
522
+ "5EH.G.7.6.1....J....D3K.O"
523
+ ".6.....G.K.E..I2.4J......"
524
+ "..ICFP.8H7.2.O.B.NM5..G.."
525
+ ".M..D9..BE..J..F..I7..LAK"
526
+ ".BE.L...31.M7FK..C9..8.DN"
527
+ ".2O......D38C...E...F.P.."
528
+ ".A.....M..NB..3.J.7E8..2."
529
+ "...O...B..6..C.8KG4..5D7M"
530
+ "....M8..I..9..AL1.O.3HBNG"
531
+ ".C..4....L.....D.F......."
532
+ "J..5NF..G...H..6..C..1..."
533
+ "D..N..O....G9.J.A..I...8."
534
+ ".F.H1BN.K.O.4.8.6.3.9.M.."
535
+ "B...I....9K..6..2...G.H1."
536
+ "O...7.CJMI25N...HDKBPFAE."
537
+ ".....28.F..C........O.JK."
538
+ ,
539
+ // 29
540
+ "9.K..6D.I5...........H..."
541
+ ".I.E..BK...GN...6.L...3.."
542
+ "7....2..L8E.K.D1.P5I.6..A"
543
+ "..N.LEH.A32..CM9........."
544
+ "..2....9N...3.IC...J.KF8."
545
+ "......GA..C.7JPNI3....6L."
546
+ "....E.J.8K..I.....97NG2.B"
547
+ "O7..3HI...M.....DCF5..914"
548
+ "L.M.4.3.19.D..2......F.K."
549
+ "B....F...O9.6ANG.2.PH.E.5"
550
+ "8KDM...5.1....G......P..6"
551
+ ".4.H.L.C..J2....G..3ION.."
552
+ "C.A..J..E...1K......92.5."
553
+ ".9O.NP.2...IA....H..G..7."
554
+ "...I5..O.N4.H...2DCKJ...E"
555
+ "56....1.D..AJ.....7.L.O.."
556
+ "K.8.H.7.9.5....AC..O..G6F"
557
+ "3..........O..C.F.P6K.5.."
558
+ "...OC.4J2.3E.9...N.H7..P1"
559
+ ".B.7.K.....6.MH.LJ..A...."
560
+ "I..4.........P..E7D9O.B.H"
561
+ "E.3G.OP...I1CBL..FN4..82."
562
+ ".A..9N.8.E...73O..H....4."
563
+ ".M.C.3....DK..EI......JG."
564
+ ".HP..D..FB...NO.1KJ8.AL.."
565
+ ,
566
+ // 30
567
+ "....L.1.8H.CO..P....FA..."
568
+ "P1.2.4CO...K..A..3H8...7."
569
+ "I..H.G.5.B.6.M..A24.K..9."
570
+ "....6I.KF9..5.P.J1.BDCE.M"
571
+ ".A....2...F..L..E.M.6.5O3"
572
+ "7..1.C...8.L9..4P.5.G.K.."
573
+ "JO.5H.M2.I.7.F.6D..A4..NE"
574
+ "E.3.NO....K2...LG..7JM..."
575
+ ".9F.CJ.H....A.NKB.1..2.5."
576
+ "2LB...5..7.P36H.M..N...1D"
577
+ ".....P..B....46.HJ......."
578
+ "B4..7LI.C.GD2...KA.3H...."
579
+ "K5......6J1.........27O8P"
580
+ "LP...5K.G..JB3.......1.M."
581
+ "..EG...4.F.NKC...O..9.B.."
582
+ "..MI...D32AGP..5O...74.BN"
583
+ "FC74.....1..LO..8...5.D.J"
584
+ "..JN....H...E.I...DPA3.6."
585
+ "AE.......O3F..5.........H"
586
+ "...8..6......24.9G....I.1"
587
+ ".M....8.9..O1.F.C.EL3...A"
588
+ ".N...E.3.....I7M1...ODG.K"
589
+ "1......P.N9..D..5........"
590
+ ".I.P..FGOCMA.......J.5..2"
591
+ ".GK....7...3.....92..B.L4"
592
+ ,
593
+ // 31
594
+ "...H....GKM.43..B.D......"
595
+ "15I.C....8B.6D.7G....A.H4"
596
+ ".7...F..B...J.E16.N....3."
597
+ "...D.1...6L7.H.5K....P98F"
598
+ "KJ.AF.5CHO...NP2M.....B.."
599
+ "4..K..I9.M.DNP..A.3..E5O6"
600
+ "PGC...HE.....I5..M...7..J"
601
+ ".B.EJ..G.5..L....D.48.2.."
602
+ ".D....N.4.J.2A..H..5..F1."
603
+ "8....AJLD.7..OM...1B....P"
604
+ "CH...N..7.........B3....."
605
+ "I..O.JL..P5...3......KH.8"
606
+ "D.259.E......6.......L3.."
607
+ "...3K6.B.AE..74N25H..G1.."
608
+ ".L.B..41.HC...G.OIP8..MN7"
609
+ ".........2.C.4.L....69.I5"
610
+ "N...7.C...69.5.A......PKL"
611
+ "....L.G...13.BOMP.82..D7H"
612
+ "...C.H..5.P.E.K...I7....."
613
+ "JO..P.96ABI8.....C..N..4G"
614
+ ".NA8H.32..O4..IB..L9G..J."
615
+ "..4.GD..M.3..27INJ.O....."
616
+ ".C9L..A..J.....6.2..I..F."
617
+ "BK...4..F.A.CL..87.1.O.M."
618
+ "6..P.I.5...M..N....F....D"
619
+ ,
620
+ // 32
621
+ ".6OL.3GB.I.1F.EP..9..24.."
622
+ "..1.P.....K....N.2.....ID"
623
+ "2.8.K7..J...6..1F.......A"
624
+ "...D.8.4..29..LJ7.HMKPF.."
625
+ "..I.9N...A..P.M.DK...E5.."
626
+ "94.N...5..F..E.C182..BG3."
627
+ "8D..3HC....6G.....P.F.72I"
628
+ "C..I.E.7D....8BG.F...6..."
629
+ "......L....N.24..I..1K.DJ"
630
+ ".27HG.NF......I..L..E.A.."
631
+ "L...N.I8F6.H.9K.3O..B..5P"
632
+ ".9...L..25.B14F.N.JE...7K"
633
+ ".1...9B....GJ.8.A.5C....."
634
+ "....CPK..J....5.M.7.6.H.3"
635
+ "..F7..3..O..N..B8....421."
636
+ "AM.8....P...71..26N...3G."
637
+ "P....D.2.78.O..5CJ.GA.BH."
638
+ "6..4.F...3...K9A..1...J.M"
639
+ ".I2.E......JM.N...B98..P."
640
+ "FC..7..6.EI.D.G...3H5..KN"
641
+ "I8NO.4F.9..DB....5......."
642
+ "5..1...G3.MIH.A.9..N....."
643
+ "KG.62..1.....L3.....IJE.F"
644
+ "....D.6.AC4.9.....OL.HP.."
645
+ "..EA.5O.L.6.......D...9N."
646
+ ,
647
+ // 33
648
+ ".CH3.L..D4F..I.........1."
649
+ "G..K.....7.O.......L.42N."
650
+ "A.D...5O8B...39G.4..I...L"
651
+ "1E2OB....A8N..6FCD9.H...G"
652
+ "IN..4..3.....J..5OM....9."
653
+ "...JEMP..9G8..D7......BA."
654
+ "B.M9..L....6...2.FI.KJ..."
655
+ ".LN.386A..BH....O.J.2..7."
656
+ "7A6..2..3N.....4KP..G8HIC"
657
+ ".1.....J.CK3....HB..5L4.."
658
+ ".H......P.I.57....G..21B4"
659
+ "....7.....EP1....3.2..A.."
660
+ ".59.1FI.L8.MJG.B..AH....E"
661
+ "NI..D....O3K..A.P9..8F..."
662
+ ".O....A..E2.8.HN.J7.P...."
663
+ ".MC..P....H2...A7..ID...1"
664
+ ".6.....M.J.14.BDG.3.O9F2."
665
+ ".......CG.........4...M.."
666
+ "HDL...8N7.......FK2C.E..B"
667
+ "..KP2I.F.3...N7J.E.6..L85"
668
+ "D.E...C.4.7B..I....A.1..M"
669
+ "J..M..7..D.A..4...ONBG..2"
670
+ "9.7.6..K..P..O....D...8.."
671
+ ".2IN..GE1.D..8...MK.CPJH."
672
+ "FG..8B.2.L..KH.....1.5E.."
673
+ };
674
+
675
+ const unsigned int n_examples = sizeof(examples)/sizeof(char*);
676
+
677
+ int example_size(const char *s) {
678
+ int l = std::strlen(s);
679
+ int res = static_cast<int>(std::sqrt(std::sqrt(static_cast<float>(l))));
680
+ assert(res*res*res*res == l);
681
+ return res;
682
+ }
683
+
684
+
685
+ int value_at(const char *s, int n, int i, int j) {
686
+ assert(example_size(s) == n*n);
687
+ assert(i >= 0 && i < n);
688
+ assert(j >= 0 && j < n);
689
+ char c = s[i*n + j];
690
+ if (!std::isalnum(c))
691
+ return 0;
692
+ if (std::isdigit(c))
693
+ return c - '0';
694
+ if (std::islower(c))
695
+ c = static_cast<char>(std::toupper(c));
696
+ // std::alpha(c) == true
697
+ int res = (c - 'A') + 10;
698
+ if (res > n) return 0;
699
+ else return res;
700
+ }
701
+ //@}
702
+
703
+ // STATISTICS: example-any