trackler 2.2.0.1 → 2.2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (636) hide show
  1. checksums.yaml +4 -4
  2. data/fixtures/tracks/fake/config.json +4 -3
  3. data/fixtures/tracks/fruit/config.json +4 -3
  4. data/lib/trackler/track.rb +2 -2
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/{java/exercises/allergies/.meta/readme.go.tmpl → c/config/exercise_readme.go.tmpl} +0 -1
  7. data/tracks/c/exercises/acronym/README.md +47 -0
  8. data/tracks/c/exercises/all-your-base/README.md +67 -0
  9. data/tracks/c/exercises/allergies/README.md +69 -0
  10. data/tracks/c/exercises/anagram/README.md +45 -0
  11. data/tracks/c/exercises/atbash-cipher/README.md +66 -0
  12. data/tracks/c/exercises/beer-song/README.md +359 -0
  13. data/tracks/c/exercises/binary/README.md +67 -0
  14. data/tracks/c/exercises/binary-search/README.md +73 -0
  15. data/tracks/c/exercises/bob/README.md +50 -0
  16. data/tracks/c/exercises/clock/README.md +45 -0
  17. data/tracks/c/exercises/difference-of-squares/README.md +51 -0
  18. data/tracks/c/exercises/gigasecond/README.md +43 -0
  19. data/tracks/c/exercises/grains/README.md +66 -0
  20. data/tracks/c/exercises/hamming/README.md +74 -0
  21. data/tracks/c/exercises/hello-world/README.md +53 -0
  22. data/tracks/c/exercises/isogram/README.md +51 -0
  23. data/tracks/c/exercises/largest-series-product/README.md +52 -0
  24. data/tracks/c/exercises/leap/README.md +65 -0
  25. data/tracks/c/exercises/meetup/README.md +62 -0
  26. data/tracks/c/exercises/nth-prime/README.md +47 -0
  27. data/tracks/c/exercises/nucleotide-count/README.md +65 -0
  28. data/tracks/c/exercises/palindrome-products/README.md +72 -0
  29. data/tracks/c/exercises/pangram/README.md +47 -0
  30. data/tracks/c/exercises/pascals-triangle/README.md +53 -0
  31. data/tracks/c/exercises/perfect-numbers/README.md +56 -0
  32. data/tracks/c/exercises/phone-number/README.md +66 -0
  33. data/tracks/c/exercises/raindrops/README.md +56 -0
  34. data/tracks/c/exercises/react/README.md +51 -0
  35. data/tracks/c/exercises/rna-transcription/README.md +57 -0
  36. data/tracks/c/exercises/robot-simulator/README.md +66 -0
  37. data/tracks/c/exercises/roman-numerals/README.md +81 -0
  38. data/tracks/c/exercises/scrabble-score/README.md +76 -0
  39. data/tracks/c/exercises/series/README.md +59 -0
  40. data/tracks/c/exercises/sieve/README.md +66 -0
  41. data/tracks/c/exercises/space-age/README.md +56 -0
  42. data/tracks/c/exercises/sum-of-multiples/README.md +50 -0
  43. data/tracks/c/exercises/triangle/README.md +58 -0
  44. data/tracks/c/exercises/word-count/README.md +51 -0
  45. data/tracks/ceylon/README.md +3 -3
  46. data/tracks/ceylon/config/exercise-readme-insert.md +1 -0
  47. data/tracks/{java/exercises/accumulate/.meta/readme.go.tmpl → ceylon/config/exercise_readme.go.tmpl} +0 -1
  48. data/tracks/ceylon/exercises/anagram/README.md +29 -0
  49. data/tracks/ceylon/{docs/EXERCISE_README_INSERT.md → exercises/bracket-push/README.md} +12 -0
  50. data/tracks/ceylon/exercises/hamming/README.md +58 -0
  51. data/tracks/ceylon/exercises/largest-series-product/README.md +36 -0
  52. data/tracks/ceylon/exercises/leap/README.md +49 -0
  53. data/tracks/ceylon/exercises/react/README.md +35 -0
  54. data/tracks/ceylon/exercises/sieve/README.md +50 -0
  55. data/tracks/{java/exercises/acronym/.meta/readme.go.tmpl → delphi/config/exercise_readme.go.tmpl} +0 -1
  56. data/tracks/delphi/exercises/allergies/README.md +58 -0
  57. data/tracks/delphi/exercises/bank-account/README.md +51 -0
  58. data/tracks/delphi/exercises/beer-song/README.md +348 -0
  59. data/tracks/delphi/exercises/binary-search/README.md +62 -0
  60. data/tracks/delphi/exercises/bob/README.md +39 -0
  61. data/tracks/delphi/exercises/book-store/README.md +95 -0
  62. data/tracks/delphi/exercises/bowling/README.md +74 -0
  63. data/tracks/delphi/exercises/circular-buffer/README.md +71 -0
  64. data/tracks/delphi/exercises/clock/README.md +34 -0
  65. data/tracks/delphi/exercises/collatz-conjecture/README.md +54 -0
  66. data/tracks/delphi/exercises/etl/README.md +72 -0
  67. data/tracks/delphi/exercises/grains/README.md +55 -0
  68. data/tracks/delphi/exercises/hamming/README.md +63 -0
  69. data/tracks/delphi/exercises/hello-world/README.md +42 -0
  70. data/tracks/delphi/exercises/leap/README.md +54 -0
  71. data/tracks/delphi/exercises/minesweeper/README.md +51 -0
  72. data/tracks/delphi/exercises/nucleotide-count/README.md +54 -0
  73. data/tracks/delphi/exercises/perfect-numbers/README.md +45 -0
  74. data/tracks/delphi/exercises/phone-number/README.md +55 -0
  75. data/tracks/delphi/exercises/poker/README.md +33 -0
  76. data/tracks/delphi/exercises/raindrops/README.md +45 -0
  77. data/tracks/delphi/exercises/rna-transcription/README.md +46 -0
  78. data/tracks/delphi/exercises/roman-numerals/README.md +70 -0
  79. data/tracks/delphi/exercises/saddle-points/README.md +54 -0
  80. data/tracks/delphi/exercises/triangle/README.md +47 -0
  81. data/tracks/delphi/exercises/two-fer/README.md +69 -0
  82. data/tracks/delphi/exercises/wordy/README.md +84 -0
  83. data/tracks/{java/exercises/all-your-base/.meta/readme.go.tmpl → factor/config/exercise_readme.go.tmpl} +0 -1
  84. data/tracks/factor/exercises/hello-world/README.md +34 -0
  85. data/tracks/factor/exercises/isogram/README.md +32 -0
  86. data/tracks/factor/exercises/leap/README.md +46 -0
  87. data/tracks/factor/exercises/two-fer/README.md +61 -0
  88. data/tracks/haskell/config/exercise_readme.go.tmpl +16 -0
  89. data/tracks/haskell/exercises/accumulate/README.md +89 -0
  90. data/tracks/haskell/exercises/acronym/README.md +69 -0
  91. data/tracks/haskell/exercises/all-your-base/README.md +89 -0
  92. data/tracks/haskell/exercises/allergies/README.md +104 -0
  93. data/tracks/haskell/exercises/alphametics/README.md +96 -0
  94. data/tracks/haskell/exercises/anagram/README.md +91 -0
  95. data/tracks/haskell/exercises/atbash-cipher/README.md +88 -0
  96. data/tracks/haskell/exercises/bank-account/README.md +102 -0
  97. data/tracks/haskell/exercises/beer-song/README.md +401 -0
  98. data/tracks/haskell/exercises/binary/README.md +89 -0
  99. data/tracks/haskell/exercises/binary-search-tree/README.md +133 -0
  100. data/tracks/haskell/exercises/bob/README.md +72 -0
  101. data/tracks/haskell/exercises/bowling/README.md +128 -0
  102. data/tracks/haskell/exercises/bracket-push/README.md +64 -0
  103. data/tracks/haskell/exercises/change/README.md +77 -0
  104. data/tracks/haskell/exercises/clock/README.md +86 -0
  105. data/tracks/haskell/exercises/connect/README.md +88 -0
  106. data/tracks/haskell/exercises/crypto-square/README.md +128 -0
  107. data/tracks/haskell/exercises/custom-set/README.md +94 -0
  108. data/tracks/haskell/exercises/difference-of-squares/README.md +73 -0
  109. data/tracks/haskell/exercises/dominoes/README.md +72 -0
  110. data/tracks/haskell/exercises/etl/README.md +105 -0
  111. data/tracks/haskell/exercises/food-chain/README.md +145 -0
  112. data/tracks/haskell/exercises/forth/README.md +98 -0
  113. data/tracks/haskell/exercises/gigasecond/README.md +65 -0
  114. data/tracks/haskell/exercises/go-counting/README.md +109 -0
  115. data/tracks/haskell/exercises/grade-school/README.md +111 -0
  116. data/tracks/haskell/exercises/grains/README.md +88 -0
  117. data/tracks/haskell/exercises/hamming/README.md +96 -0
  118. data/tracks/haskell/exercises/hello-world/README.md +83 -0
  119. data/tracks/haskell/exercises/hexadecimal/README.md +68 -0
  120. data/tracks/haskell/exercises/house/README.md +187 -0
  121. data/tracks/haskell/exercises/kindergarten-garden/README.md +120 -0
  122. data/tracks/haskell/exercises/largest-series-product/README.md +74 -0
  123. data/tracks/haskell/exercises/leap/README.md +100 -0
  124. data/tracks/haskell/exercises/lens-person/README.md +66 -0
  125. data/tracks/haskell/exercises/linked-list/README.md +104 -0
  126. data/tracks/haskell/exercises/list-ops/README.md +64 -0
  127. data/tracks/haskell/exercises/luhn/README.md +125 -0
  128. data/tracks/haskell/exercises/matrix/README.md +125 -0
  129. data/tracks/haskell/exercises/meetup/README.md +92 -0
  130. data/tracks/haskell/exercises/minesweeper/README.md +84 -0
  131. data/tracks/haskell/exercises/nth-prime/README.md +69 -0
  132. data/tracks/haskell/exercises/nucleotide-count/README.md +87 -0
  133. data/tracks/haskell/exercises/ocr-numbers/README.md +139 -0
  134. data/tracks/haskell/exercises/octal/README.md +115 -0
  135. data/tracks/haskell/exercises/palindrome-products/README.md +115 -0
  136. data/tracks/haskell/exercises/pangram/README.md +69 -0
  137. data/tracks/haskell/exercises/parallel-letter-frequency/README.md +76 -0
  138. data/tracks/haskell/exercises/pascals-triangle/README.md +75 -0
  139. data/tracks/haskell/exercises/phone-number/README.md +88 -0
  140. data/tracks/haskell/exercises/pig-latin/README.md +78 -0
  141. data/tracks/haskell/exercises/pov/README.md +100 -0
  142. data/tracks/haskell/exercises/prime-factors/README.md +90 -0
  143. data/tracks/haskell/exercises/pythagorean-triplet/README.md +78 -0
  144. data/tracks/haskell/exercises/queen-attack/README.md +105 -0
  145. data/tracks/haskell/exercises/raindrops/README.md +78 -0
  146. data/tracks/haskell/exercises/rna-transcription/README.md +79 -0
  147. data/tracks/haskell/exercises/robot-name/README.md +90 -0
  148. data/tracks/haskell/exercises/robot-simulator/README.md +105 -0
  149. data/tracks/haskell/exercises/roman-numerals/README.md +112 -0
  150. data/tracks/haskell/exercises/run-length-encoding/README.md +84 -0
  151. data/tracks/haskell/exercises/saddle-points/README.md +87 -0
  152. data/tracks/haskell/exercises/say/README.md +123 -0
  153. data/tracks/haskell/exercises/scrabble-score/README.md +98 -0
  154. data/tracks/haskell/exercises/secret-handshake/README.md +89 -0
  155. data/tracks/haskell/exercises/series/README.md +106 -0
  156. data/tracks/haskell/exercises/sgf-parsing/README.md +146 -0
  157. data/tracks/haskell/exercises/sieve/README.md +88 -0
  158. data/tracks/haskell/exercises/simple-cipher/README.md +144 -0
  159. data/tracks/haskell/exercises/simple-linked-list/README.md +101 -0
  160. data/tracks/haskell/exercises/space-age/README.md +94 -0
  161. data/tracks/haskell/exercises/spiral-matrix/README.md +84 -0
  162. data/tracks/haskell/exercises/strain/README.md +94 -0
  163. data/tracks/haskell/exercises/sublist/README.md +80 -0
  164. data/tracks/haskell/exercises/sum-of-multiples/README.md +72 -0
  165. data/tracks/haskell/exercises/triangle/README.md +80 -0
  166. data/tracks/haskell/exercises/trinary/README.md +96 -0
  167. data/tracks/haskell/exercises/word-count/README.md +96 -0
  168. data/tracks/haskell/exercises/wordy/README.md +122 -0
  169. data/tracks/haskell/exercises/zebra-puzzle/README.md +86 -0
  170. data/tracks/haskell/exercises/zipper/README.md +85 -0
  171. data/tracks/java/config/exercise_readme.go.tmpl +16 -0
  172. data/tracks/java/exercises/accumulate/README.md +0 -1
  173. data/tracks/java/exercises/acronym/README.md +0 -1
  174. data/tracks/java/exercises/all-your-base/README.md +0 -1
  175. data/tracks/java/exercises/allergies/README.md +0 -1
  176. data/tracks/java/exercises/anagram/README.md +0 -1
  177. data/tracks/java/exercises/atbash-cipher/README.md +0 -1
  178. data/tracks/java/exercises/bank-account/README.md +0 -1
  179. data/tracks/java/exercises/beer-song/README.md +0 -1
  180. data/tracks/java/exercises/binary/README.md +0 -1
  181. data/tracks/java/exercises/binary-search/README.md +0 -1
  182. data/tracks/java/exercises/binary-search-tree/README.md +0 -1
  183. data/tracks/java/exercises/bob/README.md +0 -1
  184. data/tracks/java/exercises/book-store/README.md +0 -1
  185. data/tracks/java/exercises/bowling/README.md +0 -1
  186. data/tracks/java/exercises/bracket-push/README.md +0 -1
  187. data/tracks/java/exercises/change/README.md +0 -1
  188. data/tracks/java/exercises/circular-buffer/README.md +0 -1
  189. data/tracks/java/exercises/clock/README.md +0 -1
  190. data/tracks/java/exercises/collatz-conjecture/README.md +0 -1
  191. data/tracks/java/exercises/complex-numbers/README.md +0 -1
  192. data/tracks/java/exercises/crypto-square/README.md +0 -1
  193. data/tracks/java/exercises/custom-set/README.md +0 -1
  194. data/tracks/java/exercises/diamond/README.md +0 -1
  195. data/tracks/java/exercises/difference-of-squares/README.md +0 -1
  196. data/tracks/java/exercises/etl/README.md +0 -1
  197. data/tracks/java/exercises/flatten-array/README.md +0 -1
  198. data/tracks/java/exercises/food-chain/README.md +0 -1
  199. data/tracks/java/exercises/gigasecond/README.md +0 -1
  200. data/tracks/java/exercises/grade-school/README.md +0 -1
  201. data/tracks/java/exercises/hamming/README.md +0 -1
  202. data/tracks/java/exercises/hello-world/README.md +0 -1
  203. data/tracks/java/exercises/hexadecimal/README.md +0 -1
  204. data/tracks/java/exercises/isogram/README.md +0 -1
  205. data/tracks/java/exercises/kindergarten-garden/README.md +0 -1
  206. data/tracks/java/exercises/largest-series-product/README.md +0 -1
  207. data/tracks/java/exercises/linked-list/README.md +0 -1
  208. data/tracks/java/exercises/list-ops/README.md +0 -1
  209. data/tracks/java/exercises/luhn/README.md +0 -1
  210. data/tracks/java/exercises/matrix/README.md +0 -1
  211. data/tracks/java/exercises/meetup/README.md +0 -1
  212. data/tracks/java/exercises/minesweeper/README.md +0 -1
  213. data/tracks/java/exercises/nth-prime/README.md +0 -1
  214. data/tracks/java/exercises/nucleotide-count/README.md +0 -1
  215. data/tracks/java/exercises/ocr-numbers/README.md +0 -1
  216. data/tracks/java/exercises/octal/README.md +0 -1
  217. data/tracks/java/exercises/palindrome-products/README.md +0 -1
  218. data/tracks/java/exercises/pangram/README.md +0 -1
  219. data/tracks/java/exercises/pascals-triangle/README.md +0 -1
  220. data/tracks/java/exercises/perfect-numbers/README.md +0 -1
  221. data/tracks/java/exercises/phone-number/README.md +0 -1
  222. data/tracks/java/exercises/pig-latin/README.md +0 -1
  223. data/tracks/java/exercises/poker/README.md +0 -1
  224. data/tracks/java/exercises/prime-factors/README.md +0 -1
  225. data/tracks/java/exercises/pythagorean-triplet/README.md +0 -1
  226. data/tracks/java/exercises/queen-attack/README.md +0 -1
  227. data/tracks/java/exercises/raindrops/README.md +0 -1
  228. data/tracks/java/exercises/rectangles/README.md +0 -1
  229. data/tracks/java/exercises/rna-transcription/README.md +0 -1
  230. data/tracks/java/exercises/robot-name/README.md +0 -1
  231. data/tracks/java/exercises/robot-simulator/README.md +0 -1
  232. data/tracks/java/exercises/roman-numerals/README.md +0 -1
  233. data/tracks/java/exercises/rotational-cipher/README.md +47 -0
  234. data/tracks/java/exercises/run-length-encoding/README.md +0 -1
  235. data/tracks/java/exercises/saddle-points/README.md +0 -1
  236. data/tracks/java/exercises/scrabble-score/README.md +0 -1
  237. data/tracks/java/exercises/secret-handshake/README.md +0 -1
  238. data/tracks/java/exercises/series/README.md +0 -1
  239. data/tracks/java/exercises/sieve/README.md +0 -1
  240. data/tracks/java/exercises/simple-cipher/README.md +0 -1
  241. data/tracks/java/exercises/simple-linked-list/README.md +0 -1
  242. data/tracks/java/exercises/space-age/README.md +0 -1
  243. data/tracks/java/exercises/spiral-matrix/README.md +0 -1
  244. data/tracks/java/exercises/strain/README.md +0 -1
  245. data/tracks/java/exercises/sublist/README.md +0 -1
  246. data/tracks/java/exercises/sum-of-multiples/README.md +0 -1
  247. data/tracks/java/exercises/transpose/README.md +0 -1
  248. data/tracks/java/exercises/triangle/README.md +0 -1
  249. data/tracks/java/exercises/trinary/README.md +0 -1
  250. data/tracks/java/exercises/twelve-days/README.md +0 -1
  251. data/tracks/java/exercises/two-fer/README.md +0 -1
  252. data/tracks/java/exercises/word-count/README.md +0 -1
  253. data/tracks/java/exercises/word-search/README.md +0 -1
  254. data/tracks/java/exercises/wordy/README.md +0 -1
  255. data/tracks/javascript/config/exercise_readme.go.tmpl +16 -0
  256. data/tracks/javascript/exercises/accumulate/README.md +59 -0
  257. data/tracks/javascript/exercises/acronym/README.md +39 -0
  258. data/tracks/javascript/exercises/all-your-base/README.md +59 -0
  259. data/tracks/javascript/exercises/allergies/README.md +61 -0
  260. data/tracks/javascript/exercises/alphametics/README.md +59 -0
  261. data/tracks/javascript/exercises/anagram/README.md +37 -0
  262. data/tracks/javascript/exercises/atbash-cipher/README.md +58 -0
  263. data/tracks/javascript/exercises/beer-song/README.md +351 -0
  264. data/tracks/javascript/exercises/binary/README.md +59 -0
  265. data/tracks/javascript/exercises/binary-search/README.md +65 -0
  266. data/tracks/javascript/exercises/binary-search-tree/README.md +84 -0
  267. data/tracks/javascript/exercises/bob/README.md +42 -0
  268. data/tracks/javascript/exercises/bowling/README.md +77 -0
  269. data/tracks/javascript/exercises/bracket-push/README.md +34 -0
  270. data/tracks/javascript/exercises/circular-buffer/README.md +74 -0
  271. data/tracks/javascript/exercises/clock/README.md +37 -0
  272. data/tracks/javascript/exercises/crypto-square/README.md +98 -0
  273. data/tracks/javascript/exercises/custom-set/README.md +35 -0
  274. data/tracks/javascript/exercises/diamond/README.md +83 -0
  275. data/tracks/javascript/exercises/difference-of-squares/README.md +43 -0
  276. data/tracks/javascript/exercises/etl/README.md +75 -0
  277. data/tracks/javascript/exercises/flatten-array/README.md +42 -0
  278. data/tracks/javascript/exercises/food-chain/README.md +94 -0
  279. data/tracks/javascript/exercises/gigasecond/README.md +35 -0
  280. data/tracks/javascript/exercises/grade-school/README.md +66 -0
  281. data/tracks/javascript/exercises/grains/README.md +58 -0
  282. data/tracks/javascript/exercises/hamming/README.md +66 -0
  283. data/tracks/javascript/exercises/hello-world/README.md +132 -0
  284. data/tracks/javascript/exercises/hexadecimal/README.md +38 -0
  285. data/tracks/javascript/exercises/isogram/README.md +43 -0
  286. data/tracks/javascript/exercises/kindergarten-garden/README.md +90 -0
  287. data/tracks/javascript/exercises/largest-series-product/README.md +44 -0
  288. data/tracks/javascript/exercises/leap/README.md +57 -0
  289. data/tracks/javascript/exercises/linked-list/README.md +58 -0
  290. data/tracks/javascript/exercises/list-ops/README.md +34 -0
  291. data/tracks/javascript/exercises/luhn/README.md +95 -0
  292. data/tracks/javascript/exercises/matrix/README.md +69 -0
  293. data/tracks/javascript/exercises/meetup/README.md +54 -0
  294. data/tracks/javascript/exercises/minesweeper/README.md +54 -0
  295. data/tracks/javascript/exercises/nth-prime/README.md +39 -0
  296. data/tracks/javascript/exercises/nucleotide-count/README.md +57 -0
  297. data/tracks/javascript/exercises/ocr-numbers/README.md +109 -0
  298. data/tracks/javascript/exercises/octal/README.md +73 -0
  299. data/tracks/javascript/exercises/palindrome-products/README.md +64 -0
  300. data/tracks/javascript/exercises/pangram/README.md +39 -0
  301. data/tracks/javascript/exercises/pascals-triangle/README.md +45 -0
  302. data/tracks/javascript/exercises/perfect-numbers/README.md +48 -0
  303. data/tracks/javascript/exercises/phone-number/README.md +58 -0
  304. data/tracks/javascript/exercises/pig-latin/README.md +48 -0
  305. data/tracks/javascript/exercises/point-mutations/README.md +65 -0
  306. data/tracks/javascript/exercises/prime-factors/README.md +60 -0
  307. data/tracks/javascript/exercises/proverb/README.md +42 -0
  308. data/tracks/javascript/exercises/pythagorean-triplet/README.md +48 -0
  309. data/tracks/javascript/exercises/queen-attack/README.md +57 -0
  310. data/tracks/javascript/exercises/raindrops/README.md +48 -0
  311. data/tracks/javascript/exercises/rna-transcription/README.md +49 -0
  312. data/tracks/javascript/exercises/robot-name/README.md +46 -0
  313. data/tracks/javascript/exercises/robot-simulator/README.md +58 -0
  314. data/tracks/javascript/exercises/roman-numerals/README.md +73 -0
  315. data/tracks/javascript/exercises/run-length-encoding/README.md +54 -0
  316. data/tracks/javascript/exercises/saddle-points/README.md +57 -0
  317. data/tracks/javascript/exercises/say/README.md +93 -0
  318. data/tracks/javascript/exercises/scrabble-score/README.md +68 -0
  319. data/tracks/javascript/exercises/secret-handshake/README.md +59 -0
  320. data/tracks/javascript/exercises/series/README.md +51 -0
  321. data/tracks/javascript/exercises/sieve/README.md +58 -0
  322. data/tracks/javascript/exercises/simple-cipher/README.md +114 -0
  323. data/tracks/javascript/exercises/simple-linked-list/README.md +52 -0
  324. data/tracks/javascript/exercises/space-age/README.md +48 -0
  325. data/tracks/javascript/exercises/strain/README.md +64 -0
  326. data/tracks/javascript/exercises/sum-of-multiples/README.md +42 -0
  327. data/tracks/javascript/exercises/triangle/README.md +50 -0
  328. data/tracks/javascript/exercises/trinary/README.md +52 -0
  329. data/tracks/javascript/exercises/two-bucket/README.md +60 -0
  330. data/tracks/javascript/exercises/word-count/README.md +43 -0
  331. data/tracks/javascript/exercises/wordy/README.md +87 -0
  332. data/tracks/lua/config/exercise_readme.go.tmpl +16 -0
  333. data/tracks/lua/exercises/acronym/README.md +25 -0
  334. data/tracks/lua/exercises/all-your-base/README.md +45 -0
  335. data/tracks/lua/exercises/allergies/README.md +47 -0
  336. data/tracks/lua/exercises/alphametics/README.md +45 -0
  337. data/tracks/lua/exercises/anagram/README.md +23 -0
  338. data/tracks/lua/exercises/atbash-cipher/README.md +44 -0
  339. data/tracks/lua/exercises/bank-account/README.md +40 -0
  340. data/tracks/lua/exercises/beer-song/README.md +337 -0
  341. data/tracks/lua/exercises/binary/README.md +45 -0
  342. data/tracks/lua/exercises/binary-search/README.md +51 -0
  343. data/tracks/lua/exercises/binary-search-tree/README.md +70 -0
  344. data/tracks/lua/exercises/bob/README.md +28 -0
  345. data/tracks/lua/exercises/bowling/README.md +63 -0
  346. data/tracks/lua/exercises/bracket-push/README.md +20 -0
  347. data/tracks/lua/exercises/change/README.md +33 -0
  348. data/tracks/lua/exercises/circular-buffer/README.md +60 -0
  349. data/tracks/lua/exercises/clock/README.md +23 -0
  350. data/tracks/lua/exercises/crypto-square/README.md +84 -0
  351. data/tracks/lua/exercises/custom-set/README.md +21 -0
  352. data/tracks/lua/exercises/diamond/README.md +69 -0
  353. data/tracks/lua/exercises/difference-of-squares/README.md +29 -0
  354. data/tracks/lua/exercises/etl/README.md +61 -0
  355. data/tracks/lua/exercises/flatten-array/README.md +28 -0
  356. data/tracks/lua/exercises/food-chain/README.md +80 -0
  357. data/tracks/lua/exercises/gigasecond/README.md +21 -0
  358. data/tracks/lua/exercises/grade-school/README.md +52 -0
  359. data/tracks/lua/exercises/grains/README.md +44 -0
  360. data/tracks/lua/exercises/hamming/README.md +52 -0
  361. data/tracks/lua/exercises/hello-world/README.md +31 -0
  362. data/tracks/lua/exercises/house/README.md +123 -0
  363. data/tracks/lua/exercises/isogram/README.md +29 -0
  364. data/tracks/lua/exercises/kindergarten-garden/README.md +76 -0
  365. data/tracks/lua/exercises/largest-series-product/README.md +30 -0
  366. data/tracks/lua/exercises/leap/README.md +43 -0
  367. data/tracks/lua/exercises/linked-list/README.md +44 -0
  368. data/tracks/lua/exercises/list-ops/README.md +20 -0
  369. data/tracks/lua/exercises/luhn/README.md +81 -0
  370. data/tracks/lua/exercises/matrix/README.md +55 -0
  371. data/tracks/lua/exercises/meetup/README.md +40 -0
  372. data/tracks/lua/exercises/minesweeper/README.md +40 -0
  373. data/tracks/lua/exercises/nth-prime/README.md +25 -0
  374. data/tracks/lua/exercises/nucleotide-count/README.md +43 -0
  375. data/tracks/lua/exercises/ocr-numbers/README.md +95 -0
  376. data/tracks/lua/exercises/octal/README.md +59 -0
  377. data/tracks/lua/exercises/pangram/README.md +25 -0
  378. data/tracks/lua/exercises/pascals-triangle/README.md +31 -0
  379. data/tracks/lua/exercises/perfect-numbers/README.md +34 -0
  380. data/tracks/lua/exercises/phone-number/README.md +44 -0
  381. data/tracks/lua/exercises/pig-latin/README.md +34 -0
  382. data/tracks/lua/exercises/pov/README.md +56 -0
  383. data/tracks/lua/exercises/prime-factors/README.md +46 -0
  384. data/tracks/lua/exercises/protein-translation/README.md +59 -0
  385. data/tracks/lua/exercises/pythagorean-triplet/README.md +34 -0
  386. data/tracks/lua/exercises/rail-fence-cipher/README.md +70 -0
  387. data/tracks/lua/exercises/raindrops/README.md +34 -0
  388. data/tracks/lua/exercises/rectangles/README.md +77 -0
  389. data/tracks/lua/exercises/rna-transcription/README.md +35 -0
  390. data/tracks/lua/exercises/robot-name/README.md +32 -0
  391. data/tracks/lua/exercises/robot-simulator/README.md +44 -0
  392. data/tracks/lua/exercises/roman-numerals/README.md +59 -0
  393. data/tracks/lua/exercises/run-length-encoding/README.md +40 -0
  394. data/tracks/lua/exercises/say/README.md +79 -0
  395. data/tracks/lua/exercises/scrabble-score/README.md +54 -0
  396. data/tracks/lua/exercises/secret-handshake/README.md +45 -0
  397. data/tracks/lua/exercises/series/README.md +37 -0
  398. data/tracks/lua/exercises/sieve/README.md +44 -0
  399. data/tracks/lua/exercises/space-age/README.md +34 -0
  400. data/tracks/lua/exercises/sublist/README.md +31 -0
  401. data/tracks/lua/exercises/sum-of-multiples/README.md +28 -0
  402. data/tracks/lua/exercises/tournament/README.md +78 -0
  403. data/tracks/lua/exercises/transpose/README.md +75 -0
  404. data/tracks/lua/exercises/triangle/README.md +36 -0
  405. data/tracks/lua/exercises/variable-length-quantity/README.md +49 -0
  406. data/tracks/lua/exercises/word-count/README.md +29 -0
  407. data/tracks/lua/exercises/word-search/README.md +40 -0
  408. data/tracks/mips/config/exercise_readme.go.tmpl +16 -0
  409. data/tracks/mips/exercises/atbash-cipher/README.md +34 -0
  410. data/tracks/mips/exercises/binary/README.md +35 -0
  411. data/tracks/mips/exercises/difference-of-squares/README.md +19 -0
  412. data/tracks/mips/exercises/hamming/README.md +42 -0
  413. data/tracks/mips/exercises/hexadecimal/README.md +14 -0
  414. data/tracks/mips/exercises/isogram/README.md +19 -0
  415. data/tracks/mips/exercises/leap/README.md +33 -0
  416. data/tracks/mips/exercises/nth-prime/README.md +15 -0
  417. data/tracks/mips/exercises/octal/README.md +49 -0
  418. data/tracks/mips/exercises/raindrops/README.md +24 -0
  419. data/tracks/mips/exercises/rna-transcription/README.md +25 -0
  420. data/tracks/mips/exercises/scrabble-score/README.md +44 -0
  421. data/tracks/mips/exercises/triangle/README.md +26 -0
  422. data/tracks/mips/exercises/trinary/README.md +28 -0
  423. data/tracks/purescript/config/exercise_readme.go.tmpl +16 -0
  424. data/tracks/purescript/exercises/accumulate/README.md +35 -0
  425. data/tracks/purescript/exercises/acronym/README.md +15 -0
  426. data/tracks/purescript/exercises/all-your-base/README.md +35 -0
  427. data/tracks/purescript/exercises/allergies/README.md +37 -0
  428. data/tracks/purescript/exercises/atbash-cipher/README.md +34 -0
  429. data/tracks/purescript/exercises/binary-search/README.md +41 -0
  430. data/tracks/purescript/exercises/bob/README.md +18 -0
  431. data/tracks/purescript/exercises/bracket-push/README.md +10 -0
  432. data/tracks/purescript/exercises/crypto-square/README.md +74 -0
  433. data/tracks/purescript/exercises/diamond/README.md +59 -0
  434. data/tracks/purescript/exercises/difference-of-squares/README.md +19 -0
  435. data/tracks/purescript/exercises/etl/README.md +51 -0
  436. data/tracks/purescript/exercises/hamming/README.md +42 -0
  437. data/tracks/purescript/exercises/hello-world/README.md +21 -0
  438. data/tracks/purescript/exercises/isogram/README.md +19 -0
  439. data/tracks/purescript/exercises/largest-series-product/README.md +20 -0
  440. data/tracks/purescript/exercises/leap/README.md +33 -0
  441. data/tracks/purescript/exercises/meetup/README.md +30 -0
  442. data/tracks/purescript/exercises/pangram/README.md +15 -0
  443. data/tracks/purescript/exercises/pascals-triangle/README.md +21 -0
  444. data/tracks/purescript/exercises/raindrops/README.md +24 -0
  445. data/tracks/purescript/exercises/scrabble-score/README.md +44 -0
  446. data/tracks/purescript/exercises/triangle/README.md +26 -0
  447. data/tracks/purescript/exercises/word-count/README.md +19 -0
  448. data/tracks/r/config/exercise_readme.go.tmpl +16 -0
  449. data/tracks/r/exercises/anagram/README.md +23 -0
  450. data/tracks/r/exercises/beer-song/README.md +337 -0
  451. data/tracks/r/exercises/bob/README.md +28 -0
  452. data/tracks/r/exercises/difference-of-squares/README.md +29 -0
  453. data/tracks/r/exercises/grains/README.md +44 -0
  454. data/tracks/r/exercises/hamming/README.md +52 -0
  455. data/tracks/r/exercises/hello-world/README.md +31 -0
  456. data/tracks/r/exercises/isogram/README.md +29 -0
  457. data/tracks/r/exercises/largest-series-product/README.md +30 -0
  458. data/tracks/r/exercises/leap/README.md +43 -0
  459. data/tracks/r/exercises/luhn/README.md +81 -0
  460. data/tracks/r/exercises/pascals-triangle/README.md +31 -0
  461. data/tracks/r/exercises/perfect-numbers/README.md +34 -0
  462. data/tracks/r/exercises/phone-number/README.md +44 -0
  463. data/tracks/r/exercises/prime-factors/README.md +46 -0
  464. data/tracks/r/exercises/raindrops/README.md +34 -0
  465. data/tracks/r/exercises/rna-transcription/README.md +35 -0
  466. data/tracks/r/exercises/rotational-cipher/README.md +46 -0
  467. data/tracks/r/exercises/scrabble-score/README.md +54 -0
  468. data/tracks/r/exercises/secret-handshake/README.md +45 -0
  469. data/tracks/r/exercises/sieve/README.md +44 -0
  470. data/tracks/r/exercises/space-age/README.md +34 -0
  471. data/tracks/r/exercises/sum-of-multiples/README.md +28 -0
  472. data/tracks/r/exercises/tournament/README.md +78 -0
  473. data/tracks/r/exercises/word-count/README.md +29 -0
  474. data/tracks/rust/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +1 -1
  475. data/tracks/rust/config/exercise_readme.go.tmpl +16 -0
  476. data/tracks/rust/exercises/acronym/README.md +47 -0
  477. data/tracks/rust/exercises/all-your-base/README.md +67 -0
  478. data/tracks/rust/exercises/allergies/README.md +69 -0
  479. data/tracks/rust/exercises/alphametics/README.md +67 -0
  480. data/tracks/rust/exercises/anagram/README.md +45 -0
  481. data/tracks/rust/exercises/atbash-cipher/README.md +66 -0
  482. data/tracks/rust/exercises/beer-song/README.md +359 -0
  483. data/tracks/rust/exercises/bob/README.md +50 -0
  484. data/tracks/rust/exercises/bowling/README.md +85 -0
  485. data/tracks/rust/exercises/bracket-push/README.md +50 -0
  486. data/tracks/rust/exercises/circular-buffer/README.md +82 -0
  487. data/tracks/rust/exercises/custom-set/README.md +43 -0
  488. data/tracks/rust/exercises/difference-of-squares/README.md +51 -0
  489. data/tracks/rust/exercises/dominoes/README.md +50 -0
  490. data/tracks/rust/exercises/etl/README.md +83 -0
  491. data/tracks/rust/exercises/forth/README.md +61 -0
  492. data/tracks/rust/exercises/gigasecond/Cargo.lock +3 -3
  493. data/tracks/rust/exercises/gigasecond/Cargo.toml +1 -1
  494. data/tracks/rust/exercises/gigasecond/README.md +43 -0
  495. data/tracks/rust/exercises/gigasecond/example.rs +1 -1
  496. data/tracks/rust/exercises/gigasecond/src/lib.rs +2 -2
  497. data/tracks/rust/exercises/gigasecond/tests/gigasecond.rs +10 -10
  498. data/tracks/rust/exercises/grade-school/README.md +74 -0
  499. data/tracks/rust/exercises/grains/README.md +66 -0
  500. data/tracks/rust/exercises/hamming/README.md +74 -0
  501. data/tracks/rust/exercises/hello-world/README.md +53 -0
  502. data/tracks/rust/exercises/hexadecimal/README.md +46 -0
  503. data/tracks/rust/exercises/largest-series-product/README.md +60 -0
  504. data/tracks/rust/exercises/leap/README.md +65 -0
  505. data/tracks/rust/exercises/luhn/README.md +103 -0
  506. data/tracks/rust/exercises/luhn-from/README.md +49 -0
  507. data/tracks/rust/exercises/luhn-trait/README.md +57 -0
  508. data/tracks/rust/exercises/minesweeper/README.md +62 -0
  509. data/tracks/rust/exercises/nucleotide-codons/README.md +54 -0
  510. data/tracks/rust/exercises/nucleotide-count/README.md +65 -0
  511. data/tracks/rust/exercises/ocr-numbers/README.md +117 -0
  512. data/tracks/rust/exercises/pangram/README.md +47 -0
  513. data/tracks/rust/exercises/parallel-letter-frequency/README.md +77 -0
  514. data/tracks/rust/exercises/pascals-triangle/README.md +53 -0
  515. data/tracks/rust/exercises/phone-number/README.md +66 -0
  516. data/tracks/rust/exercises/protein-translation/README.md +81 -0
  517. data/tracks/rust/exercises/queen-attack/README.md +65 -0
  518. data/tracks/rust/exercises/raindrops/README.md +56 -0
  519. data/tracks/rust/exercises/react/README.md +51 -0
  520. data/tracks/rust/exercises/rectangles/README.md +99 -0
  521. data/tracks/rust/exercises/rna-transcription/README.md +57 -0
  522. data/tracks/rust/exercises/robot-name/README.md +54 -0
  523. data/tracks/rust/exercises/robot-simulator/README.md +66 -0
  524. data/tracks/rust/exercises/roman-numerals/README.md +81 -0
  525. data/tracks/rust/exercises/rotational-cipher/README.md +68 -0
  526. data/tracks/rust/exercises/run-length-encoding/README.md +62 -0
  527. data/tracks/rust/exercises/scrabble-score/README.md +76 -0
  528. data/tracks/rust/exercises/sieve/README.md +66 -0
  529. data/tracks/rust/exercises/space-age/README.md +64 -0
  530. data/tracks/rust/exercises/sublist/README.md +53 -0
  531. data/tracks/rust/exercises/sum-of-multiples/README.md +50 -0
  532. data/tracks/rust/exercises/tournament/README.md +100 -0
  533. data/tracks/rust/exercises/triangle/README.md +71 -0
  534. data/tracks/rust/exercises/variable-length-quantity/README.md +71 -0
  535. data/tracks/rust/exercises/word-count/README.md +51 -0
  536. data/tracks/rust/exercises/wordy/README.md +95 -0
  537. data/tracks/vimscript/config/exercise_readme.go.tmpl +16 -0
  538. data/tracks/vimscript/exercises/allergies/README.md +46 -0
  539. data/tracks/vimscript/exercises/anagram/README.md +22 -0
  540. data/tracks/vimscript/exercises/atbash-cipher/README.md +43 -0
  541. data/tracks/vimscript/exercises/beer-song/README.md +336 -0
  542. data/tracks/vimscript/exercises/bob/README.md +27 -0
  543. data/tracks/vimscript/exercises/difference-of-squares/README.md +28 -0
  544. data/tracks/vimscript/exercises/etl/README.md +60 -0
  545. data/tracks/vimscript/exercises/hamming/README.md +51 -0
  546. data/tracks/vimscript/exercises/hello-world/README.md +30 -0
  547. data/tracks/vimscript/exercises/largest-series-product/README.md +29 -0
  548. data/tracks/vimscript/exercises/leap/README.md +42 -0
  549. data/tracks/vimscript/exercises/nucleotide-count/README.md +42 -0
  550. data/tracks/vimscript/exercises/pangram/README.md +24 -0
  551. data/tracks/vimscript/exercises/phone-number/README.md +43 -0
  552. data/tracks/vimscript/exercises/raindrops/README.md +33 -0
  553. data/tracks/vimscript/exercises/rna-transcription/README.md +34 -0
  554. data/tracks/vimscript/exercises/roman-numerals/README.md +58 -0
  555. data/tracks/vimscript/exercises/scrabble-score/README.md +53 -0
  556. data/tracks/vimscript/exercises/triangle/README.md +35 -0
  557. data/tracks/vimscript/exercises/word-count/README.md +28 -0
  558. metadata +466 -86
  559. data/tracks/java/exercises/anagram/.meta/readme.go.tmpl +0 -17
  560. data/tracks/java/exercises/atbash-cipher/.meta/readme.go.tmpl +0 -17
  561. data/tracks/java/exercises/bank-account/.meta/readme.go.tmpl +0 -17
  562. data/tracks/java/exercises/beer-song/.meta/readme.go.tmpl +0 -17
  563. data/tracks/java/exercises/binary/.meta/readme.go.tmpl +0 -17
  564. data/tracks/java/exercises/binary-search/.meta/readme.go.tmpl +0 -17
  565. data/tracks/java/exercises/binary-search-tree/.meta/readme.go.tmpl +0 -17
  566. data/tracks/java/exercises/bob/.meta/readme.go.tmpl +0 -17
  567. data/tracks/java/exercises/book-store/.meta/readme.go.tmpl +0 -17
  568. data/tracks/java/exercises/bowling/.meta/readme.go.tmpl +0 -17
  569. data/tracks/java/exercises/bracket-push/.meta/readme.go.tmpl +0 -17
  570. data/tracks/java/exercises/change/.meta/readme.go.tmpl +0 -17
  571. data/tracks/java/exercises/circular-buffer/.meta/readme.go.tmpl +0 -17
  572. data/tracks/java/exercises/clock/.meta/readme.go.tmpl +0 -17
  573. data/tracks/java/exercises/collatz-conjecture/.meta/readme.go.tmpl +0 -17
  574. data/tracks/java/exercises/complex-numbers/.meta/readme.go.tmpl +0 -17
  575. data/tracks/java/exercises/crypto-square/.meta/readme.go.tmpl +0 -17
  576. data/tracks/java/exercises/custom-set/.meta/readme.go.tmpl +0 -17
  577. data/tracks/java/exercises/diamond/.meta/readme.go.tmpl +0 -17
  578. data/tracks/java/exercises/difference-of-squares/.meta/readme.go.tmpl +0 -17
  579. data/tracks/java/exercises/etl/.meta/readme.go.tmpl +0 -17
  580. data/tracks/java/exercises/flatten-array/.meta/readme.go.tmpl +0 -17
  581. data/tracks/java/exercises/food-chain/.meta/readme.go.tmpl +0 -17
  582. data/tracks/java/exercises/gigasecond/.meta/readme.go.tmpl +0 -17
  583. data/tracks/java/exercises/grade-school/.meta/readme.go.tmpl +0 -17
  584. data/tracks/java/exercises/hamming/.meta/readme.go.tmpl +0 -17
  585. data/tracks/java/exercises/hello-world/.meta/readme.go.tmpl +0 -17
  586. data/tracks/java/exercises/hexadecimal/.meta/readme.go.tmpl +0 -17
  587. data/tracks/java/exercises/isogram/.meta/readme.go.tmpl +0 -17
  588. data/tracks/java/exercises/kindergarten-garden/.meta/readme.go.tmpl +0 -17
  589. data/tracks/java/exercises/largest-series-product/.meta/readme.go.tmpl +0 -17
  590. data/tracks/java/exercises/linked-list/.meta/readme.go.tmpl +0 -17
  591. data/tracks/java/exercises/list-ops/.meta/readme.go.tmpl +0 -17
  592. data/tracks/java/exercises/luhn/.meta/readme.go.tmpl +0 -17
  593. data/tracks/java/exercises/matrix/.meta/readme.go.tmpl +0 -17
  594. data/tracks/java/exercises/meetup/.meta/readme.go.tmpl +0 -17
  595. data/tracks/java/exercises/minesweeper/.meta/readme.go.tmpl +0 -17
  596. data/tracks/java/exercises/nth-prime/.meta/readme.go.tmpl +0 -17
  597. data/tracks/java/exercises/nucleotide-count/.meta/readme.go.tmpl +0 -17
  598. data/tracks/java/exercises/ocr-numbers/.meta/readme.go.tmpl +0 -17
  599. data/tracks/java/exercises/octal/.meta/readme.go.tmpl +0 -17
  600. data/tracks/java/exercises/palindrome-products/.meta/readme.go.tmpl +0 -17
  601. data/tracks/java/exercises/pangram/.meta/readme.go.tmpl +0 -17
  602. data/tracks/java/exercises/pascals-triangle/.meta/readme.go.tmpl +0 -17
  603. data/tracks/java/exercises/perfect-numbers/.meta/readme.go.tmpl +0 -17
  604. data/tracks/java/exercises/phone-number/.meta/readme.go.tmpl +0 -17
  605. data/tracks/java/exercises/pig-latin/.meta/readme.go.tmpl +0 -17
  606. data/tracks/java/exercises/poker/.meta/readme.go.tmpl +0 -17
  607. data/tracks/java/exercises/prime-factors/.meta/readme.go.tmpl +0 -17
  608. data/tracks/java/exercises/pythagorean-triplet/.meta/readme.go.tmpl +0 -17
  609. data/tracks/java/exercises/queen-attack/.meta/readme.go.tmpl +0 -17
  610. data/tracks/java/exercises/raindrops/.meta/readme.go.tmpl +0 -17
  611. data/tracks/java/exercises/rectangles/.meta/readme.go.tmpl +0 -17
  612. data/tracks/java/exercises/rna-transcription/.meta/readme.go.tmpl +0 -17
  613. data/tracks/java/exercises/robot-name/.meta/readme.go.tmpl +0 -17
  614. data/tracks/java/exercises/robot-simulator/.meta/readme.go.tmpl +0 -17
  615. data/tracks/java/exercises/roman-numerals/.meta/readme.go.tmpl +0 -17
  616. data/tracks/java/exercises/run-length-encoding/.meta/readme.go.tmpl +0 -17
  617. data/tracks/java/exercises/saddle-points/.meta/readme.go.tmpl +0 -17
  618. data/tracks/java/exercises/scrabble-score/.meta/readme.go.tmpl +0 -17
  619. data/tracks/java/exercises/secret-handshake/.meta/readme.go.tmpl +0 -17
  620. data/tracks/java/exercises/series/.meta/readme.go.tmpl +0 -17
  621. data/tracks/java/exercises/sieve/.meta/readme.go.tmpl +0 -17
  622. data/tracks/java/exercises/simple-cipher/.meta/readme.go.tmpl +0 -17
  623. data/tracks/java/exercises/simple-linked-list/.meta/readme.go.tmpl +0 -17
  624. data/tracks/java/exercises/space-age/.meta/readme.go.tmpl +0 -17
  625. data/tracks/java/exercises/spiral-matrix/.meta/readme.go.tmpl +0 -17
  626. data/tracks/java/exercises/strain/.meta/readme.go.tmpl +0 -17
  627. data/tracks/java/exercises/sublist/.meta/readme.go.tmpl +0 -17
  628. data/tracks/java/exercises/sum-of-multiples/.meta/readme.go.tmpl +0 -17
  629. data/tracks/java/exercises/transpose/.meta/readme.go.tmpl +0 -17
  630. data/tracks/java/exercises/triangle/.meta/readme.go.tmpl +0 -17
  631. data/tracks/java/exercises/trinary/.meta/readme.go.tmpl +0 -17
  632. data/tracks/java/exercises/twelve-days/.meta/readme.go.tmpl +0 -17
  633. data/tracks/java/exercises/two-fer/.meta/readme.go.tmpl +0 -17
  634. data/tracks/java/exercises/word-count/.meta/readme.go.tmpl +0 -17
  635. data/tracks/java/exercises/word-search/.meta/readme.go.tmpl +0 -17
  636. data/tracks/java/exercises/wordy/.meta/readme.go.tmpl +0 -17
