trackler 2.2.0.3 → 2.2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,33 @@
1
+ # Flatten Array
2
+
3
+ Take a nested list and return a single flattened list with all values except nil/null.
4
+
5
+ The challenge is to write a function that accepts an arbitrarily-deep nested list-like structure and returns a flattened structure without any nil/null values.
6
+
7
+ For Example
8
+
9
+ input: [1,[2,3,null,4],[null],5]
10
+
11
+ output: [1,2,3,4,5]
12
+
13
+
14
+ ## Resources
15
+
16
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
17
+ [resources](https://perl6.org/resources/) pages for information, tips, and
18
+ examples if you get stuck.
19
+
20
+ ## Running the tests
21
+
22
+ There is a test script included with the exercise; a file with the extension
23
+ `.t`. You can run the test script for the exercise by executing the command
24
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
25
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
26
+ tests marked as 'TODO'.
27
+
28
+ ## Source
29
+
30
+ Interview Question [https://reference.wolfram.com/language/ref/Flatten.html](https://reference.wolfram.com/language/ref/Flatten.html)
31
+
32
+ ## Submitting Incomplete Solutions
33
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,57 @@
1
+ # Grade School
2
+
3
+ Given students' names along with the grade that they are in, create a roster
4
+ for the school.
5
+
6
+ In the end, you should be able to:
7
+
8
+ - Add a student's name to the roster for a grade
9
+ - "Add Jim to grade 2."
10
+ - "OK."
11
+ - Get a list of all students enrolled in a grade
12
+ - "Which students are in grade 2?"
13
+ - "We've only got Jim just now."
14
+ - Get a sorted list of all students in all grades. Grades should sort
15
+ as 1, 2, 3, etc., and students within a grade should be sorted
16
+ alphabetically by name.
17
+ - "Who all is enrolled in school right now?"
18
+ - "Grade 1: Anna, Barb, and Charlie. Grade 2: Alex, Peter, and Zoe.
19
+ Grade 3…"
20
+
21
+ Note that all our students only have one name. (It's a small town, what
22
+ do you want?)
23
+
24
+
25
+ ## For bonus points
26
+
27
+ Did you get the tests passing and the code clean? If you want to, these
28
+ are some additional things you could try:
29
+
30
+ - If you're working in a language with mutable data structures and your
31
+ implementation allows outside code to mutate the school's internal DB
32
+ directly, see if you can prevent this. Feel free to introduce additional
33
+ tests.
34
+
35
+ Then please share your thoughts in a comment on the submission. Did this
36
+ experiment make the code better? Worse? Did you learn anything from it?
37
+
38
+ ## Resources
39
+
40
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
41
+ [resources](https://perl6.org/resources/) pages for information, tips, and
42
+ examples if you get stuck.
43
+
44
+ ## Running the tests
45
+
46
+ There is a test script included with the exercise; a file with the extension
47
+ `.t`. You can run the test script for the exercise by executing the command
48
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
49
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
50
+ tests marked as 'TODO'.
51
+
52
+ ## Source
53
+
54
+ A pairing session with Phil Battos at gSchool [http://gschool.it](http://gschool.it)
55
+
56
+ ## Submitting Incomplete Solutions
57
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,49 @@
1
+ # Grains
2
+
3
+ Calculate the number of grains of wheat on a chessboard given that the number
4
+ on each square doubles.
5
+
6
+ There once was a wise servant who saved the life of a prince. The king
7
+ promised to pay whatever the servant could dream up. Knowing that the
8
+ king loved chess, the servant told the king he would like to have grains
9
+ of wheat. One grain on the first square of a chess board. Two grains on
10
+ the next. Four on the third, and so on.
11
+
12
+ There are 64 squares on a chessboard.
13
+
14
+ Write code that shows:
15
+ - how many grains were on each square, and
16
+ - the total number of grains
17
+
18
+
19
+ ## For bonus points
20
+
21
+ Did you get the tests passing and the code clean? If you want to, these
22
+ are some additional things you could try:
23
+
24
+ - Optimize for speed.
25
+ - Optimize for readability.
26
+
27
+ Then please share your thoughts in a comment on the submission. Did this
28
+ experiment make the code better? Worse? Did you learn anything from it?
29
+
30
+ ## Resources
31
+
32
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
33
+ [resources](https://perl6.org/resources/) pages for information, tips, and
34
+ examples if you get stuck.
35
+
36
+ ## Running the tests
37
+
38
+ There is a test script included with the exercise; a file with the extension
39
+ `.t`. You can run the test script for the exercise by executing the command
40
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
41
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
42
+ tests marked as 'TODO'.
43
+
44
+ ## Source
45
+
46
+ JavaRanch Cattle Drive, exercise 6 [http://www.javaranch.com/grains.jsp](http://www.javaranch.com/grains.jsp)
47
+
48
+ ## Submitting Incomplete Solutions
49
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,36 @@
1
+ # Hello World
2
+
3
+ The classical introductory exercise. Just say "Hello, World!".
4
+
5
+ ["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
6
+ the traditional first program for beginning programming in a new language
7
+ or environment.
8
+
9
+ The objectives are simple:
10
+
11
+ - Write a function that returns the string "Hello, World!".
12
+ - Run the test suite and make sure that it succeeds.
13
+ - Submit your solution and check it at the website.
14
+
15
+ If everything goes well, you will be ready to fetch your first real exercise.
16
+
17
+ ## Resources
18
+
19
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
20
+ [resources](https://perl6.org/resources/) pages for information, tips, and
21
+ examples if you get stuck.
22
+
23
+ ## Running the tests
24
+
25
+ There is a test script included with the exercise; a file with the extension
26
+ `.t`. You can run the test script for the exercise by executing the command
27
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
28
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
29
+ tests marked as 'TODO'.
30
+
31
+ ## Source
32
+
33
+ This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
34
+
35
+ ## Submitting Incomplete Solutions
36
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,48 @@
1
+ # Leap
2
+
3
+ Given a year, report if it is a leap year.
4
+
5
+ The tricky thing here is that a leap year in the Gregorian calendar occurs:
6
+
7
+ ```plain
8
+ on every year that is evenly divisible by 4
9
+ except every year that is evenly divisible by 100
10
+ unless the year is also evenly divisible by 400
11
+ ```
12
+
13
+ For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap
14
+ year, but 2000 is.
15
+
16
+ If your language provides a method in the standard library that does
17
+ this look-up, pretend it doesn't exist and implement it yourself.
18
+
19
+ ## Notes
20
+
21
+ Though our exercise adopts some very simple rules, there is more to
22
+ learn!
23
+
24
+ For a delightful, four minute explanation of the whole leap year
25
+ phenomenon, go watch [this youtube video][video].
26
+
27
+ [video]: http://www.youtube.com/watch?v=xX96xng7sAE
28
+
29
+ ## Resources
30
+
31
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
32
+ [resources](https://perl6.org/resources/) pages for information, tips, and
33
+ examples if you get stuck.
34
+
35
+ ## Running the tests
36
+
37
+ There is a test script included with the exercise; a file with the extension
38
+ `.t`. You can run the test script for the exercise by executing the command
39
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
40
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
41
+ tests marked as 'TODO'.
42
+
43
+ ## Source
44
+
45
+ JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
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,49 @@
1
+ # Linked List
2
+
3
+ Implement a doubly linked list.
4
+
5
+ Like an array, a linked list is a simple linear data structure. Several
6
+ common data types can be implemented using linked lists, like queues,
7
+ stacks, and associative arrays.
8
+
9
+ A linked list is a collection of data elements called *nodes*. In a
10
+ *singly linked list* each node holds a value and a link to the next node.
11
+ In a *doubly linked list* each node also holds a link to the previous
12
+ node.
13
+
14
+ You will write an implementation of a doubly linked list. Implement a
15
+ Node to hold a value and pointers to the next and previous nodes. Then
16
+ implement a List which holds references to the first and last node and
17
+ offers an array-like interface for adding and removing items:
18
+
19
+ * `push` (*insert value at back*);
20
+ * `pop` (*remove value at back*);
21
+ * `shift` (*remove value at front*).
22
+ * `unshift` (*insert value at front*);
23
+
24
+ To keep your implementation simple, the tests will not cover error
25
+ conditions. Specifically: `pop` or `shift` will never be called on an
26
+ empty list.
27
+
28
+ If you want to know more about linked lists, check [Wikipedia](https://en.wikipedia.org/wiki/Linked_list).
29
+
30
+ ## Resources
31
+
32
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
33
+ [resources](https://perl6.org/resources/) pages for information, tips, and
34
+ examples if you get stuck.
35
+
36
+ ## Running the tests
37
+
38
+ There is a test script included with the exercise; a file with the extension
39
+ `.t`. You can run the test script for the exercise by executing the command
40
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
41
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
42
+ tests marked as 'TODO'.
43
+
44
+ ## Source
45
+
46
+ Classic computer science topic
47
+
48
+ ## Submitting Incomplete Solutions
49
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -2,7 +2,7 @@ exercise: LinkedList
2
2
  version: 1
3
3
  plan: 7
4
4
  modules:
5
- - use: JSON::Tiny
5
+ - use: JSON::Fast
6
6
  methods: 'push-list pop-list shift-list unshift-list'
7
7
  tests: |
8
8
  for my @cases -> $case {
@@ -2,7 +2,7 @@
2
2
  use v6;
3
3
  use Test;
4
4
  use lib $?FILE.IO.dirname;
5
- use JSON::Tiny;
5
+ use JSON::Fast;
6
6
 
7
7
  my $exercise = 'LinkedList';
8
8
  my $version = v1;
@@ -0,0 +1,86 @@
1
+ # Luhn
2
+
3
+ Given a number determine whether or not it is valid per the Luhn formula.
4
+
5
+ The [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm) is
6
+ a simple checksum formula used to validate a variety of identification
7
+ numbers, such as credit card numbers and Canadian Social Insurance
8
+ Numbers.
9
+
10
+ The task is to check if a given string is valid.
11
+
12
+ Validating a Number
13
+ ------
14
+
15
+ Strings of length 1 or less are not valid. Spaces are allowed in the input,
16
+ but they should be stripped before checking. All other non-digit characters
17
+ are disallowed.
18
+
19
+ ## Example 1: valid credit card number
20
+
21
+ ```
22
+ 4539 1488 0343 6467
23
+ ```
24
+
25
+ The first step of the Luhn algorithm is to double every second digit,
26
+ starting from the right. We will be doubling
27
+
28
+ ```
29
+ 4_3_ 1_8_ 0_4_ 6_6_
30
+ ```
31
+
32
+ If doubling the number results in a number greater than 9 then subtract 9
33
+ from the product. The results of our doubling:
34
+
35
+ ```
36
+ 8569 2478 0383 3437
37
+ ```
38
+
39
+ Then sum all of the digits:
40
+
41
+ ```
42
+ 8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
43
+ ```
44
+
45
+ If the sum is evenly divisible by 10, then the number is valid. This number is valid!
46
+
47
+ ## Example 2: invalid credit card number
48
+
49
+ ```
50
+ 8273 1232 7352 0569
51
+ ```
52
+
53
+ Double the second digits, starting from the right
54
+
55
+ ```
56
+ 7253 2262 5312 0539
57
+ ```
58
+
59
+ Sum the digits
60
+
61
+ ```
62
+ 7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
63
+ ```
64
+
65
+ 57 is not evenly divisible by 10, so this number is not valid.
66
+
67
+ ## Resources
68
+
69
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
70
+ [resources](https://perl6.org/resources/) pages for information, tips, and
71
+ examples if you get stuck.
72
+
73
+ ## Running the tests
74
+
75
+ There is a test script included with the exercise; a file with the extension
76
+ `.t`. You can run the test script for the exercise by executing the command
77
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
78
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
79
+ tests marked as 'TODO'.
80
+
81
+ ## Source
82
+
83
+ The Luhn Algorithm on Wikipedia [http://en.wikipedia.org/wiki/Luhn_algorithm](http://en.wikipedia.org/wiki/Luhn_algorithm)
84
+
85
+ ## Submitting Incomplete Solutions
86
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,49 @@
1
+ # Phone Number
2
+
3
+ Clean up user-entered phone numbers so that they can be sent SMS messages.
4
+
5
+ The **North American Numbering Plan (NANP)** is a telephone numbering system used by many countries in North America like the United States, Canada or Bermuda. All NANP-countries share the same international country code: `1`.
6
+
7
+ NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
8
+
9
+
10
+ The format is usually represented as
11
+ ```
12
+ (NXX)-NXX-XXXX
13
+ ```
14
+ where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
15
+
16
+ Your task is to clean up differently formated telephone numbers by removing punctuation and the country code (1) if present.
17
+
18
+ For example, the inputs
19
+ - `+1 (613)-995-0253`
20
+ - `613-995-0253`
21
+ - `1 613 995 0253`
22
+ - `613.995.0253`
23
+
24
+ should all produce the output
25
+
26
+ `6139950253`
27
+
28
+ **Note:** As this exercise only deals with telephone numbers used in NANP-countries, only 1 is considered a valid country code.
29
+
30
+ ## Resources
31
+
32
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
33
+ [resources](https://perl6.org/resources/) pages for information, tips, and
34
+ examples if you get stuck.
35
+
36
+ ## Running the tests
37
+
38
+ There is a test script included with the exercise; a file with the extension
39
+ `.t`. You can run the test script for the exercise by executing the command
40
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
41
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
42
+ tests marked as 'TODO'.
43
+
44
+ ## Source
45
+
46
+ Event Manager by JumpstartLab [http://tutorials.jumpstartlab.com/projects/eventmanager.html](http://tutorials.jumpstartlab.com/projects/eventmanager.html)
47
+
48
+ ## Submitting Incomplete Solutions
49
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,39 @@
1
+ # Raindrops
2
+
3
+ Convert a number to a string, the contents of which depend on the number's factors.
4
+
5
+ - If the number has 3 as a factor, output 'Pling'.
6
+ - If the number has 5 as a factor, output 'Plang'.
7
+ - If the number has 7 as a factor, output 'Plong'.
8
+ - If the number does not have 3, 5, or 7 as a factor,
9
+ just pass the number's digits straight through.
10
+
11
+ ## Examples
12
+
13
+ - 28's factors are 1, 2, 4, **7**, 14, 28.
14
+ - In raindrop-speak, this would be a simple "Plong".
15
+ - 30's factors are 1, 2, **3**, **5**, 6, 10, 15, 30.
16
+ - In raindrop-speak, this would be a "PlingPlang".
17
+ - 34 has four factors: 1, 2, 17, and 34.
18
+ - In raindrop-speak, this would be "34".
19
+
20
+ ## Resources
21
+
22
+ Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
23
+ [resources](https://perl6.org/resources/) pages for information, tips, and
24
+ examples if you get stuck.
25
+
26
+ ## Running the tests
27
+
28
+ There is a test script included with the exercise; a file with the extension
29
+ `.t`. You can run the test script for the exercise by executing the command
30
+ `prove . --exec=perl6` in the exercise directory. You can also add the `-v` flag
31
+ e.g. `prove . --exec=perl6 -v` to display all tests, including any optional
32
+ tests marked as 'TODO'.
33
+
34
+ ## Source
35
+
36
+ A variation on a famous interview question intended to weed out potential candidates. [http://jumpstartlab.com](http://jumpstartlab.com)
37
+
38
+ ## Submitting Incomplete Solutions
39
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.