trackler 2.2.0.3 → 2.2.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (463) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/list-ops/canonical-data.json +27 -11
  4. data/problem-specifications/exercises/rotational-cipher/canonical-data.json +8 -8
  5. data/tracks/clojure/config.json +240 -63
  6. data/tracks/cpp/CMakeLists.txt +1 -0
  7. data/tracks/cpp/config.json +8 -0
  8. data/tracks/cpp/exercises/bracket-push/CMakeLists.txt +52 -0
  9. data/tracks/cpp/exercises/bracket-push/bracket_push_test.cpp +75 -0
  10. data/tracks/cpp/exercises/bracket-push/example.cpp +28 -0
  11. data/tracks/cpp/exercises/bracket-push/example.h +13 -0
  12. data/tracks/ecmascript/config.json +235 -71
  13. data/tracks/ecmascript/config/exercise_readme.go.tmpl +16 -0
  14. data/tracks/ecmascript/exercises/accumulate/README.md +65 -0
  15. data/tracks/ecmascript/exercises/acronym/README.md +45 -0
  16. data/tracks/ecmascript/exercises/all-your-base/README.md +65 -0
  17. data/tracks/ecmascript/exercises/allergies/README.md +67 -0
  18. data/tracks/ecmascript/exercises/alphametics/README.md +65 -0
  19. data/tracks/ecmascript/exercises/anagram/README.md +43 -0
  20. data/tracks/ecmascript/exercises/atbash-cipher/README.md +64 -0
  21. data/tracks/ecmascript/exercises/beer-song/README.md +357 -0
  22. data/tracks/ecmascript/exercises/binary-search-tree/README.md +90 -0
  23. data/tracks/ecmascript/exercises/binary-search/README.md +71 -0
  24. data/tracks/ecmascript/exercises/binary/README.md +65 -0
  25. data/tracks/ecmascript/exercises/bob/README.md +48 -0
  26. data/tracks/ecmascript/exercises/bracket-push/README.md +40 -0
  27. data/tracks/ecmascript/exercises/circular-buffer/README.md +80 -0
  28. data/tracks/ecmascript/exercises/clock/README.md +43 -0
  29. data/tracks/ecmascript/exercises/connect/README.md +64 -0
  30. data/tracks/ecmascript/exercises/crypto-square/README.md +104 -0
  31. data/tracks/ecmascript/exercises/custom-set/README.md +41 -0
  32. data/tracks/ecmascript/exercises/diamond/README.md +89 -0
  33. data/tracks/ecmascript/exercises/difference-of-squares/README.md +49 -0
  34. data/tracks/ecmascript/exercises/diffie-hellman/README.md +74 -0
  35. data/tracks/ecmascript/exercises/etl/README.md +81 -0
  36. data/tracks/ecmascript/exercises/flatten-array/README.md +48 -0
  37. data/tracks/ecmascript/exercises/food-chain/README.md +100 -0
  38. data/tracks/ecmascript/exercises/gigasecond/README.md +41 -0
  39. data/tracks/ecmascript/exercises/grade-school/README.md +72 -0
  40. data/tracks/ecmascript/exercises/grains/README.md +64 -0
  41. data/tracks/ecmascript/exercises/hamming/README.md +72 -0
  42. data/tracks/ecmascript/exercises/hello-world/README.md +51 -0
  43. data/tracks/ecmascript/exercises/hexadecimal/README.md +44 -0
  44. data/tracks/ecmascript/exercises/isogram/README.md +49 -0
  45. data/tracks/ecmascript/exercises/kindergarten-garden/README.md +96 -0
  46. data/tracks/ecmascript/exercises/largest-series-product/README.md +50 -0
  47. data/tracks/ecmascript/exercises/leap/README.md +63 -0
  48. data/tracks/ecmascript/exercises/linked-list/README.md +64 -0
  49. data/tracks/ecmascript/exercises/list-ops/README.md +40 -0
  50. data/tracks/ecmascript/exercises/luhn/README.md +101 -0
  51. data/tracks/ecmascript/exercises/matrix/README.md +75 -0
  52. data/tracks/ecmascript/exercises/meetup/README.md +60 -0
  53. data/tracks/ecmascript/exercises/minesweeper/README.md +60 -0
  54. data/tracks/ecmascript/exercises/nth-prime/README.md +45 -0
  55. data/tracks/ecmascript/exercises/ocr-numbers/README.md +115 -0
  56. data/tracks/ecmascript/exercises/octal/README.md +79 -0
  57. data/tracks/ecmascript/exercises/palindrome-products/README.md +70 -0
  58. data/tracks/ecmascript/exercises/pangram/README.md +45 -0
  59. data/tracks/ecmascript/exercises/pascals-triangle/README.md +51 -0
  60. data/tracks/ecmascript/exercises/perfect-numbers/README.md +54 -0
  61. data/tracks/ecmascript/exercises/phone-number/README.md +64 -0
  62. data/tracks/ecmascript/exercises/pig-latin/README.md +54 -0
  63. data/tracks/ecmascript/exercises/prime-factors/README.md +66 -0
  64. data/tracks/ecmascript/exercises/pythagorean-triplet/README.md +54 -0
  65. data/tracks/ecmascript/exercises/queen-attack/README.md +63 -0
  66. data/tracks/ecmascript/exercises/raindrops/README.md +54 -0
  67. data/tracks/ecmascript/exercises/rna-transcription/README.md +55 -0
  68. data/tracks/ecmascript/exercises/robot-name/README.md +52 -0
  69. data/tracks/ecmascript/exercises/robot-simulator/README.md +64 -0
  70. data/tracks/ecmascript/exercises/roman-numerals/README.md +79 -0
  71. data/tracks/ecmascript/exercises/saddle-points/README.md +63 -0
  72. data/tracks/ecmascript/exercises/say/README.md +99 -0
  73. data/tracks/ecmascript/exercises/scrabble-score/README.md +74 -0
  74. data/tracks/ecmascript/exercises/secret-handshake/README.md +65 -0
  75. data/tracks/ecmascript/exercises/series/README.md +57 -0
  76. data/tracks/ecmascript/exercises/sieve/README.md +64 -0
  77. data/tracks/ecmascript/exercises/simple-cipher/README.md +120 -0
  78. data/tracks/ecmascript/exercises/space-age/README.md +54 -0
  79. data/tracks/ecmascript/exercises/strain/README.md +70 -0
  80. data/tracks/ecmascript/exercises/sublist/README.md +50 -0
  81. data/tracks/ecmascript/exercises/sublist/example.js +30 -0
  82. data/tracks/ecmascript/exercises/sublist/package.json +69 -0
  83. data/tracks/ecmascript/exercises/sublist/sublist.spec.js +126 -0
  84. data/tracks/ecmascript/exercises/sum-of-multiples/README.md +48 -0
  85. data/tracks/ecmascript/exercises/triangle/README.md +56 -0
  86. data/tracks/ecmascript/exercises/trinary/README.md +58 -0
  87. data/tracks/ecmascript/exercises/two-bucket/README.md +66 -0
  88. data/tracks/ecmascript/exercises/word-count/README.md +49 -0
  89. data/tracks/ecmascript/exercises/wordy/README.md +93 -0
  90. data/tracks/go/.gitignore +1 -0
  91. data/tracks/go/README.md +2 -0
  92. data/tracks/go/config/exercise_readme.go.tmpl +16 -0
  93. data/tracks/go/exercises/accumulate/README.md +53 -0
  94. data/tracks/go/exercises/acronym/README.md +33 -0
  95. data/tracks/go/exercises/all-your-base/README.md +53 -0
  96. data/tracks/go/exercises/allergies/README.md +55 -0
  97. data/tracks/go/exercises/anagram/README.md +31 -0
  98. data/tracks/go/exercises/atbash-cipher/README.md +52 -0
  99. data/tracks/go/exercises/bank-account/README.md +48 -0
  100. data/tracks/go/exercises/beer-song/README.md +345 -0
  101. data/tracks/go/exercises/binary-search-tree/README.md +78 -0
  102. data/tracks/go/exercises/binary-search/README.md +59 -0
  103. data/tracks/go/exercises/binary/README.md +53 -0
  104. data/tracks/go/exercises/bob/README.md +36 -0
  105. data/tracks/go/exercises/bowling/README.md +71 -0
  106. data/tracks/go/exercises/bracket-push/README.md +28 -0
  107. data/tracks/go/exercises/change/README.md +41 -0
  108. data/tracks/go/exercises/circular-buffer/README.md +68 -0
  109. data/tracks/go/exercises/clock/README.md +31 -0
  110. data/tracks/go/exercises/connect/README.md +52 -0
  111. data/tracks/go/exercises/counter/README.md +42 -0
  112. data/tracks/go/exercises/crypto-square/README.md +92 -0
  113. data/tracks/go/exercises/custom-set/README.md +29 -0
  114. data/tracks/go/exercises/diamond/README.md +77 -0
  115. data/tracks/go/exercises/difference-of-squares/README.md +37 -0
  116. data/tracks/go/exercises/diffie-hellman/README.md +62 -0
  117. data/tracks/go/exercises/error-handling/README.md +31 -0
  118. data/tracks/go/exercises/etl/README.md +69 -0
  119. data/tracks/go/exercises/food-chain/README.md +88 -0
  120. data/tracks/go/exercises/forth/README.md +47 -0
  121. data/tracks/go/exercises/gigasecond/README.md +29 -0
  122. data/tracks/go/exercises/grade-school/README.md +60 -0
  123. data/tracks/go/exercises/grains/README.md +52 -0
  124. data/tracks/go/exercises/hamming/README.md +60 -0
  125. data/tracks/go/exercises/hello-world/README.md +39 -0
  126. data/tracks/go/exercises/hexadecimal/README.md +32 -0
  127. data/tracks/go/exercises/house/README.md +131 -0
  128. data/tracks/go/exercises/isogram/README.md +37 -0
  129. data/tracks/go/exercises/kindergarten-garden/README.md +84 -0
  130. data/tracks/go/exercises/largest-series-product/README.md +38 -0
  131. data/tracks/go/exercises/leap/README.md +51 -0
  132. data/tracks/go/exercises/ledger/README.md +36 -0
  133. data/tracks/go/exercises/luhn/README.md +89 -0
  134. data/tracks/go/exercises/matrix/README.md +63 -0
  135. data/tracks/go/exercises/meetup/README.md +48 -0
  136. data/tracks/go/exercises/minesweeper/README.md +48 -0
  137. data/tracks/go/exercises/nth-prime/README.md +33 -0
  138. data/tracks/go/exercises/nucleotide-count/README.md +51 -0
  139. data/tracks/go/exercises/ocr-numbers/README.md +103 -0
  140. data/tracks/go/exercises/octal/README.md +67 -0
  141. data/tracks/go/exercises/paasio/README.md +38 -0
  142. data/tracks/go/exercises/palindrome-products/README.md +58 -0
  143. data/tracks/go/exercises/pangram/README.md +33 -0
  144. data/tracks/go/exercises/parallel-letter-frequency/README.md +29 -0
  145. data/tracks/go/exercises/pascals-triangle/README.md +39 -0
  146. data/tracks/go/exercises/perfect-numbers/README.md +42 -0
  147. data/tracks/go/exercises/phone-number/README.md +52 -0
  148. data/tracks/go/exercises/pig-latin/README.md +42 -0
  149. data/tracks/go/exercises/poker/README.md +30 -0
  150. data/tracks/go/exercises/pov/README.md +64 -0
  151. data/tracks/go/exercises/prime-factors/README.md +54 -0
  152. data/tracks/go/exercises/protein-translation/README.md +67 -0
  153. data/tracks/go/exercises/pythagorean-triplet/README.md +42 -0
  154. data/tracks/go/exercises/queen-attack/README.md +51 -0
  155. data/tracks/go/exercises/raindrops/README.md +42 -0
  156. data/tracks/go/exercises/react/README.md +37 -0
  157. data/tracks/go/exercises/rna-transcription/README.md +43 -0
  158. data/tracks/go/exercises/robot-name/README.md +40 -0
  159. data/tracks/go/exercises/robot-simulator/README.md +52 -0
  160. data/tracks/go/exercises/roman-numerals/README.md +67 -0
  161. data/tracks/go/exercises/saddle-points/README.md +51 -0
  162. data/tracks/go/exercises/say/README.md +87 -0
  163. data/tracks/go/exercises/scrabble-score/README.md +62 -0
  164. data/tracks/go/exercises/secret-handshake/README.md +53 -0
  165. data/tracks/go/exercises/series/README.md +45 -0
  166. data/tracks/go/exercises/sieve/README.md +52 -0
  167. data/tracks/go/exercises/simple-cipher/README.md +108 -0
  168. data/tracks/go/exercises/strain/README.md +58 -0
  169. data/tracks/go/exercises/sum-of-multiples/README.md +36 -0
  170. data/tracks/go/exercises/tournament/README.md +86 -0
  171. data/tracks/go/exercises/transpose/README.md +83 -0
  172. data/tracks/go/exercises/tree-building/README.md +48 -0
  173. data/tracks/go/exercises/triangle/README.md +44 -0
  174. data/tracks/go/exercises/trinary/README.md +46 -0
  175. data/tracks/go/exercises/twelve-days/README.md +57 -0
  176. data/tracks/go/exercises/variable-length-quantity/README.md +57 -0
  177. data/tracks/go/exercises/word-count/README.md +37 -0
  178. data/tracks/go/exercises/word-search/README.md +48 -0
  179. data/tracks/go/exercises/wordy/README.md +81 -0
  180. data/tracks/haskell/README.md +2 -2
  181. data/tracks/haskell/exercises/beer-song/test/Tests.hs +1 -1
  182. data/tracks/haskell/exercises/food-chain/test/Tests.hs +1 -1
  183. data/tracks/haskell/exercises/house/test/Tests.hs +1 -1
  184. data/tracks/haskell/exercises/say/test/Tests.hs +1 -1
  185. data/tracks/java/config.json +10 -10
  186. data/tracks/java/exercises/rotational-cipher/src/example/java/RotationalCipher.java +5 -8
  187. data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +3 -6
  188. data/tracks/javascript/config.json +397 -140
  189. data/tracks/kotlin/config.json +248 -63
  190. data/tracks/kotlin/config/exercise_readme.go.tmpl +16 -0
  191. data/tracks/kotlin/exercises/accumulate/README.md +38 -0
  192. data/tracks/kotlin/exercises/acronym/README.md +18 -0
  193. data/tracks/kotlin/exercises/all-your-base/README.md +38 -0
  194. data/tracks/kotlin/exercises/allergies/README.md +40 -0
  195. data/tracks/kotlin/exercises/anagram/README.md +16 -0
  196. data/tracks/kotlin/exercises/atbash-cipher/README.md +37 -0
  197. data/tracks/kotlin/exercises/bank-account/README.md +33 -0
  198. data/tracks/kotlin/exercises/beer-song/README.md +330 -0
  199. data/tracks/kotlin/exercises/binary-search/README.md +44 -0
  200. data/tracks/kotlin/exercises/binary/README.md +38 -0
  201. data/tracks/kotlin/exercises/bob/README.md +21 -0
  202. data/tracks/kotlin/exercises/bracket-push/README.md +13 -0
  203. data/tracks/kotlin/exercises/change/README.md +26 -0
  204. data/tracks/kotlin/exercises/clock/README.md +16 -0
  205. data/tracks/kotlin/exercises/collatz-conjecture/README.md +36 -0
  206. data/tracks/kotlin/exercises/complex-numbers/README.md +14 -0
  207. data/tracks/kotlin/exercises/diamond/README.md +62 -0
  208. data/tracks/kotlin/exercises/difference-of-squares/README.md +22 -0
  209. data/tracks/kotlin/exercises/etl/README.md +54 -0
  210. data/tracks/kotlin/exercises/flatten-array/README.md +21 -0
  211. data/tracks/kotlin/exercises/gigasecond/README.md +14 -0
  212. data/tracks/kotlin/exercises/grade-school/README.md +45 -0
  213. data/tracks/kotlin/exercises/grains/README.md +37 -0
  214. data/tracks/kotlin/exercises/hamming/README.md +45 -0
  215. data/tracks/kotlin/exercises/hello-world/README.md +24 -0
  216. data/tracks/kotlin/exercises/hexadecimal/README.md +17 -0
  217. data/tracks/kotlin/exercises/isogram/README.md +22 -0
  218. data/tracks/kotlin/exercises/largest-series-product/README.md +23 -0
  219. data/tracks/kotlin/exercises/leap/README.md +36 -0
  220. data/tracks/kotlin/exercises/linked-list/README.md +37 -0
  221. data/tracks/kotlin/exercises/list-ops/README.md +20 -0
  222. data/tracks/kotlin/exercises/luhn/README.md +74 -0
  223. data/tracks/kotlin/exercises/minesweeper/README.md +33 -0
  224. data/tracks/kotlin/exercises/nth-prime/README.md +18 -0
  225. data/tracks/kotlin/exercises/nucleotide-count/README.md +36 -0
  226. data/tracks/kotlin/exercises/pangram/README.md +18 -0
  227. data/tracks/kotlin/exercises/pascals-triangle/README.md +24 -0
  228. data/tracks/kotlin/exercises/perfect-numbers/README.md +27 -0
  229. data/tracks/kotlin/exercises/phone-number/README.md +37 -0
  230. data/tracks/kotlin/exercises/pig-latin/README.md +27 -0
  231. data/tracks/kotlin/exercises/prime-factors/README.md +39 -0
  232. data/tracks/kotlin/exercises/raindrops/README.md +27 -0
  233. data/tracks/kotlin/exercises/react/README.md +22 -0
  234. data/tracks/kotlin/exercises/rna-transcription/README.md +28 -0
  235. data/tracks/kotlin/exercises/robot-name/README.md +25 -0
  236. data/tracks/kotlin/exercises/robot-simulator/README.md +37 -0
  237. data/tracks/kotlin/exercises/roman-numerals/README.md +52 -0
  238. data/tracks/kotlin/exercises/saddle-points/README.md +36 -0
  239. data/tracks/kotlin/exercises/scrabble-score/README.md +47 -0
  240. data/tracks/kotlin/exercises/secret-handshake/README.md +38 -0
  241. data/tracks/kotlin/exercises/series/README.md +30 -0
  242. data/tracks/kotlin/exercises/sieve/README.md +37 -0
  243. data/tracks/kotlin/exercises/simple-cipher/README.md +93 -0
  244. data/tracks/kotlin/exercises/space-age/README.md +27 -0
  245. data/tracks/kotlin/exercises/spiral-matrix/README.md +33 -0
  246. data/tracks/kotlin/exercises/strain/README.md +43 -0
  247. data/tracks/kotlin/exercises/sublist/README.md +24 -0
  248. data/tracks/kotlin/exercises/sum-of-multiples/README.md +21 -0
  249. data/tracks/kotlin/exercises/triangle/README.md +29 -0
  250. data/tracks/kotlin/exercises/word-count/README.md +22 -0
  251. data/tracks/ocaml/config/exercise_readme.go.tmpl +16 -0
  252. data/tracks/ocaml/exercises/acronym/README.md +55 -0
  253. data/tracks/ocaml/exercises/all-your-base/README.md +75 -0
  254. data/tracks/ocaml/exercises/anagram/README.md +53 -0
  255. data/tracks/ocaml/exercises/atbash-cipher/README.md +93 -0
  256. data/tracks/ocaml/exercises/beer-song/README.md +367 -0
  257. data/tracks/ocaml/exercises/binary-search/README.md +81 -0
  258. data/tracks/ocaml/exercises/bob/README.md +87 -0
  259. data/tracks/ocaml/exercises/bowling/README.md +93 -0
  260. data/tracks/ocaml/exercises/bracket-push/README.md +50 -0
  261. data/tracks/ocaml/exercises/change/README.md +63 -0
  262. data/tracks/ocaml/exercises/connect/README.md +74 -0
  263. data/tracks/ocaml/exercises/custom-set/README.md +51 -0
  264. data/tracks/ocaml/exercises/difference-of-squares/README.md +59 -0
  265. data/tracks/ocaml/exercises/dominoes/README.md +58 -0
  266. data/tracks/ocaml/exercises/etl/README.md +91 -0
  267. data/tracks/ocaml/exercises/forth/README.md +69 -0
  268. data/tracks/ocaml/exercises/grade-school/README.md +82 -0
  269. data/tracks/ocaml/exercises/hamming/README.md +82 -0
  270. data/tracks/ocaml/exercises/hangman/README.md +61 -0
  271. data/tracks/ocaml/exercises/hello-world/README.md +61 -0
  272. data/tracks/ocaml/exercises/hexadecimal/README.md +54 -0
  273. data/tracks/ocaml/exercises/leap/README.md +73 -0
  274. data/tracks/ocaml/exercises/list-ops/README.md +50 -0
  275. data/tracks/ocaml/exercises/luhn/README.md +111 -0
  276. data/tracks/ocaml/exercises/meetup/README.md +70 -0
  277. data/tracks/ocaml/exercises/minesweeper/README.md +70 -0
  278. data/tracks/ocaml/exercises/nucleotide-count/README.md +73 -0
  279. data/tracks/ocaml/exercises/pangram/README.md +55 -0
  280. data/tracks/ocaml/exercises/phone-number/README.md +74 -0
  281. data/tracks/ocaml/exercises/point-mutations/README.md +81 -0
  282. data/tracks/ocaml/exercises/prime-factors/README.md +76 -0
  283. data/tracks/ocaml/exercises/raindrops/README.md +64 -0
  284. data/tracks/ocaml/exercises/react/README.md +59 -0
  285. data/tracks/ocaml/exercises/rna-transcription/README.md +65 -0
  286. data/tracks/ocaml/exercises/robot-name/README.md +62 -0
  287. data/tracks/ocaml/exercises/roman-numerals/README.md +89 -0
  288. data/tracks/ocaml/exercises/run-length-encoding/README.md +70 -0
  289. data/tracks/ocaml/exercises/say/README.md +109 -0
  290. data/tracks/ocaml/exercises/space-age/README.md +64 -0
  291. data/tracks/ocaml/exercises/triangle/README.md +66 -0
  292. data/tracks/ocaml/exercises/word-count/README.md +59 -0
  293. data/tracks/ocaml/exercises/zipper/README.md +71 -0
  294. data/tracks/perl5/README.md +1 -1
  295. data/tracks/perl5/config/exercise_readme.go.tmpl +16 -0
  296. data/tracks/perl5/exercises/accumulate/README.md +35 -0
  297. data/tracks/perl5/exercises/all-your-base/README.md +35 -0
  298. data/tracks/perl5/exercises/allergies/README.md +37 -0
  299. data/tracks/perl5/exercises/anagram/README.md +13 -0
  300. data/tracks/perl5/exercises/atbash-cipher/README.md +34 -0
  301. data/tracks/perl5/exercises/beer-song/README.md +327 -0
  302. data/tracks/perl5/exercises/binary-search-tree/README.md +60 -0
  303. data/tracks/perl5/exercises/binary-search/README.md +41 -0
  304. data/tracks/perl5/exercises/binary/README.md +35 -0
  305. data/tracks/perl5/exercises/bob/README.md +18 -0
  306. data/tracks/perl5/exercises/clock/README.md +13 -0
  307. data/tracks/perl5/exercises/crypto-square/README.md +74 -0
  308. data/tracks/perl5/exercises/custom-set/README.md +11 -0
  309. data/tracks/perl5/exercises/difference-of-squares/README.md +19 -0
  310. data/tracks/perl5/exercises/etl/README.md +51 -0
  311. data/tracks/perl5/exercises/food-chain/README.md +70 -0
  312. data/tracks/perl5/exercises/gigasecond/README.md +11 -0
  313. data/tracks/perl5/exercises/grade-school/README.md +42 -0
  314. data/tracks/perl5/exercises/grains/README.md +34 -0
  315. data/tracks/perl5/exercises/hamming/README.md +42 -0
  316. data/tracks/perl5/exercises/hello-world/README.md +21 -0
  317. data/tracks/perl5/exercises/hexadecimal/README.md +14 -0
  318. data/tracks/perl5/exercises/house/README.md +113 -0
  319. data/tracks/perl5/exercises/kindergarten-garden/README.md +66 -0
  320. data/tracks/perl5/exercises/largest-series-product/README.md +20 -0
  321. data/tracks/perl5/exercises/leap/README.md +33 -0
  322. data/tracks/perl5/exercises/linked-list/README.md +34 -0
  323. data/tracks/perl5/exercises/list-ops/README.md +10 -0
  324. data/tracks/perl5/exercises/luhn/Example.pm +20 -42
  325. data/tracks/perl5/exercises/luhn/Luhn.pm +9 -0
  326. data/tracks/perl5/exercises/luhn/README.md +71 -0
  327. data/tracks/perl5/exercises/luhn/example.yaml +38 -0
  328. data/tracks/perl5/exercises/luhn/luhn.t +127 -26
  329. data/tracks/perl5/exercises/matrix/README.md +45 -0
  330. data/tracks/perl5/exercises/meetup/README.md +30 -0
  331. data/tracks/perl5/exercises/minesweeper/README.md +30 -0
  332. data/tracks/perl5/exercises/nucleotide-count/README.md +33 -0
  333. data/tracks/perl5/exercises/ocr-numbers/README.md +85 -0
  334. data/tracks/perl5/exercises/palindrome-products/README.md +40 -0
  335. data/tracks/perl5/exercises/pascals-triangle/README.md +21 -0
  336. data/tracks/perl5/exercises/phone-number/Example.pm +6 -26
  337. data/tracks/perl5/exercises/phone-number/PhoneNumber.pm +5 -0
  338. data/tracks/perl5/exercises/phone-number/README.md +34 -0
  339. data/tracks/perl5/exercises/phone-number/example.yaml +15 -0
  340. data/tracks/perl5/exercises/phone-number/phone-number.t +138 -0
  341. data/tracks/perl5/exercises/pig-latin/README.md +24 -0
  342. data/tracks/perl5/exercises/point-mutations/README.md +41 -0
  343. data/tracks/perl5/exercises/prime-factors/README.md +36 -0
  344. data/tracks/perl5/exercises/proverb/README.md +18 -0
  345. data/tracks/perl5/exercises/pythagorean-triplet/README.md +24 -0
  346. data/tracks/perl5/exercises/queen-attack/README.md +33 -0
  347. data/tracks/perl5/exercises/raindrops/README.md +24 -0
  348. data/tracks/perl5/exercises/rna-transcription/README.md +25 -0
  349. data/tracks/perl5/exercises/robot-name/README.md +22 -0
  350. data/tracks/perl5/exercises/robot-simulator/README.md +34 -0
  351. data/tracks/perl5/exercises/roman-numerals/README.md +49 -0
  352. data/tracks/perl5/exercises/saddle-points/README.md +33 -0
  353. data/tracks/perl5/exercises/say/README.md +69 -0
  354. data/tracks/perl5/exercises/scrabble-score/README.md +44 -0
  355. data/tracks/perl5/exercises/secret-handshake/README.md +35 -0
  356. data/tracks/perl5/exercises/series/README.md +27 -0
  357. data/tracks/perl5/exercises/sieve/README.md +34 -0
  358. data/tracks/perl5/exercises/simple-cipher/README.md +90 -0
  359. data/tracks/perl5/exercises/simple-linked-list/README.md +28 -0
  360. data/tracks/perl5/exercises/space-age/README.md +24 -0
  361. data/tracks/perl5/exercises/strain/README.md +40 -0
  362. data/tracks/perl5/exercises/sublist/README.md +21 -0
  363. data/tracks/perl5/exercises/sum-of-multiples/README.md +18 -0
  364. data/tracks/perl5/exercises/triangle/README.md +26 -0
  365. data/tracks/perl5/exercises/trinary/README.md +28 -0
  366. data/tracks/perl5/exercises/twelve-days/README.md +35 -0
  367. data/tracks/perl5/exercises/word-count/README.md +19 -0
  368. data/tracks/perl5/exercises/wordy/README.md +63 -0
  369. data/tracks/perl6/README.md +1 -1
  370. data/tracks/perl6/config/exercise_readme.go.tmpl +16 -0
  371. data/tracks/perl6/exercises/accumulate/README.md +50 -0
  372. data/tracks/perl6/exercises/all-your-base/README.md +50 -0
  373. data/tracks/perl6/exercises/allergies/README.md +52 -0
  374. data/tracks/perl6/exercises/anagram/README.md +28 -0
  375. data/tracks/perl6/exercises/atbash-cipher/README.md +49 -0
  376. data/tracks/perl6/exercises/binary/README.md +50 -0
  377. data/tracks/perl6/exercises/bob/README.md +33 -0
  378. data/tracks/perl6/exercises/clock/README.md +28 -0
  379. data/tracks/perl6/exercises/flatten-array/README.md +33 -0
  380. data/tracks/perl6/exercises/grade-school/README.md +57 -0
  381. data/tracks/perl6/exercises/grains/README.md +49 -0
  382. data/tracks/perl6/exercises/hello-world/README.md +36 -0
  383. data/tracks/perl6/exercises/leap/README.md +48 -0
  384. data/tracks/perl6/exercises/linked-list/README.md +49 -0
  385. data/tracks/perl6/exercises/linked-list/example.yaml +1 -1
  386. data/tracks/perl6/exercises/linked-list/linked-list.t +1 -1
  387. data/tracks/perl6/exercises/luhn/README.md +86 -0
  388. data/tracks/perl6/exercises/phone-number/README.md +49 -0
  389. data/tracks/perl6/exercises/raindrops/README.md +39 -0
  390. data/tracks/perl6/exercises/rna-transcription/README.md +40 -0
  391. data/tracks/perl6/exercises/robot-name/README.md +37 -0
  392. data/tracks/perl6/exercises/scrabble-score/README.md +59 -0
  393. data/tracks/perl6/exercises/space-age/README.md +39 -0
  394. data/tracks/perl6/exercises/trinary/README.md +43 -0
  395. data/tracks/perl6/exercises/word-count/README.md +34 -0
  396. data/tracks/perl6/exercises/wordy/README.md +78 -0
  397. data/tracks/php/config.json +156 -3
  398. data/tracks/php/config/exercise_readme.go.tmpl +16 -0
  399. data/tracks/php/exercises/accumulate/README.md +50 -0
  400. data/tracks/php/exercises/acronym/README.md +30 -0
  401. data/tracks/php/exercises/allergies/README.md +52 -0
  402. data/tracks/php/exercises/anagram/README.md +28 -0
  403. data/tracks/php/exercises/atbash-cipher/README.md +49 -0
  404. data/tracks/php/exercises/beer-song/README.md +342 -0
  405. data/tracks/php/exercises/binary-search/README.md +56 -0
  406. data/tracks/php/exercises/binary/README.md +50 -0
  407. data/tracks/php/exercises/bob/README.md +36 -0
  408. data/tracks/php/exercises/book-store/README.md +89 -0
  409. data/tracks/php/exercises/bowling/README.md +68 -0
  410. data/tracks/php/exercises/bracket-push/README.md +25 -0
  411. data/tracks/php/exercises/change/README.md +38 -0
  412. data/tracks/php/exercises/clock/README.md +28 -0
  413. data/tracks/php/exercises/connect/README.md +49 -0
  414. data/tracks/php/exercises/difference-of-squares/README.md +34 -0
  415. data/tracks/php/exercises/etl/README.md +66 -0
  416. data/tracks/php/exercises/gigasecond/README.md +26 -0
  417. data/tracks/php/exercises/grade-school/README.md +57 -0
  418. data/tracks/php/exercises/grains/README.md +49 -0
  419. data/tracks/php/exercises/hamming/README.md +57 -0
  420. data/tracks/php/exercises/hello-world/README.md +36 -0
  421. data/tracks/php/exercises/isogram/README.md +34 -0
  422. data/tracks/php/exercises/largest-series-product/README.md +35 -0
  423. data/tracks/php/exercises/leap/README.md +48 -0
  424. data/tracks/php/exercises/luhn/README.md +86 -0
  425. data/tracks/php/exercises/markdown/README.md +33 -0
  426. data/tracks/php/exercises/minesweeper/README.md +45 -0
  427. data/tracks/php/exercises/nth-prime/README.md +30 -0
  428. data/tracks/php/exercises/nucleotide-count/README.md +48 -0
  429. data/tracks/php/exercises/ocr-numbers/README.md +100 -0
  430. data/tracks/php/exercises/pangram/README.md +30 -0
  431. data/tracks/php/exercises/pascals-triangle/README.md +36 -0
  432. data/tracks/php/exercises/perfect-numbers/README.md +39 -0
  433. data/tracks/php/exercises/phone-number/README.md +49 -0
  434. data/tracks/php/exercises/pig-latin/README.md +39 -0
  435. data/tracks/php/exercises/prime-factors/README.md +51 -0
  436. data/tracks/php/exercises/queen-attack/README.md +48 -0
  437. data/tracks/php/exercises/raindrops/README.md +39 -0
  438. data/tracks/php/exercises/rna-transcription/README.md +40 -0
  439. data/tracks/php/exercises/robot-name/README.md +37 -0
  440. data/tracks/php/exercises/robot-simulator/README.md +49 -0
  441. data/tracks/php/exercises/roman-numerals/README.md +64 -0
  442. data/tracks/php/exercises/scrabble-score/README.md +59 -0
  443. data/tracks/php/exercises/sieve/README.md +49 -0
  444. data/tracks/php/exercises/space-age/README.md +39 -0
  445. data/tracks/php/exercises/sum-of-multiples/README.md +33 -0
  446. data/tracks/php/exercises/triangle/README.md +41 -0
  447. data/tracks/php/exercises/trinary/README.md +43 -0
  448. data/tracks/php/exercises/variable-length-quantity/README.md +54 -0
  449. data/tracks/php/exercises/word-count/README.md +34 -0
  450. data/tracks/php/exercises/wordy/README.md +78 -0
  451. data/tracks/rust/exercises/grains/tests/grains.rs +0 -1
  452. data/tracks/sml/config/exercise_readme.go.tmpl +16 -0
  453. data/tracks/sml/exercises/accumulate/README.md +49 -0
  454. data/tracks/sml/exercises/allergies/README.md +51 -0
  455. data/tracks/sml/exercises/anagram/README.md +27 -0
  456. data/tracks/sml/exercises/binary/README.md +49 -0
  457. data/tracks/sml/exercises/flatten-array/README.md +32 -0
  458. data/tracks/sml/exercises/hamming/README.md +56 -0
  459. data/tracks/sml/exercises/nth-prime/README.md +29 -0
  460. data/tracks/sml/exercises/raindrops/README.md +38 -0
  461. metadata +433 -4
  462. data/tracks/perl5/exercises/phone-number/cases.json +0 -44
  463. data/tracks/perl5/exercises/phone-number/phone.t +0 -43
