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
@@ -49,6 +49,7 @@ foreach(exercise
49
49
  queen-attack
50
50
  allergies
51
51
  atbash-cipher
52
+ bracket-push
52
53
  )
53
54
  set(exercise_dir exercises/${exercise})
54
55
  travis_fixup(${exercise})
@@ -306,6 +306,14 @@
306
306
  "strings",
307
307
  "algorithms"
308
308
  ]
309
+ },
310
+ {
311
+ "difficulty": 3,
312
+ "slug": "bracket-push",
313
+ "topics": [
314
+ "pattern matching",
315
+ "stacks"
316
+ ]
309
317
  }
310
318
  ]
311
319
  }
@@ -0,0 +1,52 @@
1
+ # Get the exercise name from the current directory
2
+ get_filename_component(exercise ${CMAKE_CURRENT_SOURCE_DIR} NAME)
3
+
4
+ # Basic CMake project
5
+ cmake_minimum_required(VERSION 2.8.11)
6
+
7
+ # Name the project after the exercise
8
+ project(${exercise} CXX)
9
+
10
+ # Locate Boost libraries: unit_test_framework, date_time and regex
11
+ set(Boost_USE_STATIC_LIBS ON)
12
+ set(Boost_USE_MULTITHREADED ON)
13
+ set(Boost_USE_STATIC_RUNTIME OFF)
14
+ find_package(Boost 1.59 REQUIRED COMPONENTS unit_test_framework date_time regex)
15
+
16
+ # Enable C++11 features on gcc/clang
17
+ if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(GNU|Clang)")
18
+ set(CMAKE_CXX_FLAGS "-std=c++11")
19
+ endif()
20
+
21
+ # Configure to run all the tests?
22
+ if(${EXERCISM_RUN_ALL_TESTS})
23
+ add_definitions(-DEXERCISM_RUN_ALL_TESTS)
24
+ endif()
25
+
26
+ # Get a source filename from the exercise name by replacing -'s with _'s
27
+ string(REPLACE "-" "_" file ${exercise})
28
+
29
+ # Implementation could be only a header
30
+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.cpp)
31
+ set(exercise_cpp ${file}.cpp)
32
+ else()
33
+ set(exercise_cpp "")
34
+ endif()
35
+
36
+ # Build executable from sources and headers
37
+ add_executable(${exercise} ${file}_test.cpp ${exercise_cpp} ${file}.h)
38
+
39
+ # We need boost includes
40
+ target_include_directories(${exercise} PRIVATE ${Boost_INCLUDE_DIRS})
41
+
42
+ # We need boost libraries
43
+ target_link_libraries(${exercise} ${Boost_LIBRARIES})
44
+
45
+ # Tell MSVC not to warn us about unchecked iterators in debug builds
46
+ if(${MSVC})
47
+ set_target_properties(${exercise} PROPERTIES
48
+ COMPILE_DEFINITIONS_DEBUG _SCL_SECURE_NO_WARNINGS)
49
+ endif()
50
+
51
+ # Run the tests on every build
52
+ add_custom_command(TARGET ${exercise} POST_BUILD COMMAND ${exercise})
@@ -0,0 +1,75 @@
1
+ #include "bracket_push.h"
2
+ #define BOOST_TEST_MAIN
3
+ #include <boost/test/unit_test.hpp>
4
+
5
+ BOOST_AUTO_TEST_CASE(paired_square_brackets)
6
+ {
7
+ BOOST_REQUIRE(bracket_push::check("[]"));
8
+ }
9
+
10
+ #if defined(EXERCISM_RUN_ALL_TESTS)
11
+ BOOST_AUTO_TEST_CASE(empty_string)
12
+ {
13
+ BOOST_REQUIRE(bracket_push::check(""));
14
+ }
15
+
16
+ BOOST_AUTO_TEST_CASE(unpaired_brackets)
17
+ {
18
+ BOOST_REQUIRE(!bracket_push::check("[["));
19
+ }
20
+
21
+ BOOST_AUTO_TEST_CASE(wrong_ordered_brackets)
22
+ {
23
+ BOOST_REQUIRE(!bracket_push::check("}{"));
24
+ }
25
+
26
+ BOOST_AUTO_TEST_CASE(wrong_closing_bracket)
27
+ {
28
+ BOOST_REQUIRE(!bracket_push::check("{]"));
29
+ }
30
+
31
+ BOOST_AUTO_TEST_CASE(paired_with_whitespace)
32
+ {
33
+ BOOST_REQUIRE(bracket_push::check("{ }"));
34
+ }
35
+
36
+ BOOST_AUTO_TEST_CASE(simple_nested_brackets)
37
+ {
38
+ BOOST_REQUIRE(bracket_push::check("{[]}"));
39
+ }
40
+
41
+ BOOST_AUTO_TEST_CASE(several_paired_brackets)
42
+ {
43
+ BOOST_REQUIRE(bracket_push::check("{}[]"));
44
+ }
45
+
46
+ BOOST_AUTO_TEST_CASE(paired_nested_brackets)
47
+ {
48
+ BOOST_REQUIRE(bracket_push::check("([{}({}[])])"));
49
+ }
50
+
51
+ BOOST_AUTO_TEST_CASE(unopened_closing_brackets)
52
+ {
53
+ BOOST_REQUIRE(!bracket_push::check("{[)][]}"));
54
+ }
55
+
56
+ BOOST_AUTO_TEST_CASE(unpaired_nested_brackets)
57
+ {
58
+ BOOST_REQUIRE(!bracket_push::check("([{])"));
59
+ }
60
+
61
+ BOOST_AUTO_TEST_CASE(paired_wrong_nested_brackets)
62
+ {
63
+ BOOST_REQUIRE(!bracket_push::check("[({]})"));
64
+ }
65
+
66
+ BOOST_AUTO_TEST_CASE(math_expression)
67
+ {
68
+ BOOST_REQUIRE(bracket_push::check("(((185 + 223.85) * 15) - 543)/2"));
69
+ }
70
+
71
+ BOOST_AUTO_TEST_CASE(complex_latex_expression)
72
+ {
73
+ BOOST_REQUIRE(bracket_push::check("\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)"));
74
+ }
75
+ #endif
@@ -0,0 +1,28 @@
1
+ #include "bracket_push.h"
2
+ #include <stack>
3
+
4
+ using namespace std;
5
+
6
+ namespace bracket_push {
7
+
8
+ bool check(string const& expression)
9
+ {
10
+ const string open("({[");
11
+ const string close(")}]");
12
+ stack<char> st;
13
+ for (const char c : expression) {
14
+ if (open.find(c) != string::npos) {
15
+ st.push(c);
16
+ }
17
+ else if (close.find(c) != string::npos) {
18
+ if (st.empty() || st.top() != open[close.find(c)]) {
19
+ return false;
20
+ }
21
+ st.pop();
22
+ }
23
+ }
24
+ return st.empty();
25
+ }
26
+
27
+ }
28
+
@@ -0,0 +1,13 @@
1
+ #if !defined(BRACKET_PUSH_H)
2
+ #define BRACKET_PUSH_H
3
+
4
+ #include <string>
5
+
6
+ namespace bracket_push
7
+ {
8
+
9
+ bool check(std::string const& expression);
10
+
11
+ }
12
+
13
+ #endif
@@ -6,301 +6,399 @@
6
6
  "test_pattern": ".*[.]spec[.]js$",