@@ -0,0 +1,95 @@
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
+ ## Setup
68
+
69
+ Go through the setup instructions for JavaScript to
70
+ install the necessary dependencies:
71
+
72
+ http://exercism.io/languages/javascript
73
+
74
+ ## Making the Test Suite Pass
75
+
76
+ Execute the tests with:
77
+
78
+ jasmine <exercise-name>.spec.js
79
+
80
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
81
+ test the Hello World exercise:
82
+
83
+ jasmine hello-world.spec.js
84
+
85
+ In many test suites all but the first test have been skipped.
86
+
87
+ Once you get a test passing, you can unskip the next one by
88
+ changing `xit` to `it`.
89
+
90
+ ## Source
91
+
92
+ The Luhn Algorithm on Wikipedia [http://en.wikipedia.org/wiki/Luhn_algorithm](http://en.wikipedia.org/wiki/Luhn_algorithm)
93
+
94
+ ## Submitting Incomplete Solutions
95
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,69 @@
1
+ # Matrix
2
+
3
+ Given a string representing a matrix of numbers, return the rows and columns of
4
+ that matrix.
5
+
6
+ So given a string with embedded newlines like:
7
+
8
+ > 9 8 7
9
+ > 5 3 2
10
+ > 6 6 7
11
+
12
+ representing this matrix:
13
+
14
+ ```plain
15
+ 0 1 2
16
+ |---------
17
+ 0 | 9 8 7
18
+ 1 | 5 3 2
19
+ 2 | 6 6 7
20
+ ```
21
+
22
+ your code should be able to spit out:
23
+
24
+ - A list of the rows, reading each row left-to-right while moving
25
+ top-to-bottom across the rows,
26
+ - A list of the columns, reading each column top-to-bottom while moving
27
+ from left-to-right.
28
+
29
+ The rows for our example matrix:
30
+
31
+ - 9, 8, 7
32
+ - 5, 3, 2
33
+ - 6, 6, 7
34
+
35
+ And its columns:
36
+
37
+ - 9, 5, 6
38
+ - 8, 3, 6
39
+ - 7, 2, 7
40
+
41
+ ## Setup
42
+
43
+ Go through the setup instructions for JavaScript to
44
+ install the necessary dependencies:
45
+
46
+ http://exercism.io/languages/javascript
47
+
48
+ ## Making the Test Suite Pass
49
+
50
+ Execute the tests with:
51
+
52
+ jasmine <exercise-name>.spec.js
53
+
54
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
55
+ test the Hello World exercise:
56
+
57
+ jasmine hello-world.spec.js
58
+
59
+ In many test suites all but the first test have been skipped.
60
+
61
+ Once you get a test passing, you can unskip the next one by
62
+ changing `xit` to `it`.
63
+
64
+ ## Source
65
+
66
+ Warmup to the `saddle-points` warmup. [http://jumpstartlab.com](http://jumpstartlab.com)
67
+
68
+ ## Submitting Incomplete Solutions
69
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,54 @@
1
+ # Meetup
2
+
3
+ Calculate the date of meetups.
4
+
5
+ Typically meetups happen on the same day of the week. In this exercise, you will take
6
+ a description of a meetup date, and return the actual meetup date.
7
+
8
+ Examples of general descriptions are:
9
+
10
+ - the first Monday of January 2017
11
+ - the third Tuesday of January 2017
12
+ - the Wednesteenth of January 2017
13
+ - the last Thursday of January 2017
14
+
15
+ Note that "Monteenth", "Tuesteenth", etc are all made up words. There
16
+ was a meetup whose members realized that there are exactly 7 numbered days in a month that
17
+ end in '-teenth'. Therefore, one is guaranteed that each day of the week
18
+ (Monday, Tuesday, ...) will have exactly one date that is named with '-teenth'
19
+ in every month.
20
+
21
+ Given examples of a meetup dates, each containing a month, day, year, and descriptor
22
+ (first, second, teenth, etc), calculate the date of the actual meetup.
23
+ For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2
24
+
25
+
26
+ ## Setup
27
+
28
+ Go through the setup instructions for JavaScript to
29
+ install the necessary dependencies:
30
+
31
+ http://exercism.io/languages/javascript
32
+
33
+ ## Making the Test Suite Pass
34
+
35
+ Execute the tests with:
36
+
37
+ jasmine <exercise-name>.spec.js
38
+
39
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
40
+ test the Hello World exercise:
41
+
42
+ jasmine hello-world.spec.js
43
+
44
+ In many test suites all but the first test have been skipped.
45
+
46
+ Once you get a test passing, you can unskip the next one by
47
+ changing `xit` to `it`.
48
+
49
+ ## Source
50
+
51
+ Jeremy Hinegardner mentioned a Boulder meetup that happens on the Wednesteenth of every month [https://twitter.com/copiousfreetime](https://twitter.com/copiousfreetime)
52
+
53
+ ## Submitting Incomplete Solutions
54
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,54 @@
1
+ # Minesweeper
2
+
3
+ Add the numbers to a minesweeper board.
4
+
5
+ Minesweeper is a popular game where the user has to find the mines using
6
+ numeric hints that indicate how many mines are directly adjacent
7
+ (horizontally, vertically, diagonally) to a square.
8
+
9
+ In this exercise you have to create some code that counts the number of
10
+ mines adjacent to a square and transforms boards like this (where `*`
11
+ indicates a mine):
12
+
13
+ +-----+
14
+ | * * |
15
+ | * |
16
+ | * |
17
+ | |
18
+ +-----+
19
+
20
+ into this:
21
+
22
+ +-----+
23
+ |1*3*1|
24
+ |13*31|
25
+ | 2*2 |
26
+ | 111 |
27
+ +-----+
28
+
29
+ ## Setup
30
+
31
+ Go through the setup instructions for JavaScript to
32
+ install the necessary dependencies:
33
+
34
+ http://exercism.io/languages/javascript
35
+
36
+ ## Making the Test Suite Pass
37
+
38
+ Execute the tests with:
39
+
40
+ jasmine <exercise-name>.spec.js
41
+
42
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
43
+ test the Hello World exercise:
44
+
45
+ jasmine hello-world.spec.js
46
+
47
+ In many test suites all but the first test have been skipped.
48
+
49
+ Once you get a test passing, you can unskip the next one by
50
+ changing `xit` to `it`.
51
+
52
+
53
+ ## Submitting Incomplete Solutions
54
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,39 @@
1
+ # Nth Prime
2
+
3
+ Given a number n, determine what the nth prime is.
4
+
5
+ By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that
6
+ the 6th prime is 13.
7
+
8
+ If your language provides methods in the standard library to deal with prime
9
+ numbers, pretend they don't exist and implement them yourself.
10
+
11
+ ## Setup
12
+
13
+ Go through the setup instructions for JavaScript to
14
+ install the necessary dependencies:
15
+
16
+ http://exercism.io/languages/javascript
17
+
18
+ ## Making the Test Suite Pass
19
+
20
+ Execute the tests with:
21
+
22
+ jasmine <exercise-name>.spec.js
23
+
24
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
25
+ test the Hello World exercise:
26
+
27
+ jasmine hello-world.spec.js
28
+
29
+ In many test suites all but the first test have been skipped.
30
+
31
+ Once you get a test passing, you can unskip the next one by
32
+ changing `xit` to `it`.
33
+
34
+ ## Source
35
+
36
+ A variation on Problem 7 at Project Euler [http://projecteuler.net/problem=7](http://projecteuler.net/problem=7)
37
+
38
+ ## Submitting Incomplete Solutions
39
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,57 @@
1
+ # Nucleotide Count
2
+
3
+ Given a DNA string, compute how many times each nucleotide occurs in the string.
4
+
5
+ DNA is represented by an alphabet of the following symbols: 'A', 'C',
6
+ 'G', and 'T'.
7
+
8
+ Each symbol represents a nucleotide, which is a fancy name for the
9
+ particular molecules that happen to make up a large part of DNA.
10
+
11
+ Shortest intro to biochemistry EVAR:
12
+
13
+ - twigs are to birds nests as
14
+ - nucleotides are to DNA and RNA as
15
+ - amino acids are to proteins as
16
+ - sugar is to starch as
17
+ - oh crap lipids
18
+
19
+ I'm not going to talk about lipids because they're crazy complex.
20
+
21
+ So back to nucleotides.
22
+
23
+ DNA contains four types of them: adenine (`A`), cytosine (`C`), guanine
24
+ (`G`), and thymine (`T`).
25
+
26
+ RNA contains a slightly different set of nucleotides, but we don't care
27
+ about that for now.
28
+
29
+ ## Setup
30
+
31
+ Go through the setup instructions for JavaScript to
32
+ install the necessary dependencies:
33
+
34
+ http://exercism.io/languages/javascript
35
+
36
+ ## Making the Test Suite Pass
37
+
38
+ Execute the tests with:
39
+
40
+ jasmine <exercise-name>.spec.js
41
+
42
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
43
+ test the Hello World exercise:
44
+
45
+ jasmine hello-world.spec.js
46
+
47
+ In many test suites all but the first test have been skipped.
48
+
49
+ Once you get a test passing, you can unskip the next one by
50
+ changing `xit` to `it`.
51
+
52
+ ## Source
53
+
54
+ The Calculating DNA Nucleotides_problem at Rosalind [http://rosalind.info/problems/dna/](http://rosalind.info/problems/dna/)
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,109 @@
1
+ # Ocr Numbers
2
+
3
+ Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is
4
+ represented, or whether it is garbled.
5
+
6
+ # Step One
7
+
8
+ To begin with, convert a simple binary font to a string containing 0 or 1.
9
+
10
+ The binary font uses pipes and underscores, four rows high and three columns wide.
11
+
12
+ ```
13
+ _ #
14
+ | | # zero.
15
+ |_| #
16
+ # the fourth row is always blank
17
+ ```
18
+
19
+ Is converted to "0"
20
+
21
+ ```
22
+ #
23
+ | # one.
24
+ | #
25
+ # (blank fourth row)
26
+ ```
27
+
28
+ Is converted to "1"
29
+
30
+ If the input is the correct size, but not recognizable, your program should return '?'
31
+
32
+ If the input is the incorrect size, your program should return an error.
33
+
34
+ # Step Two
35
+
36
+ Update your program to recognize multi-character binary strings, replacing garbled numbers with ?
37
+
38
+ # Step Three
39
+
40
+ Update your program to recognize all numbers 0 through 9, both individually and as part of a larger string.
41
+
42
+ ```
43
+ _
44
+ _|
45
+ |_
46
+
47
+ ```
48
+
49
+ Is converted to "2"
50
+
51
+ ```
52
+ _ _ _ _ _ _ _ _ #
53
+ | _| _||_||_ |_ ||_||_|| | # decimal numbers.
54
+ ||_ _| | _||_| ||_| _||_| #
55
+ # fourth line is always blank
56
+ ```
57
+
58
+ Is converted to "1234567890"
59
+
60
+ # Step Four
61
+
62
+ Update your program to handle multiple numbers, one per line. When converting several lines, join the lines with commas.
63
+
64
+ ```
65
+ _ _
66
+ | _| _|
67
+ ||_ _|
68
+
69
+ _ _
70
+ |_||_ |_
71
+ | _||_|
72
+
73
+ _ _ _
74
+ ||_||_|
75
+ ||_| _|
76
+
77
+ ```
78
+
79
+ Is converted to "123,456,789"
80
+
81
+ ## Setup
82
+
83
+ Go through the setup instructions for JavaScript to
84
+ install the necessary dependencies:
85
+
86
+ http://exercism.io/languages/javascript
87
+
88
+ ## Making the Test Suite Pass
89
+
90
+ Execute the tests with:
91
+
92
+ jasmine <exercise-name>.spec.js
93
+
94
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
95
+ test the Hello World exercise:
96
+
97
+ jasmine hello-world.spec.js
98
+
99
+ In many test suites all but the first test have been skipped.
100
+
101
+ Once you get a test passing, you can unskip the next one by
102
+ changing `xit` to `it`.
103
+
104
+ ## Source
105
+
106
+ Inspired by the Bank OCR kata [http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR](http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR)
107
+
108
+ ## Submitting Incomplete Solutions
109
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,73 @@
1
+ # Octal
2
+
3
+ Convert an octal number, represented as a string (e.g. '1735263'), to its
4
+ decimal equivalent using first principles (i.e. no, you may not use built-in or
5
+ external libraries to accomplish the conversion).
6
+
7
+ Implement octal to decimal conversion. Given an octal input
8
+ string, your program should produce a decimal output.
9
+
10
+ ## Note
11
+ - Implement the conversion yourself.
12
+ Do not use something else to perform the conversion for you.
13
+ - Treat invalid input as octal 0.
14
+
15
+ ## About Octal (Base-8)
16
+ Decimal is a base-10 system.
17
+
18
+ A number 233 in base 10 notation can be understood
19
+ as a linear combination of powers of 10:
20
+
21
+ - The rightmost digit gets multiplied by 10^0 = 1
22
+ - The next number gets multiplied by 10^1 = 10
23
+ - ...
24
+ - The *n*th number gets multiplied by 10^*(n-1)*.
25
+ - All these values are summed.
26
+
27
+ So:
28
+ ```
29
+ 233 # decimal
30
+ = 2*10^2 + 3*10^1 + 3*10^0
31
+ = 2*100 + 3*10 + 3*1
32
+ ```
33
+
34
+ Octal is similar, but uses powers of 8 rather than powers of 10.
35
+
36
+ So:
37
+ ```
38
+ 233 # octal
39
+ = 2*8^2 + 3*8^1 + 3*8^0
40
+ = 2*64 + 3*8 + 3*1
41
+ = 128 + 24 + 3
42
+ = 155
43
+ ```
44
+
45
+ ## Setup
46
+
47
+ Go through the setup instructions for JavaScript to
48
+ install the necessary dependencies:
49
+
50
+ http://exercism.io/languages/javascript
51
+
52
+ ## Making the Test Suite Pass
53
+
54
+ Execute the tests with:
55
+
56
+ jasmine <exercise-name>.spec.js
57
+
58
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
59
+ test the Hello World exercise:
60
+
61
+ jasmine hello-world.spec.js
62
+
63
+ In many test suites all but the first test have been skipped.
64
+
65
+ Once you get a test passing, you can unskip the next one by
66
+ changing `xit` to `it`.
67
+
68
+ ## Source
69
+
70
+ All of Computer Science [http://www.wolframalpha.com/input/?i=base+8](http://www.wolframalpha.com/input/?i=base+8)
71
+
72
+ ## Submitting Incomplete Solutions
73
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,64 @@
1
+ # Palindrome Products
2
+
3
+ Detect palindrome products in a given range.
4
+
5
+ A palindromic number is a number that remains the same when its digits are
6
+ reversed. For example, `121` is a palindromic number but `112` is not.
7
+
8
+ Given the definition of a palindromic number, we define a palindrome _product_
9
+ to be the product `c`, such that `a * b = c`, where `c` is a palindromic number and
10
+ `a` and `b` are integers (possibly, but _not_ necessarily palindromic numbers).
11
+
12
+ For example, the palindromic number 9009 can be written as the palindrome
13
+ product: `91 * 99 = 9009`.
14
+
15
+ It's possible (and indeed common) for a palindrome product to be the product
16
+ of multiple combinations of numbers. For example, the palindrome product `9` has
17
+ the factors `(1, 9)`, `(3, 3)`, and `(9, 1)`.
18
+
19
+ Write a program that given a range of integers, returns the smallest and largest
20
+ palindromic product within that range, along with all of it's factors.
21
+
22
+ ## Example 1
23
+
24
+ Given the range `[1, 9]` (both inclusive)...
25
+
26
+ The smallest product is `1`. It's factors are `(1, 1)`.
27
+ The largest product is `9`. It's factors are `(1, 9)`, `(3, 3)`, and `(9, 1)`.
28
+
29
+ ## Example 2
30
+
31
+ Given the range `[10, 99]` (both inclusive)...
32
+
33
+ The smallest palindrome product is `121`. It's factors are `(11, 11)`.
34
+ The largest palindrome product is `9009`. It's factors are `(91, 99)` and `(99, 91)`.
35
+
36
+ ## Setup
37
+
38
+ Go through the setup instructions for JavaScript to
39
+ install the necessary dependencies:
40
+
41
+ http://exercism.io/languages/javascript
42
+
43
+ ## Making the Test Suite Pass
44
+
45
+ Execute the tests with:
46
+
47
+ jasmine <exercise-name>.spec.js
48
+
49
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
50
+ test the Hello World exercise:
51
+
52
+ jasmine hello-world.spec.js
53
+
54
+ In many test suites all but the first test have been skipped.
55
+
56
+ Once you get a test passing, you can unskip the next one by
57
+ changing `xit` to `it`.
58
+
59
+ ## Source
60
+
61
+ Problem 4 at Project Euler [http://projecteuler.net/problem=4](http://projecteuler.net/problem=4)
62
+
63
+ ## Submitting Incomplete Solutions
64
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,39 @@
1
+ # Pangram
2
+
3
+ Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
4
+ "every letter") is a sentence using every letter of the alphabet at least once.
5
+ The best known English pangram is:
6
+ > The quick brown fox jumps over the lazy dog.
7
+
8
+ The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
9
+ insensitive. Input will not contain non-ASCII symbols.
10
+
11
+ ## Setup
12
+
13
+ Go through the setup instructions for JavaScript to
14
+ install the necessary dependencies:
15
+
16
+ http://exercism.io/languages/javascript
17
+
18
+ ## Making the Test Suite Pass
19
+
20
+ Execute the tests with:
21
+
22
+ jasmine <exercise-name>.spec.js
23
+
24
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
25
+ test the Hello World exercise:
26
+
27
+ jasmine hello-world.spec.js
28
+
29
+ In many test suites all but the first test have been skipped.
30
+
31
+ Once you get a test passing, you can unskip the next one by
32
+ changing `xit` to `it`.
33
+
34
+ ## Source
35
+
36
+ Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
37
+
38
+ ## Submitting Incomplete Solutions
39
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,45 @@
1
+ # Pascals Triangle
2
+
3
+ Compute Pascal's triangle up to a given number of rows.
4
+
5
+ In Pascal's Triangle each number is computed by adding the numbers to
6
+ the right and left of the current position in the previous row.
7
+
8
+ ```plain
9
+ 1
10
+ 1 1
11
+ 1 2 1
12
+ 1 3 3 1
13
+ 1 4 6 4 1
14
+ # ... etc
15
+ ```
16
+
17
+ ## Setup
18
+
19
+ Go through the setup instructions for JavaScript to
20
+ install the necessary dependencies:
21
+
22
+ http://exercism.io/languages/javascript
23
+
24
+ ## Making the Test Suite Pass
25
+
26
+ Execute the tests with:
27
+
28
+ jasmine <exercise-name>.spec.js
29
+
30
+ Replace `<exercise-name>` with the name of the current exercise. E.g., to
31
+ test the Hello World exercise:
32
+
33
+ jasmine hello-world.spec.js
34
+
35
+ In many test suites all but the first test have been skipped.
36
+
37
+ Once you get a test passing, you can unskip the next one by
38
+ changing `xit` to `it`.
39
+
40
+ ## Source
41
+
42
+ Pascal's Triangle at Wolfram Math World [http://mathworld.wolfram.com/PascalsTriangle.html](http://mathworld.wolfram.com/PascalsTriangle.html)
43
+
44
+ ## Submitting Incomplete Solutions
45
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.