@@ -0,0 +1,50 @@
1
+ # Sublist
2
+
3
+ Given two lists determine if the first list is contained within the second
4
+ list, if the second list is contained within the first list, if both lists are
5
+ contained within each other or if none of these are true.
6
+
7
+ Specifically, a list A is a sublist of list B if by dropping 0 or more elements
8
+ from the front of B and 0 or more elements from the back of B you get a list
9
+ that's completely equal to A.
10
+
11
+ Examples:
12
+
13
+ * A = [1, 2, 3], B = [1, 2, 3, 4, 5], A is a sublist of B
14
+ * A = [3, 4, 5], B = [1, 2, 3, 4, 5], A is a sublist of B
15
+ * A = [3, 4], B = [1, 2, 3, 4, 5], A is a sublist of B
16
+ * A = [1, 2, 3], B = [1, 2, 3], A is equal to B
17
+ * A = [1, 2, 3, 4, 5], B = [2, 3, 4], A is a superlist of B
18
+ * A = [1, 2, 4], B = [1, 2, 3, 4, 5], A is not a superlist of, sublist of or equal to B
19
+
20
+ ## Setup
21
+
22
+ Go through the setup instructions for ECMAScript to
23
+ install the necessary dependencies:
24
+
25
+ http://exercism.io/languages/ecmascript
26
+
27
+ ## Requirements
28
+
29
+ Install assignment dependencies:
30
+
31
+ ```bash
32
+ $ npm install
33
+ ```
34
+
35
+ ## Making the test suite pass
36
+
37
+ Execute the tests with:
38
+
39
+ ```bash
40
+ $ npm test
41
+ ```
42
+
43
+ In the test suites all tests but the first have been skipped.
44
+
45
+ Once you get a test passing, you can enable the next one by
46
+ changing `xtest` to `test`.
47
+
48
+
49
+ ## Submitting Incomplete Solutions
50
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,30 @@
1
+ class List {
2
+
3
+ constructor(list = []) {
4
+ this.list = list;
5
+ }
6
+
7
+ compare(other) {
8
+ return {
9
+ '-1': isSublist(other.list, this.list)
10
+ ? 'SUBLIST'
11
+ : 'UNEQUAL',
12
+ '0': isSublist(other.list, this.list)
13
+ ? 'EQUAL'
14
+ : 'UNEQUAL',
15
+ '1': isSublist(this.list, other.list)
16
+ ? 'SUPERLIST'
17
+ : 'UNEQUAL'
18
+ }[lengthDiff(this, other)];
19
+ }
20
+ }
21
+
22
+ function lengthDiff(one, two){
23
+ return String(Math.sign(one.list.length - two.list.length));
24
+ }
25
+
26
+ function isSublist(one, two){
27
+ return one.join().match(two.join());
28
+ }
29
+
30
+ export default List;
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "xecmascript",
3
+ "version": "0.0.0",
4
+ "description": "Exercism exercises in ECMAScript 6.",
5
+ "author": "Katrina Owen",
6
+ "private": true,
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/exercism/xecmascript"
10
+ },
11
+ "devDependencies": {
12
+ "babel-jest": "^20.0.1",
13
+ "babel-plugin-transform-builtin-extend": "^1.1.2",
14
+ "babel-preset-env": "^1.4.0",
15
+ "eslint": "^3.19.0",
16
+ "eslint-config-airbnb": "^15.0.1",
17
+ "eslint-plugin-import": "^2.2.0",
18
+ "eslint-plugin-jsx-a11y": "^5.0.1",
19
+ "eslint-plugin-react": "^7.0.1",
20
+ "jest": "^20.0.1"
21
+ },
22
+ "jest": {
23
+ "modulePathIgnorePatterns": [
24
+ "package.json"
25
+ ]
26
+ },
27
+ "babel": {
28
+ "presets": [
29
+ "env"
30
+ ],
31
+ "plugins": [
32
+ [
33
+ "babel-plugin-transform-builtin-extend",
34
+ {
35
+ "globals": [
36
+ "Error"
37
+ ]
38
+ }
39
+ ]
40
+ ]
41
+ },
42
+ "scripts": {
43
+ "test": "jest --no-cache ./*",
44
+ "watch": "jest --no-cache --watch ./*",
45
+ "lint": "eslint .",
46
+ "lint-test": "eslint . && jest --no-cache ./* "
47
+ },
48
+ "eslintConfig": {
49
+ "parserOptions": {
50
+ "ecmaVersion": 6,
51
+ "sourceType": "module"
52
+ },
53
+ "env": {
54
+ "es6": true,
55
+ "node": true,
56
+ "jest": true
57
+ },
58
+ "extends": "airbnb",
59
+ "rules": {
60
+ "import/no-unresolved": "off",
61
+ "import/extensions": "off"
62
+ }
63
+ },
64
+ "licenses": [
65
+ "MIT"
66
+ ],
67
+ "dependencies": {}
68
+ }
69
+
@@ -0,0 +1,126 @@
1
+ import List from './sublist';
2
+
3
+
4
+ describe('sublist', () => {
5
+
6
+ test('two empty lists are equal', () => {
7
+ const listOne = new List();
8
+ const listTwo = new List();
9
+
10
+ expect(listOne.compare(listTwo)).toEqual('EQUAL');
11
+ });
12
+
13
+ xtest('an empty list is a sublist of a non-empty list', () => {
14
+ const listOne = new List();
15
+ const listTwo = new List([1, 2, 3]);
16
+
17
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
18
+ });
19
+
20
+ xtest('non empty list contains empty list', () => {
21
+ const listOne = new List([1, 2, 3]);
22
+ const listTwo = new List();
23
+
24
+ expect(listOne.compare(listTwo)).toEqual('SUPERLIST');
25
+ });
26
+
27
+ xtest('a non-empty list equals itself', () => {
28
+ const listOne = new List([1, 2, 3]);
29
+ const listTwo = new List([1, 2, 3]);
30
+
31
+ expect(listOne.compare(listTwo)).toEqual('EQUAL');
32
+ });
33
+
34
+ xtest('two different lists are unequal', () => {
35
+ const listOne = new List([1, 2, 3]);
36
+ const listTwo = new List([2, 3, 4]);
37
+
38
+ expect(listOne.compare(listTwo)).toEqual('UNEQUAL');
39
+ });
40
+
41
+ xtest('false start', () => {
42
+ const listOne = new List([1, 2, 5]);
43
+ const listTwo = new List([0, 1, 2, 3, 1, 2, 5, 6]);
44
+
45
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
46
+
47
+ });
48
+
49
+ xtest('consecutive', () => {
50
+ const listOne = new List([1, 1, 2]);
51
+ const listTwo = new List([0, 1, 1, 1, 2, 1, 2]);
52
+
53
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
54
+ });
55
+
56
+ xtest('sublist at start', () => {
57
+ const listOne = new List([0, 1, 2]);
58
+ const listTwo = new List([0, 1, 2, 3, 4, 5]);
59
+
60
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
61
+ });
62
+
63
+ xtest('sublist in middle', () => {
64
+ const listOne = new List([2, 3, 4]);
65
+ const listTwo = new List([0, 1, 2, 3, 4, 5]);
66
+
67
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
68
+ });
69
+
70
+ xtest('sublist at end', () => {
71
+ const listOne = new List([3, 4, 5]);
72
+ const listTwo = new List([0, 1, 2, 3, 4, 5]);
73
+
74
+ expect(listOne.compare(listTwo)).toEqual('SUBLIST');
75
+ });
76
+
77
+ xtest('at start of superlist', () => {
78
+ const listOne = new List([0, 1, 2, 3, 4, 5]);
79
+ const listTwo = new List([0, 1, 2]);
80
+
81
+ expect(listOne.compare(listTwo)).toEqual('SUPERLIST');
82
+ });
83
+
84
+ xtest('in middle of superlist', () => {
85
+ const listOne = new List([0, 1, 2, 3, 4, 5]);
86
+ const listTwo = new List([2, 3]);
87
+
88
+ expect(listOne.compare(listTwo)).toEqual('SUPERLIST');
89
+ });
90
+
91
+ xtest('at end of superlist', () => {
92
+ const listOne = new List([0, 1, 2, 3, 4, 5]);
93
+ const listTwo = new List([3, 4, 5]);
94
+
95
+ expect(listOne.compare(listTwo)).toEqual('SUPERLIST');
96
+ });
97
+
98
+ xtest('first list missing element from second list', () => {
99
+ const listOne = new List([1, 3]);
100
+ const listTwo = new List([1, 2, 3]);
101
+
102
+ expect(listOne.compare(listTwo)).toEqual('UNEQUAL');
103
+ });
104
+
105
+ xtest('second list missing element from first list', () => {
106
+ const listOne = new List([1, 2, 3]);
107
+ const listTwo = new List([1, 3]);
108
+
109
+ expect(listOne.compare(listTwo)).toEqual('UNEQUAL');
110
+ });
111
+
112
+ xtest('order matters to a list', () => {
113
+ const listOne = new List([1, 2, 3]);
114
+ const listTwo = new List([3, 2, 1]);
115
+
116
+ expect(listOne.compare(listTwo)).toEqual('UNEQUAL');
117
+ });
118
+
119
+ xtest('same digits but different numbers', () => {
120
+ const listOne = new List([1, 0, 1]);
121
+ const listTwo = new List([10, 1]);
122
+
123
+ expect(listOne.compare(listTwo)).toEqual('UNEQUAL');
124
+ });
125
+
126
+ });
@@ -0,0 +1,48 @@
1
+ # Sum Of Multiples
2
+
3
+ Given a number, find the sum of all the multiples of particular numbers up to
4
+ but not including that number.
5
+
6
+ If we list all the natural numbers up to but not including 20 that are
7
+ multiples of either 3 or 5, we get 3, 5, 6 and 9, 10, 12, 15, and 18.
8
+
9
+ The sum of these multiples is 78.
10
+
11
+ Given a number, find the sum of the multiples of a given set of numbers,
12
+ up to but not including that number.
13
+
14
+ ## Setup
15
+
16
+ Go through the setup instructions for ECMAScript to
17
+ install the necessary dependencies:
18
+
19
+ http://exercism.io/languages/ecmascript
20
+
21
+ ## Requirements
22
+
23
+ Install assignment dependencies:
24
+
25
+ ```bash
26
+ $ npm install
27
+ ```
28
+
29
+ ## Making the test suite pass
30
+
31
+ Execute the tests with:
32
+
33
+ ```bash
34
+ $ npm test
35
+ ```
36
+
37
+ In the test suites all tests but the first have been skipped.
38
+
39
+ Once you get a test passing, you can enable the next one by
40
+ changing `xtest` to `test`.
41
+
42
+
43
+ ## Source
44
+
45
+ A variation on Problem 1 at Project Euler [http://projecteuler.net/problem=1](http://projecteuler.net/problem=1)
46
+
47
+ ## Submitting Incomplete Solutions
48
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,56 @@
1
+ # Triangle
2
+
3
+ Determine if a triangle is equilateral, isosceles, or scalene.
4
+
5
+ An _equilateral_ triangle has all three sides the same length.<br/>
6
+ An _isosceles_ triangle has at least two sides the same length. (It is sometimes
7
+ specified as having exactly two sides the same length, but for the purposes of
8
+ this exercise we'll say at least two.)<br/>
9
+ A _scalene_ triangle has all sides of different lengths.
10
+
11
+ ## Note
12
+
13
+ For a shape to be a triangle at all, all sides have to be of length > 0, and
14
+ the sum of the lengths of any two sides must be greater than or equal to the
15
+ length of the third side. See [Triangle Inequality](https://en.wikipedia.org/wiki/Triangle_inequality).
16
+
17
+ ## Dig Deeper
18
+
19
+ The case where the sum of the lengths of two sides _equals_ that of the
20
+ third is known as a _degenerate_ triangle - it has zero area and looks like
21
+ a single line. Feel free to add your own code/tests to check for degenerate triangles.
22
+ ## Setup
23
+
24
+ Go through the setup instructions for ECMAScript to
25
+ install the necessary dependencies:
26
+
27
+ http://exercism.io/languages/ecmascript
28
+
29
+ ## Requirements
30
+
31
+ Install assignment dependencies:
32
+
33
+ ```bash
34
+ $ npm install
35
+ ```
36
+
37
+ ## Making the test suite pass
38
+
39
+ Execute the tests with:
40
+
41
+ ```bash
42
+ $ npm test
43
+ ```
44
+
45
+ In the test suites all tests but the first have been skipped.
46
+
47
+ Once you get a test passing, you can enable the next one by
48
+ changing `xtest` to `test`.
49
+
50
+
51
+ ## Source
52
+
53
+ The Ruby Koans triangle project, parts 1 & 2 [http://rubykoans.com](http://rubykoans.com)
54
+
55
+ ## Submitting Incomplete Solutions
56
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,58 @@
1
+ # Trinary
2
+
3
+ Convert a trinary number, represented as a string (e.g. '102012'), to its
4
+ decimal equivalent using first principles.
5
+
6
+ The program should consider strings specifying an invalid trinary as the
7
+ value 0.
8
+
9
+ Trinary numbers contain three symbols: 0, 1, and 2.
10
+
11
+ The last place in a trinary number is the 1's place. The second to last
12
+ is the 3's place, the third to last is the 9's place, etc.
13
+
14
+ ```bash
15
+ # "102012"
16
+ 1 0 2 0 1 2 # the number
17
+ 1*3^5 + 0*3^4 + 2*3^3 + 0*3^2 + 1*3^1 + 2*3^0 # the value
18
+ 243 + 0 + 54 + 0 + 3 + 2 = 302
19
+ ```
20
+
21
+ If your language provides a method in the standard library to perform the
22
+ conversion, pretend it doesn't exist and implement it yourself.
23
+
24
+ ## Setup
25
+
26
+ Go through the setup instructions for ECMAScript to
27
+ install the necessary dependencies:
28
+
29
+ http://exercism.io/languages/ecmascript
30
+
31
+ ## Requirements
32
+
33
+ Install assignment dependencies:
34
+
35
+ ```bash
36
+ $ npm install
37
+ ```
38
+
39
+ ## Making the test suite pass
40
+
41
+ Execute the tests with:
42
+
43
+ ```bash
44
+ $ npm test
45
+ ```
46
+
47
+ In the test suites all tests but the first have been skipped.
48
+
49
+ Once you get a test passing, you can enable the next one by
50
+ changing `xtest` to `test`.
51
+
52
+
53
+ ## Source
54
+
55
+ All of Computer Science [http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-](http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-)
56
+
57
+ ## Submitting Incomplete Solutions
58
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,66 @@
1
+ # Two Bucket
2
+
3
+ Given two buckets of different size, demonstrate how to measure an exact number of liters by strategically transferring liters of fluid between the buckets.
4
+
5
+ Since this mathematical problem is fairly subject to interpretation / individual approach, the tests have been written specifically to expect one overarching solution.
6
+
7
+ To help, the tests provide you with which bucket to fill first. That means, when starting with the larger bucket full, you are NOT allowed at any point to have the smaller bucket full and the larger bucket empty (aka, the opposite starting point); that would defeat the purpose of comparing both approaches!
8
+
9
+ Your program will take as input:
10
+ - the size of bucket one, passed as a numeric value
11
+ - the size of bucket two, passed as a numeric value
12
+ - the desired number of liters to reach, passed as a numeric value
13
+ - which bucket to fill first, passed as a String (either 'one' or 'two')
14
+
15
+ Your program should determine:
16
+ - the total number of "moves" it should take to reach the desired number of liters, including the first fill - expects a numeric value
17
+ - which bucket should end up with the desired number of liters (let's say this is bucket A) - expects a String (either 'one' or 'two')
18
+ - how many liters are left in the other bucket (bucket B) - expects a numeric value
19
+
20
+ Note: any time a change is made to either or both buckets counts as one (1) move.
21
+
22
+ Example:
23
+ Bucket one can hold up to 7 liters, and bucket two can hold up to 11 liters. Let's say bucket one, at a given step, is holding 7 liters, and bucket two is holding 8 liters (7,8). If you empty bucket one and make no change to bucket two, leaving you with 0 liters and 8 liters respectively (0,8), that counts as one "move". Instead, if you had poured from bucket one into bucket two until bucket two was full, leaving you with 4 liters in bucket one and 11 liters in bucket two (4,11), that would count as only one "move" as well.
24
+
25
+ To conclude, the only valid moves are:
26
+ - pouring from one bucket to another
27
+ - emptying one bucket and doing nothing to the other
28
+ - filling one bucket and doing nothing to the other
29
+
30
+ Written with <3 at [Fullstack Academy](http://www.fullstackacademy.com/) by [Lindsay](http://lindsaylevine.com).
31
+
32
+ ## Setup
33
+
34
+ Go through the setup instructions for ECMAScript to
35
+ install the necessary dependencies:
36
+
37
+ http://exercism.io/languages/ecmascript
38
+
39
+ ## Requirements
40
+
41
+ Install assignment dependencies:
42
+
43
+ ```bash
44
+ $ npm install
45
+ ```
46
+
47
+ ## Making the test suite pass
48
+
49
+ Execute the tests with:
50
+
51
+ ```bash
52
+ $ npm test
53
+ ```
54
+
55
+ In the test suites all tests but the first have been skipped.
56
+
57
+ Once you get a test passing, you can enable the next one by
58
+ changing `xtest` to `test`.
59
+
60
+
61
+ ## Source
62
+
63
+ Water Pouring Problem [http://demonstrations.wolfram.com/WaterPouringProblem/](http://demonstrations.wolfram.com/WaterPouringProblem/)
64
+
65
+ ## Submitting Incomplete Solutions
66
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.