7
7
  "exercises": [
8
8
  {
9
+ "uuid": "9ce0f408-6d7b-4466-a390-75aeaf9492f2",
9
10
  "slug": "hello-world",
11
+ "core": false,
12
+ "unlocked_by": null,
10
13
  "difficulty": 1,
11
14
  "topics": [
12
-
13
15
  ]
14
16
  },
15
17
  {
18
+ "uuid": "7c8294ee-5924-4bf8-a72f-31d0e2d7d9a0",
16
19
  "slug": "leap",
20
+ "core": false,
21
+ "unlocked_by": null,
17
22
  "difficulty": 1,
18
23
  "topics": [
19
-
20
24
  ]
21
25
  },
22
26
  {
27
+ "uuid": "d773c4ef-c09e-40e4-a7fe-01456cb4a12a",
23
28
  "slug": "hamming",
29
+ "core": false,
30
+ "unlocked_by": null,
24
31
  "difficulty": 1,
25
32
  "topics": [
26
-
27
33
  ]
28
34
  },
29
35
  {
36
+ "uuid": "342974d6-9083-4754-a6c5-ed1e19e40ec5",
30
37
  "slug": "rna-transcription",
38
+ "core": false,
39
+ "unlocked_by": null,
31
40
  "difficulty": 1,
32
41
  "topics": [
33
-
34
42
  ]
35
43
  },
36
44
  {
45
+ "uuid": "a5bf36f0-5d3c-41d4-8d54-e37e484e59cd",
37
46
  "slug": "bob",
47
+ "core": false,
48
+ "unlocked_by": null,
38
49
  "difficulty": 1,
39
50
  "topics": [
40
-
41
51
  ]
42
52
  },
43
53
  {
54
+ "uuid": "fd7b62d4-266b-4e84-a526-bf3d47901216",
44
55
  "slug": "gigasecond",
56
+ "core": false,
57
+ "unlocked_by": null,
45
58
  "difficulty": 1,
46
59
  "topics": [
47
-
48
60
  ]
49
61
  },
50
62
  {
63
+ "uuid": "c6691fd2-e10d-47df-acbf-3adeac5a2f89",
51
64
  "slug": "perfect-numbers",
65
+ "core": false,
66
+ "unlocked_by": null,
52
67
  "difficulty": 1,
53
68
  "topics": [
54
-
55
69
  ]
56
70
  },
57
71
  {
72
+ "uuid": "0073ff9a-cd6a-43cf-b8bf-4d5d8117b81b",
58
73
  "slug": "word-count",
74
+ "core": false,
75
+ "unlocked_by": null,
59
76
  "difficulty": 1,
60
77
  "topics": [
61
-
62
78
  ]
63
79
  },
64
80
  {
81
+ "uuid": "da5b2b34-a1a7-4970-81f9-4665d875398b",
65
82
  "slug": "pangram",
83
+ "core": false,
84
+ "unlocked_by": null,
66
85
  "difficulty": 1,
67
86
  "topics": [
68
-
69
87
  ]
70
88
  },
71
89
  {
90
+ "uuid": "6573f168-d8fc-4ccf-a864-1a61f432fae1",
72
91
  "slug": "beer-song",
92
+ "core": false,
93
+ "unlocked_by": null,
73
94
  "difficulty": 1,
74
95
  "topics": [
75
-
76
96
  ]
77
97
  },
78
98
  {
99
+ "uuid": "82775adb-eabe-4d44-91f5-4080b8834a4a",
79
100
  "slug": "phone-number",
101
+ "core": false,
102
+ "unlocked_by": null,
80
103
  "difficulty": 1,
81
104
  "topics": [
82
-
83
105
  ]
84
106
  },
85
107
  {
108
+ "uuid": "309fa4f1-e03a-4ab2-b371-cdf742501cf7",
86
109
  "slug": "anagram",
110
+ "core": false,
111
+ "unlocked_by": null,
87
112
  "difficulty": 1,
88
113
  "topics": [
89
-
90
114
  ]
91
115
  },
92
116
  {
117
+ "uuid": "62672dc7-e827-4c2e-a282-d6df45b60bbd",
93
118
  "slug": "food-chain",
119
+ "core": false,
120
+ "unlocked_by": null,
94
121
  "difficulty": 1,
95
122
  "topics": [
96
-
97
123
  ]
98
124
  },
99
125
  {
126
+ "uuid": "64637322-33bc-401f-8cec-1f9810a41f75",
100
127
  "slug": "grade-school",
128
+ "core": false,
129
+ "unlocked_by": null,
101
130
  "difficulty": 1,
102
131
  "topics": [
103
-
104
132
  ]
105
133
  },
106
134
  {
135
+ "uuid": "03f4dfea-e6db-4754-b2c8-ca06c8b81ef1",
107
136
  "slug": "robot-name",
137
+ "core": false,
138
+ "unlocked_by": null,
108
139
  "difficulty": 1,
109
140
  "topics": [
110
-
111
141
  ]
112
142
  },
113
143
  {
144
+ "uuid": "db16804b-0f63-445d-8beb-99e0f7218d66",
114
145
  "slug": "etl",
146
+ "core": false,
147
+ "unlocked_by": null,
115
148
  "difficulty": 1,
116
149
  "topics": [
117
-
118
150
  ]
119
151
  },
120
152
  {
153
+ "uuid": "4be85b5e-6b13-11e7-907b-a6006ad3dba0",
154
+ "slug": "sublist",
155
+ "difficulty": 4,
156
+ "core": false,
157
+ "unlocked_by": null,
158
+ "topics": [
159
+ "lists"
160
+ ]
161
+ },
162
+ {
163
+ "uuid": "d9d757ed-ebe6-4d4a-aa73-f6834221cd54",
121
164
  "slug": "space-age",
165
+ "core": false,
166
+ "unlocked_by": null,
122
167
  "difficulty": 1,
123
168
  "topics": [
124
-
125
169
  ]
126
170
  },
127
171
  {
172
+ "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13",
128
173
  "slug": "grains",
174
+ "core": false,
175
+ "unlocked_by": null,
129
176
  "difficulty": 1,
130
177
  "topics": [
131
-
132
178
  ]
133
179
  },
134
180
  {
181
+ "uuid": "ed3ca73a-a0f0-46b8-8013-8b6d20758c8f",
135
182
  "slug": "triangle",
183
+ "core": false,
184
+ "unlocked_by": null,
136
185
  "difficulty": 1,
137
186
  "topics": [
138
-
139
187
  ]
140
188
  },
141
189
  {
190
+ "uuid": "4e0e2c30-be33-49b6-b196-213888a93a0c",
142
191
  "slug": "clock",
192
+ "core": false,
193
+ "unlocked_by": null,
143
194
  "difficulty": 1,
144
195
  "topics": [
145
-
146
196
  ]
147
197
  },
148
198
  {
199
+ "uuid": "127eccbd-3009-4a8f-95c1-7d8aeb608550",
149
200
  "slug": "diffie-hellman",
201
+ "core": false,
202
+ "unlocked_by": null,
150
203
  "difficulty": 3,
151
204
  "topics": [
152
205
  "Cryptography"
153
206
  ]
154
207
  },
155
208
  {
209
+ "uuid": "440d78d1-9dea-466f-9bd4-935eed067409",
156
210
  "slug": "acronym",
211
+ "core": false,
212
+ "unlocked_by": null,
157
213
  "difficulty": 1,
158
214
  "topics": [
159
-
160
215
  ]
161
216
  },
162
217
  {
218
+ "uuid": "11771d47-1109-4579-a62b-e0b8e9583485",
163
219
  "slug": "scrabble-score",
220
+ "core": false,
221
+ "unlocked_by": null,
164
222
  "difficulty": 1,
165
223
  "topics": [
166
-
167
224
  ]
168
225
  },
169
226
  {
227
+ "uuid": "2fc4f834-a51c-42b8-a4d9-5263229e7648",
170
228
  "slug": "roman-numerals",
229
+ "core": false,
230
+ "unlocked_by": null,
171
231
  "difficulty": 1,
172
232
  "topics": [
173
-
174
233
  ]
175
234
  },
176
235
  {
236
+ "uuid": "bf0b1f95-3425-4345-8a12-3a80d49b49c9",
177
237
  "slug": "circular-buffer",
238
+ "core": false,
239
+ "unlocked_by": null,
178
240
  "difficulty": 1,
179
241
  "topics": [
180
-
181
242
  ]
182
243
  },
183
244
  {
245
+ "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661",
184
246
  "slug": "prime-factors",
247
+ "core": false,
248
+ "unlocked_by": null,
185
249
  "difficulty": 1,
186
250
  "topics": [
187
-
188
251
  ]
189
252
  },
190
253
  {
254
+ "uuid": "f77ac2d1-cf3a-497d-bf04-b484a5a9cb37",
191
255
  "slug": "raindrops",
256
+ "core": false,
257
+ "unlocked_by": null,
192
258
  "difficulty": 1,
193
259
  "topics": [
194
-
195
260
  ]
196
261
  },
197
262
  {
263
+ "uuid": "9d33d21c-e695-427f-9f58-dd9498d61318",
198
264
  "slug": "allergies",
265
+ "core": false,
266
+ "unlocked_by": null,
199
267
  "difficulty": 1,
200
268
  "topics": [
201
-
202
269
  ]
203
270
  },
204
271
  {
272
+ "uuid": "8407f9d5-7a7e-40c8-aace-a6a8294ae5e9",
205
273
  "slug": "strain",
274
+ "core": false,
275
+ "unlocked_by": null,
206
276
  "difficulty": 1,
207
277
  "topics": [
208
-
209
278
  ]
210
279
  },
211
280
  {
281
+ "uuid": "a70e6027-eebe-43a1-84a6-763faa736169",
212
282
  "slug": "atbash-cipher",
283
+ "core": false,
284
+ "unlocked_by": null,
213
285
  "difficulty": 1,
214
286
  "topics": [
215
-
216
287
  ]
217
288
  },
218
289
  {
290
+ "uuid": "6ebe247c-3d11-48b7-8e6f-39f98359d233",
219
291
  "slug": "accumulate",
292
+ "core": false,
293
+ "unlocked_by": null,
220
294
  "difficulty": 1,
221
295
  "topics": [
222
-
223
296
  ]
224
297
  },
225
298
  {
299
+ "uuid": "4dc30879-a589-4dd3-b7b6-22261f9d1520",
226
300
  "slug": "crypto-square",
301
+ "core": false,
302
+ "unlocked_by": null,
227
303
  "difficulty": 1,
228
304
  "topics": [
229
-
230
305
  ]
231
306
  },
232
307
  {
308
+ "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f",
233
309
  "slug": "sieve",
310
+ "core": false,
311
+ "unlocked_by": null,
234
312
  "difficulty": 1,
235
313
  "topics": [
236
-
237
314
  ]
238
315
  },
239
316
  {
317
+ "uuid": "62d60b42-93bc-4de9-90d1-1ca18a847812",
240
318
  "slug": "simple-cipher",
319
+ "core": false,
320
+ "unlocked_by": null,
241
321
  "difficulty": 1,
242
322
  "topics": [
243
-
244
323
  ]
245
324
  },
246
325
  {
326
+ "uuid": "28872cc9-f1ef-487f-9a79-6bf7983148bf",
247
327
  "slug": "luhn",
328
+ "core": false,
329
+ "unlocked_by": null,
248
330
  "difficulty": 1,
249
331
  "topics": [
250
-
251
332
  ]
252
333
  },
253
334
  {
335
+ "uuid": "16e25a38-7ce3-4ccd-b2f0-1550b837fe9b",
254
336
  "slug": "pig-latin",
337
+ "core": false,
338
+ "unlocked_by": null,
255
339
  "difficulty": 1,
256
340
  "topics": [
257
-
258
341
  ]
259
342
  },
260
343
  {
344
+ "uuid": "394755a3-c743-4b85-b9b8-387907f4e32d",
261
345
  "slug": "pythagorean-triplet",
346
+ "core": false,
347
+ "unlocked_by": null,
262
348
  "difficulty": 1,
263
349
  "topics": [
264
-
265
350
  ]
266
351
  },
267
352
  {
353
+ "uuid": "5178ae53-5364-46c9-bee3-70e6e8a8c2e3",
268
354
  "slug": "series",
355
+ "core": false,
356
+ "unlocked_by": null,
269
357
  "difficulty": 1,
270
358
  "topics": [
271
-
272
359
  ]
273
360
  },
274
361
  {
362
+ "uuid": "7dfa878c-83a6-48ef-9170-b6633d51d601",
275
363
  "slug": "difference-of-squares",
364
+ "core": false,
365
+ "unlocked_by": null,
276
366
  "difficulty": 1,
277
367
  "topics": [
278
-
279
368
  ]
280
369
  },
281
370
  {
371
+ "uuid": "74bbc9e3-edc5-41e0-84d7-5b2d98dd8370",
282
372
  "slug": "secret-handshake",
373
+ "core": false,
374
+ "unlocked_by": null,
283
375
  "difficulty": 1,
284
376
  "topics": [
285
-
286
377
  ]
287
378
  },
288
379
  {
380
+ "uuid": "ec60a578-8889-46a1-b7b8-306dbd8551d5",
289
381
  "slug": "linked-list",
382
+ "core": false,
383
+ "unlocked_by": null,
290
384
  "difficulty": 1,
291
385
  "topics": [
292
-
293
386
  ]
294
387
  },
295
388
  {
389
+ "uuid": "9131bdb8-2e0f-4526-b113-8a77712e7216",
296
390
  "slug": "wordy",
391
+ "core": false,
392
+ "unlocked_by": null,
297
393
  "difficulty": 1,
298
394
  "topics": [
299
-
300
395
  ]
301
396
  },
302
397
  {
398
+ "uuid": "1a6c4a3b-d5db-4a5a-b123-66cf085defe6",
303
399
  "slug": "flatten-array",
400
+ "core": false,
401
+ "unlocked_by": null,
304
402
  "difficulty": 5,
305
403
  "topics": [
306
404
  "Arrays",
@@ -308,28 +406,37 @@
308
406
  ]
309
407
  },
310
408
  {
409
+ "uuid": "1f84305d-ea76-4fe2-9858-3b53576d683d",
311
410
  "slug": "largest-series-product",
411
+ "core": false,
412
+ "unlocked_by": null,
312
413
  "difficulty": 1,
313
414
  "topics": [
314
-
315
415
  ]
316
416
  },
317
417
  {
418
+ "uuid": "13444eff-005a-405e-9737-7b64d99c1a61",
318
419
  "slug": "kindergarten-garden",
420
+ "core": false,
421
+ "unlocked_by": null,
319
422
  "difficulty": 1,
320
423
  "topics": [
321
-
322
424
  ]
323
425
  },
324
426
  {
427
+ "uuid": "7c569e5d-bb00-44b8-8adc-34253790c19b",
325
428
  "slug": "binary-search",
429
+ "core": false,
430
+ "unlocked_by": null,
326
431
  "difficulty": 1,
327
432
  "topics": [
328
-
329
433
  ]
330
434
  },
331
435
  {
436
+ "uuid": "7d9db056-5398-41b6-af3b-9707f5eb0dbc",
332
437
  "slug": "list-ops",
438
+ "core": false,
439
+ "unlocked_by": null,
333
440
  "difficulty": 5,
334
441
  "topics": [
335
442
  "Data structures",
@@ -338,139 +445,182 @@
338
445
  ]
339
446
  },
340
447
  {
448
+ "uuid": "6c4b4e25-c115-4789-9058-d28ab6ca0d26",
341
449
  "slug": "binary-search-tree",
450
+ "core": false,
451
+ "unlocked_by": null,
342
452
  "difficulty": 1,
343
453
  "topics": [
344
-
345
454
  ]
346
455
  },
347
456
  {
457
+ "uuid": "dd0b5e67-81f6-437e-8334-2ec0dfeb862a",
348
458
  "slug": "matrix",
459
+ "core": false,
460
+ "unlocked_by": null,
349
461
  "difficulty": 1,
350
462
  "topics": [
351
-
352
463
  ]
353
464
  },
354
465
  {
466
+ "uuid": "5174bd15-eee2-4b53-b3ee-ca3a8c958a31",
355
467
  "slug": "robot-simulator",
468
+ "core": false,
469
+ "unlocked_by": null,
356
470
  "difficulty": 1,
357
471
  "topics": [
358
-
359
472
  ]
360
473
  },
361
474
  {
475
+ "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3",
362
476
  "slug": "nth-prime",
477
+ "core": false,
478
+ "unlocked_by": null,
363
479
  "difficulty": 1,
364
480
  "topics": [
365
-
366
481
  ]
367
482
  },
368
483
  {
484
+ "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3",
369
485
  "slug": "palindrome-products",
486
+ "core": false,
487
+ "unlocked_by": null,
370
488
  "difficulty": 1,
371
489
  "topics": [
372
-
373
490
  ]
374
491
  },
375
492
  {
493
+ "uuid": "99493160-4673-402f-acda-62db5378148d",
376
494
  "slug": "pascals-triangle",
495
+ "core": false,
496
+ "unlocked_by": null,
377
497
  "difficulty": 1,
378
498
  "topics": [
379
-
380
499
  ]
381
500
  },
382
501
  {
502
+ "uuid": "12989bb3-c593-4f68-bea4-e2c5b76bc3c0",
383
503
  "slug": "say",
504
+ "core": false,
505
+ "unlocked_by": null,
384
506
  "difficulty": 1,
385
507
  "topics": [
386
-
387
508
  ]
388
509
  },
389
510
  {
511
+ "uuid": "75199d72-4cac-49ce-bffb-23fb659c57ae",
390
512
  "slug": "custom-set",
513
+ "core": false,
514
+ "unlocked_by": null,
391
515
  "difficulty": 1,
392
516
  "topics": [
393
-
394
517
  ]
395
518
  },
396
519
  {
520
+ "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45",
397
521
  "slug": "sum-of-multiples",
522
+ "core": false,
523
+ "unlocked_by": null,
398
524
  "difficulty": 1,
399
525
  "topics": [
400
-
401
526
  ]
402
527
  },
403
528
  {
529
+ "uuid": "007a4cd4-7324-4512-8905-ead0c78146f7",
404
530
  "slug": "queen-attack",
531
+ "core": false,
532
+ "unlocked_by": null,
405
533
  "difficulty": 1,
406
534
  "topics": [
407
-
408
535
  ]
409
536
  },
410
537
  {
538
+ "uuid": "a01aa48c-65c4-4b1f-b3d9-3ec7da2ef754",
411
539
  "slug": "saddle-points",
540
+ "core": false,
541
+ "unlocked_by": null,
412
542
  "difficulty": 1,
413
543
  "topics": [
414
-
415
544
  ]
416
545
  },
417
546
  {
547
+ "uuid": "24c197ee-d492-4083-8615-629cb4b836b2",
418
548
  "slug": "ocr-numbers",
549
+ "core": false,
550
+ "unlocked_by": null,
419
551
  "difficulty": 1,
420
552
  "topics": [
421
-
422
553
  ]
423
554
  },
424
555
  {
556
+ "uuid": "98617798-b49d-4d43-9f65-7131ee73d626",
425
557
  "slug": "meetup",
558
+ "core": false,
559
+ "unlocked_by": null,
426
560
  "difficulty": 1,
427
561
  "topics": [
428
-
429
562
  ]
430
563
  },
431
564
  {
565
+ "uuid": "4d456646-3a9b-4393-9558-6b30e5c1039c",
432
566
  "slug": "bracket-push",
567
+ "core": false,
568
+ "unlocked_by": null,
433
569
  "difficulty": 1,
434
570
  "topics": [
435
-
436
571
  ]
437
572
  },
438
573
  {
574
+ "uuid": "0bc6b478-40a8-47ab-889b-c403b922f7e5",
439
575
  "slug": "two-bucket",
576
+ "core": false,
577
+ "unlocked_by": null,
440
578
  "difficulty": 1,
441
579
  "topics": [
442
-
443
580
  ]
444
581
  },
445
582
  {
583
+ "uuid": "6a1eee0e-f8d4-446d-9c52-f31c3700af1b",
446
584
  "slug": "diamond",
585
+ "core": false,
586
+ "unlocked_by": null,
447
587
  "difficulty": 1,
448
588
  "topics": [
449
-
450
589
  ]
451
590
  },
452
591
  {
592
+ "uuid": "3df577af-2854-40ee-b211-9b608dbbad58",
453
593
  "slug": "isogram",
594
+ "core": false,
595
+ "unlocked_by": null,
454
596
  "difficulty": 1,
455
597
  "topics": [
456
-
457
598
  ]
458
599
  },
459
600
  {
601
+ "uuid": "d2d3cd13-b06c-4c24-9964-fb1554f70dd4",
460
602
  "slug": "all-your-base",
603
+ "core": false,
604
+ "unlocked_by": null,
461
605
  "difficulty": 1,
462
606
  "topics": [
463
-
464
607
  ]
465
608
  },
466
609
  {
610
+ "uuid": "2fa2c262-77ae-409b-bfd8-1d643faae772",
467
611
  "slug": "connect",
612
+ "core": false,
613
+ "unlocked_by": null,
468
614
  "difficulty": 7,
469
615
  "topics": [
616
+
470
617
  ]
471
618
  },
472
619
  {
620
+ "uuid": "8bafe6c4-9154-4037-9070-7f57f91d495a",
473
621
  "slug": "minesweeper",
622
+ "core": false,
623
+ "unlocked_by": null,
474
624
  "difficulty": 7,
475
625
  "topics": [
476
626
  "games",
@@ -480,23 +630,37 @@
480
630
  ]
481
631
  },
482
632
  {
633
+ "uuid": "a602bd33-69fc-4b67-a3d3-95198853095e",
483
634
  "slug": "alphametics",
635
+ "core": false,
636
+ "unlocked_by": null,
484
637
  "difficulty": 7,
485
638
  "topics": [
486
639
  "games",
487
640
  "algorithms"
488
641
  ]
642
+ },
643
+ {
644
+ "uuid": "0ba4d3b9-2519-49ac-bd93-f960aca6c11f",
645
+ "slug": "binary",
646
+ "deprecated": true
647
+ },
648
+ {
649
+ "uuid": "1acf1d2d-a25e-4576-94de-0470abc872d9",
650
+ "slug": "trinary",
651
+ "deprecated": true
652
+ },
653
+ {
654
+ "uuid": "8ed2c9fe-a13f-4313-abf9-125f351c85c9",
655
+ "slug": "hexadecimal",
656
+ "deprecated": true
657
+ },
658
+ {
659
+ "uuid": "dec66f89-39d0-4857-9679-a035cf4259d7",
660
+ "slug": "octal",
661
+ "deprecated": true
489
662
  }
490
663
  ],
491
- "deprecated": [
492
- "nucleotide-count",
493
- "point-mutations",
494
- "binary",
495
- "trinary",
496
- "hexadecimal",
497
- "octal"
498
- ],
499
664
  "foregone": [
500
-
501
665
  ]
502
666
  }