trackler 2.2.1.4 → 2.2.1.5

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 (442) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/bash/config.json +10 -0
  4. data/tracks/bash/exercises/error-handling/error_handling_test.sh +31 -0
  5. data/tracks/bash/exercises/error-handling/example.sh +9 -0
  6. data/tracks/ceylon/config/maintainers.json +25 -0
  7. data/tracks/chapel/README.md +1 -1
  8. data/tracks/chapel/config/exercise_readme.go.tmpl +16 -0
  9. data/tracks/chapel/config/maintainers.json +5 -0
  10. data/tracks/chapel/config.json +0 -5
  11. data/tracks/coffeescript/config/exercise_readme.go.tmpl +16 -0
  12. data/tracks/coffeescript/config.json +84 -26
  13. data/tracks/coffeescript/exercises/accumulate/README.md +43 -0
  14. data/tracks/coffeescript/exercises/anagram/README.md +21 -0
  15. data/tracks/coffeescript/exercises/atbash-cipher/README.md +42 -0
  16. data/tracks/coffeescript/exercises/beer-song/README.md +335 -0
  17. data/tracks/coffeescript/exercises/binary/README.md +43 -0
  18. data/tracks/coffeescript/exercises/binary-search-tree/README.md +68 -0
  19. data/tracks/coffeescript/exercises/bob/README.md +26 -0
  20. data/tracks/coffeescript/exercises/clock/README.md +21 -0
  21. data/tracks/coffeescript/exercises/hello-world/README.md +29 -0
  22. data/tracks/coffeescript/exercises/hexadecimal/README.md +22 -0
  23. data/tracks/coffeescript/exercises/linked-list/README.md +42 -0
  24. data/tracks/coffeescript/exercises/luhn/README.md +79 -0
  25. data/tracks/coffeescript/exercises/nth-prime/README.md +23 -0
  26. data/tracks/coffeescript/exercises/nucleotide-count/README.md +41 -0
  27. data/tracks/coffeescript/exercises/palindrome-products/README.md +48 -0
  28. data/tracks/coffeescript/exercises/pascals-triangle/README.md +29 -0
  29. data/tracks/coffeescript/exercises/queen-attack/README.md +41 -0
  30. data/tracks/coffeescript/exercises/triangle/README.md +34 -0
  31. data/tracks/coffeescript/exercises/trinary/README.md +36 -0
  32. data/tracks/coffeescript/exercises/word-count/README.md +27 -0
  33. data/tracks/coffeescript/exercises/wordy/README.md +71 -0
  34. data/tracks/coldfusion/config/exercise_readme.go.tmpl +16 -0
  35. data/tracks/coldfusion/config.json +4 -6
  36. data/tracks/coldfusion/exercises/leap/README.md +33 -0
  37. data/tracks/coq/README.md +19 -32
  38. data/tracks/coq/config/exercise_readme.go.tmpl +16 -0
  39. data/tracks/coq/config.json +9 -5
  40. data/tracks/coq/exercises/hello-world/README.md +45 -0
  41. data/tracks/coq/exercises/rna-transcription/README.md +49 -0
  42. data/tracks/coq/exercises/tautology/README.md +33 -0
  43. data/tracks/cpp/config/exercise_readme.go.tmpl +16 -0
  44. data/tracks/cpp/config.json +144 -41
  45. data/tracks/cpp/exercises/allergies/README.md +69 -0
  46. data/tracks/cpp/exercises/anagram/README.md +45 -0
  47. data/tracks/cpp/exercises/atbash-cipher/README.md +66 -0
  48. data/tracks/cpp/exercises/beer-song/README.md +359 -0
  49. data/tracks/cpp/exercises/binary/README.md +67 -0
  50. data/tracks/cpp/exercises/bob/README.md +50 -0
  51. data/tracks/cpp/exercises/clock/README.md +45 -0
  52. data/tracks/cpp/exercises/crypto-square/README.md +106 -0
  53. data/tracks/cpp/exercises/difference-of-squares/README.md +51 -0
  54. data/tracks/cpp/exercises/etl/README.md +83 -0
  55. data/tracks/cpp/exercises/food-chain/README.md +102 -0
  56. data/tracks/cpp/exercises/gigasecond/README.md +43 -0
  57. data/tracks/cpp/exercises/grade-school/README.md +74 -0
  58. data/tracks/cpp/exercises/grains/README.md +66 -0
  59. data/tracks/cpp/exercises/hamming/README.md +74 -0
  60. data/tracks/cpp/exercises/hello-world/README.md +53 -0
  61. data/tracks/cpp/exercises/hexadecimal/README.md +46 -0
  62. data/tracks/cpp/exercises/leap/README.md +65 -0
  63. data/tracks/cpp/exercises/meetup/README.md +62 -0
  64. data/tracks/cpp/exercises/nth-prime/README.md +47 -0
  65. data/tracks/cpp/exercises/nucleotide-count/README.md +65 -0
  66. data/tracks/cpp/exercises/phone-number/README.md +66 -0
  67. data/tracks/cpp/exercises/prime-factors/README.md +68 -0
  68. data/tracks/cpp/exercises/queen-attack/README.md +65 -0
  69. data/tracks/cpp/exercises/raindrops/README.md +56 -0
  70. data/tracks/cpp/exercises/rna-transcription/README.md +57 -0
  71. data/tracks/cpp/exercises/robot-name/README.md +54 -0
  72. data/tracks/cpp/exercises/roman-numerals/README.md +81 -0
  73. data/tracks/cpp/exercises/say/README.md +101 -0
  74. data/tracks/cpp/exercises/scrabble-score/README.md +76 -0
  75. data/tracks/cpp/exercises/series/README.md +59 -0
  76. data/tracks/cpp/exercises/sieve/README.md +66 -0
  77. data/tracks/cpp/exercises/space-age/README.md +56 -0
  78. data/tracks/cpp/exercises/sum-of-multiples/README.md +50 -0
  79. data/tracks/cpp/exercises/triangle/README.md +58 -0
  80. data/tracks/cpp/exercises/trinary/README.md +60 -0
  81. data/tracks/cpp/exercises/word-count/README.md +51 -0
  82. data/tracks/crystal/config.json +69 -3
  83. data/tracks/d/config/exercise_readme.go.tmpl +16 -0
  84. data/tracks/d/config.json +54 -3
  85. data/tracks/d/exercises/bob/README.md +49 -0
  86. data/tracks/d/exercises/circular-buffer/README.md +81 -0
  87. data/tracks/d/exercises/crypto-square/README.md +105 -0
  88. data/tracks/d/exercises/difference-of-squares/README.md +50 -0
  89. data/tracks/d/exercises/etl/README.md +82 -0
  90. data/tracks/d/exercises/gigasecond/README.md +42 -0
  91. data/tracks/d/exercises/hamming/README.md +73 -0
  92. data/tracks/d/exercises/hello-world/README.md +52 -0
  93. data/tracks/d/exercises/leap/README.md +64 -0
  94. data/tracks/d/exercises/nucleotide-count/README.md +64 -0
  95. data/tracks/d/exercises/pangram/README.md +46 -0
  96. data/tracks/d/exercises/raindrops/README.md +55 -0
  97. data/tracks/d/exercises/react/README.md +50 -0
  98. data/tracks/d/exercises/rna-transcription/README.md +56 -0
  99. data/tracks/d/exercises/robot-name/README.md +53 -0
  100. data/tracks/d/exercises/roman-numerals/README.md +80 -0
  101. data/tracks/d/exercises/series/README.md +58 -0
  102. data/tracks/d/exercises/triangle/README.md +57 -0
  103. data/tracks/delphi/config/maintainers.json +25 -0
  104. data/tracks/ecmascript/config/maintainers.json +35 -0
  105. data/tracks/elisp/config/exercise_readme.go.tmpl +16 -0
  106. data/tracks/elisp/config.json +79 -22
  107. data/tracks/elisp/exercises/allergies/README.md +37 -0
  108. data/tracks/elisp/exercises/anagram/README.md +13 -0
  109. data/tracks/elisp/exercises/atbash-cipher/README.md +34 -0
  110. data/tracks/elisp/exercises/binary/README.md +35 -0
  111. data/tracks/elisp/exercises/bob/README.md +18 -0
  112. data/tracks/elisp/exercises/difference-of-squares/README.md +19 -0
  113. data/tracks/elisp/exercises/etl/README.md +51 -0
  114. data/tracks/elisp/exercises/gigasecond/README.md +11 -0
  115. data/tracks/elisp/exercises/grains/README.md +34 -0
  116. data/tracks/elisp/exercises/hamming/README.md +42 -0
  117. data/tracks/elisp/exercises/hello-world/README.md +21 -0
  118. data/tracks/elisp/exercises/leap/README.md +33 -0
  119. data/tracks/elisp/exercises/nucleotide-count/README.md +33 -0
  120. data/tracks/elisp/exercises/perfect-numbers/README.md +24 -0
  121. data/tracks/elisp/exercises/phone-number/README.md +34 -0
  122. data/tracks/elisp/exercises/raindrops/README.md +24 -0
  123. data/tracks/elisp/exercises/rna-transcription/README.md +25 -0
  124. data/tracks/elisp/exercises/robot-name/README.md +22 -0
  125. data/tracks/elisp/exercises/roman-numerals/README.md +49 -0
  126. data/tracks/elisp/exercises/word-count/README.md +19 -0
  127. data/tracks/elixir/config/maintainers.json +35 -0
  128. data/tracks/elm/config/exercise_readme.go.tmpl +16 -0
  129. data/tracks/elm/config.json +96 -5
  130. data/tracks/elm/exercises/accumulate/README.md +65 -0
  131. data/tracks/elm/exercises/allergies/README.md +67 -0
  132. data/tracks/elm/exercises/anagram/README.md +43 -0
  133. data/tracks/elm/exercises/atbash-cipher/README.md +64 -0
  134. data/tracks/elm/exercises/bob/README.md +48 -0
  135. data/tracks/elm/exercises/difference-of-squares/README.md +49 -0
  136. data/tracks/elm/exercises/etl/README.md +81 -0
  137. data/tracks/elm/exercises/gigasecond/README.md +41 -0
  138. data/tracks/elm/exercises/grade-school/README.md +72 -0
  139. data/tracks/elm/exercises/grains/README.md +64 -0
  140. data/tracks/elm/exercises/hamming/README.md +72 -0
  141. data/tracks/elm/exercises/hello-world/README.md +51 -0
  142. data/tracks/elm/exercises/largest-series-product/README.md +50 -0
  143. data/tracks/elm/exercises/leap/README.md +63 -0
  144. data/tracks/elm/exercises/list-ops/README.md +40 -0
  145. data/tracks/elm/exercises/nucleotide-count/README.md +63 -0
  146. data/tracks/elm/exercises/pangram/README.md +45 -0
  147. data/tracks/elm/exercises/phone-number/README.md +64 -0
  148. data/tracks/elm/exercises/raindrops/README.md +54 -0
  149. data/tracks/elm/exercises/rna-transcription/README.md +55 -0
  150. data/tracks/elm/exercises/robot-simulator/README.md +64 -0
  151. data/tracks/elm/exercises/roman-numerals/README.md +79 -0
  152. data/tracks/elm/exercises/run-length-encoding/README.md +60 -0
  153. data/tracks/elm/exercises/say/README.md +99 -0
  154. data/tracks/elm/exercises/scrabble-score/README.md +74 -0
  155. data/tracks/elm/exercises/series/README.md +57 -0
  156. data/tracks/elm/exercises/space-age/README.md +54 -0
  157. data/tracks/elm/exercises/strain/README.md +70 -0
  158. data/tracks/elm/exercises/sublist/README.md +51 -0
  159. data/tracks/elm/exercises/sum-of-multiples/README.md +48 -0
  160. data/tracks/elm/exercises/triangle/README.md +56 -0
  161. data/tracks/elm/exercises/word-count/README.md +49 -0
  162. data/tracks/fortran/config/exercise_readme.go.tmpl +16 -0
  163. data/tracks/fortran/config.json +21 -5
  164. data/tracks/fortran/exercises/bob/README.md +18 -0
  165. data/tracks/fortran/exercises/difference-of-squares/README.md +19 -0
  166. data/tracks/fortran/exercises/hamming/README.md +42 -0
  167. data/tracks/fortran/exercises/hello-world/README.md +21 -0
  168. data/tracks/fortran/exercises/pangram/README.md +15 -0
  169. data/tracks/fortran/exercises/raindrops/README.md +24 -0
  170. data/tracks/fortran/exercises/rna-transcription/README.md +25 -0
  171. data/tracks/go/config/maintainers.json +85 -0
  172. data/tracks/go/config.json +2 -2
  173. data/tracks/groovy/config/exercise_readme.go.tmpl +16 -0
  174. data/tracks/groovy/exercises/difference-of-squares/README.md +33 -0
  175. data/tracks/groovy/exercises/gigasecond/README.md +25 -0
  176. data/tracks/groovy/exercises/grains/README.md +48 -0
  177. data/tracks/groovy/exercises/hamming/README.md +56 -0
  178. data/tracks/groovy/exercises/hello-world/README.md +35 -0
  179. data/tracks/groovy/exercises/leap/README.md +47 -0
  180. data/tracks/groovy/exercises/nth-prime/README.md +29 -0
  181. data/tracks/groovy/exercises/phone-number/README.md +48 -0
  182. data/tracks/groovy/exercises/raindrops/README.md +38 -0
  183. data/tracks/groovy/exercises/rna-transcription/README.md +39 -0
  184. data/tracks/groovy/exercises/robot-name/README.md +36 -0
  185. data/tracks/groovy/exercises/roman-numerals/README.md +63 -0
  186. data/tracks/groovy/exercises/word-count/README.md +33 -0
  187. data/tracks/haxe/config/exercise_readme.go.tmpl +16 -0
  188. data/tracks/haxe/config.json +0 -2
  189. data/tracks/haxe/exercises/bob/README.md +18 -0
  190. data/tracks/haxe/exercises/hello-world/README.md +21 -0
  191. data/tracks/idris/config/exercise_readme.go.tmpl +16 -0
  192. data/tracks/idris/config.json +9 -3
  193. data/tracks/idris/exercises/hamming/README.md +42 -0
  194. data/tracks/idris/exercises/hello-world/README.md +21 -0
  195. data/tracks/idris/exercises/leap/README.md +33 -0
  196. data/tracks/java/config/maintainers.json +45 -0
  197. data/tracks/java/exercises/hello-world/TUTORIAL.md +1 -1
  198. data/tracks/javascript/config/maintainers.json +85 -0
  199. data/tracks/julia/config/exercise_readme.go.tmpl +16 -0
  200. data/tracks/julia/config.json +81 -5
  201. data/tracks/julia/exercises/anagram/README.md +13 -0
  202. data/tracks/julia/exercises/atbash-cipher/README.md +34 -0
  203. data/tracks/julia/exercises/bob/README.md +18 -0
  204. data/tracks/julia/exercises/complex-numbers/README.md +24 -0
  205. data/tracks/julia/exercises/custom-set/README.md +16 -0
  206. data/tracks/julia/exercises/difference-of-squares/README.md +19 -0
  207. data/tracks/julia/exercises/etl/README.md +51 -0
  208. data/tracks/julia/exercises/gigasecond/README.md +11 -0
  209. data/tracks/julia/exercises/hamming/README.md +42 -0
  210. data/tracks/julia/exercises/hello-world/README.md +21 -0
  211. data/tracks/julia/exercises/isogram/README.md +19 -0
  212. data/tracks/julia/exercises/leap/README.md +33 -0
  213. data/tracks/julia/exercises/luhn/README.md +71 -0
  214. data/tracks/julia/exercises/nucleotide-count/README.md +33 -0
  215. data/tracks/julia/exercises/pangram/README.md +15 -0
  216. data/tracks/julia/exercises/pascals-triangle/README.md +21 -0
  217. data/tracks/julia/exercises/raindrops/README.md +24 -0
  218. data/tracks/julia/exercises/rna-transcription/README.md +25 -0
  219. data/tracks/julia/exercises/robot-name/README.md +41 -0
  220. data/tracks/julia/exercises/roman-numerals/README.md +49 -0
  221. data/tracks/julia/exercises/rotational-cipher/README.md +59 -0
  222. data/tracks/julia/exercises/scrabble-score/README.md +44 -0
  223. data/tracks/julia/exercises/secret-handshake/README.md +35 -0
  224. data/tracks/julia/exercises/sieve/README.md +34 -0
  225. data/tracks/julia/exercises/transpose/README.md +65 -0
  226. data/tracks/julia/exercises/trinary/README.md +28 -0
  227. data/tracks/julia/exercises/word-count/README.md +19 -0
  228. data/tracks/lfe/config/exercise_readme.go.tmpl +16 -0
  229. data/tracks/lfe/config.json +125 -33
  230. data/tracks/lfe/exercises/accumulate/README.md +51 -0
  231. data/tracks/lfe/exercises/allergies/README.md +53 -0
  232. data/tracks/lfe/exercises/anagram/README.md +29 -0
  233. data/tracks/lfe/exercises/atbash-cipher/README.md +50 -0
  234. data/tracks/lfe/exercises/bank-account/README.md +46 -0
  235. data/tracks/lfe/exercises/beer-song/README.md +343 -0
  236. data/tracks/lfe/exercises/binary/README.md +51 -0
  237. data/tracks/lfe/exercises/bob/README.md +34 -0
  238. data/tracks/lfe/exercises/circular-buffer/README.md +66 -0
  239. data/tracks/lfe/exercises/clock/README.md +29 -0
  240. data/tracks/lfe/exercises/difference-of-squares/README.md +35 -0
  241. data/tracks/lfe/exercises/etl/README.md +67 -0
  242. data/tracks/lfe/exercises/gigasecond/README.md +27 -0
  243. data/tracks/lfe/exercises/grade-school/README.md +58 -0
  244. data/tracks/lfe/exercises/grains/README.md +50 -0
  245. data/tracks/lfe/exercises/hamming/README.md +58 -0
  246. data/tracks/lfe/exercises/largest-series-product/README.md +36 -0
  247. data/tracks/lfe/exercises/leap/README.md +49 -0
  248. data/tracks/lfe/exercises/luhn/README.md +87 -0
  249. data/tracks/lfe/exercises/meetup/README.md +46 -0
  250. data/tracks/lfe/exercises/nucleotide-count/README.md +49 -0
  251. data/tracks/lfe/exercises/parallel-letter-frequency/README.md +27 -0
  252. data/tracks/lfe/exercises/phone-number/README.md +50 -0
  253. data/tracks/lfe/exercises/rna-transcription/README.md +41 -0
  254. data/tracks/lfe/exercises/robot-simulator/README.md +50 -0
  255. data/tracks/lfe/exercises/series/README.md +43 -0
  256. data/tracks/lfe/exercises/space-age/README.md +40 -0
  257. data/tracks/lfe/exercises/strain/README.md +56 -0
  258. data/tracks/lfe/exercises/sum-of-multiples/README.md +34 -0
  259. data/tracks/lfe/exercises/trinary/README.md +44 -0
  260. data/tracks/lfe/exercises/word-count/README.md +35 -0
  261. data/tracks/lua/config/maintainers.json +35 -0
  262. data/tracks/lua/config.json +225 -3
  263. data/tracks/nasm/config/exercise_readme.go.tmpl +16 -0
  264. data/tracks/nasm/config.json +0 -5
  265. data/tracks/nim/config/exercise_readme.go.tmpl +16 -0
  266. data/tracks/nim/config.json +56 -19
  267. data/tracks/nim/exercises/anagram/README.md +13 -0
  268. data/tracks/nim/exercises/binary/README.md +35 -0
  269. data/tracks/nim/exercises/bob/README.md +18 -0
  270. data/tracks/nim/exercises/difference-of-squares/README.md +19 -0
  271. data/tracks/nim/exercises/hamming/README.md +42 -0
  272. data/tracks/nim/exercises/hello-world/README.md +21 -0
  273. data/tracks/nim/exercises/leap/README.md +33 -0
  274. data/tracks/nim/exercises/nucleotide-count/README.md +33 -0
  275. data/tracks/nim/exercises/queen-attack/README.md +33 -0
  276. data/tracks/nim/exercises/raindrops/README.md +24 -0
  277. data/tracks/nim/exercises/react/README.md +19 -0
  278. data/tracks/nim/exercises/rna-transcription/README.md +25 -0
  279. data/tracks/nim/exercises/triangle/README.md +26 -0
  280. data/tracks/nim/exercises/word-count/README.md +19 -0
  281. data/tracks/objective-c/config/exercise_readme.go.tmpl +16 -0
  282. data/tracks/objective-c/config/maintainers.json +35 -0
  283. data/tracks/objective-c/config.json +168 -47
  284. data/tracks/objective-c/exercises/acronym/README.md +32 -0
  285. data/tracks/objective-c/exercises/all-your-base/README.md +52 -0
  286. data/tracks/objective-c/exercises/allergies/README.md +54 -0
  287. data/tracks/objective-c/exercises/anagram/README.md +30 -0
  288. data/tracks/objective-c/exercises/atbash-cipher/README.md +51 -0
  289. data/tracks/objective-c/exercises/beer-song/README.md +344 -0
  290. data/tracks/objective-c/exercises/binary-search/README.md +58 -0
  291. data/tracks/objective-c/exercises/bob/README.md +35 -0
  292. data/tracks/objective-c/exercises/bracket-push/README.md +27 -0
  293. data/tracks/objective-c/exercises/clock/README.md +30 -0
  294. data/tracks/objective-c/exercises/crypto-square/README.md +91 -0
  295. data/tracks/objective-c/exercises/difference-of-squares/README.md +36 -0
  296. data/tracks/objective-c/exercises/etl/README.md +68 -0
  297. data/tracks/objective-c/exercises/flatten-array/README.md +35 -0
  298. data/tracks/objective-c/exercises/gigasecond/README.md +28 -0
  299. data/tracks/objective-c/exercises/grade-school/README.md +59 -0
  300. data/tracks/objective-c/exercises/hamming/README.md +59 -0
  301. data/tracks/objective-c/exercises/hello-world/README.md +38 -0
  302. data/tracks/objective-c/exercises/isogram/README.md +36 -0
  303. data/tracks/objective-c/exercises/largest-series-product/README.md +37 -0
  304. data/tracks/objective-c/exercises/leap/README.md +50 -0
  305. data/tracks/objective-c/exercises/luhn/README.md +88 -0
  306. data/tracks/objective-c/exercises/meetup/README.md +47 -0
  307. data/tracks/objective-c/exercises/nucleotide-count/README.md +50 -0
  308. data/tracks/objective-c/exercises/pangram/README.md +32 -0
  309. data/tracks/objective-c/exercises/pascals-triangle/README.md +38 -0
  310. data/tracks/objective-c/exercises/perfect-numbers/README.md +41 -0
  311. data/tracks/objective-c/exercises/phone-number/README.md +51 -0
  312. data/tracks/objective-c/exercises/raindrops/README.md +41 -0
  313. data/tracks/objective-c/exercises/rna-transcription/README.md +42 -0
  314. data/tracks/objective-c/exercises/robot-name/README.md +39 -0
  315. data/tracks/objective-c/exercises/roman-numerals/README.md +66 -0
  316. data/tracks/objective-c/exercises/run-length-encoding/README.md +47 -0
  317. data/tracks/objective-c/exercises/scrabble-score/README.md +61 -0
  318. data/tracks/objective-c/exercises/secret-handshake/README.md +52 -0
  319. data/tracks/objective-c/exercises/sieve/README.md +51 -0
  320. data/tracks/objective-c/exercises/space-age/README.md +41 -0
  321. data/tracks/objective-c/exercises/sublist/README.md +38 -0
  322. data/tracks/objective-c/exercises/sum-of-multiples/README.md +35 -0
  323. data/tracks/objective-c/exercises/transpose/README.md +82 -0
  324. data/tracks/objective-c/exercises/triangle/README.md +43 -0
  325. data/tracks/objective-c/exercises/word-count/README.md +36 -0
  326. data/tracks/plsql/config/exercise_readme.go.tmpl +16 -0
  327. data/tracks/plsql/config.json +0 -2
  328. data/tracks/plsql/exercises/binary/README.md +55 -0
  329. data/tracks/plsql/exercises/difference-of-squares/README.md +39 -0
  330. data/tracks/plsql/exercises/gigasecond/README.md +31 -0
  331. data/tracks/plsql/exercises/grains/README.md +54 -0
  332. data/tracks/plsql/exercises/hamming/README.md +62 -0
  333. data/tracks/plsql/exercises/leap/README.md +53 -0
  334. data/tracks/plsql/exercises/nth-prime/README.md +35 -0
  335. data/tracks/plsql/exercises/raindrops/README.md +44 -0
  336. data/tracks/plsql/exercises/rna-transcription/README.md +45 -0
  337. data/tracks/plsql/exercises/roman-numerals/README.md +69 -0
  338. data/tracks/powershell/config.json +8 -5
  339. data/tracks/prolog/config/exercise_readme.go.tmpl +16 -0
  340. data/tracks/prolog/config.json +33 -5
  341. data/tracks/prolog/exercises/anagram/README.md +13 -0
  342. data/tracks/prolog/exercises/binary/README.md +35 -0
  343. data/tracks/prolog/exercises/grains/README.md +34 -0
  344. data/tracks/prolog/exercises/hamming/README.md +42 -0
  345. data/tracks/prolog/exercises/hello-world/README.md +21 -0
  346. data/tracks/prolog/exercises/leap/README.md +33 -0
  347. data/tracks/prolog/exercises/nucleotide-count/README.md +33 -0
  348. data/tracks/prolog/exercises/rna-transcription/README.md +25 -0
  349. data/tracks/prolog/exercises/space-age/README.md +24 -0
  350. data/tracks/prolog/exercises/sum-of-multiples/README.md +18 -0
  351. data/tracks/prolog/exercises/triangle/README.md +26 -0
  352. data/tracks/python/requirements-travis.txt +1 -1
  353. data/tracks/r/config/maintainers.json +35 -0
  354. data/tracks/r/config.json +1 -1
  355. data/tracks/racket/README.md +1 -1
  356. data/tracks/racket/config/exercise_readme.go.tmpl +16 -0
  357. data/tracks/racket/config.json +93 -25
  358. data/tracks/racket/exercises/accumulate/README.md +60 -0
  359. data/tracks/racket/exercises/acronym/README.md +40 -0
  360. data/tracks/racket/exercises/allergies/README.md +62 -0
  361. data/tracks/racket/exercises/anagram/README.md +38 -0
  362. data/tracks/racket/exercises/bob/README.md +43 -0
  363. data/tracks/racket/exercises/difference-of-squares/README.md +44 -0
  364. data/tracks/racket/exercises/etl/README.md +76 -0
  365. data/tracks/racket/exercises/gigasecond/README.md +36 -0
  366. data/tracks/racket/exercises/grains/README.md +59 -0
  367. data/tracks/racket/exercises/grep/README.md +96 -0
  368. data/tracks/racket/exercises/hamming/README.md +67 -0
  369. data/tracks/racket/exercises/hello-world/README.md +46 -0
  370. data/tracks/racket/exercises/leap/README.md +58 -0
  371. data/tracks/racket/exercises/list-ops/README.md +35 -0
  372. data/tracks/racket/exercises/nucleotide-count/README.md +58 -0
  373. data/tracks/racket/exercises/perfect-numbers/README.md +49 -0
  374. data/tracks/racket/exercises/phone-number/README.md +59 -0
  375. data/tracks/racket/exercises/raindrops/README.md +49 -0
  376. data/tracks/racket/exercises/rna-transcription/README.md +50 -0
  377. data/tracks/racket/exercises/roman-numerals/README.md +74 -0
  378. data/tracks/racket/exercises/say/README.md +94 -0
  379. data/tracks/racket/exercises/scrabble-score/README.md +69 -0
  380. data/tracks/racket/exercises/word-count/README.md +44 -0
  381. data/tracks/ruby/exercises/binary-search-tree/.meta/solutions/binary_search_tree.rb +4 -2
  382. data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +13 -4
  383. data/tracks/scala/config/maintainers.json +29 -0
  384. data/tracks/scala/exercises/atbash-cipher/example.scala +4 -1
  385. data/tracks/scala/exercises/atbash-cipher/src/test/scala/AtbashCipherTest.scala +64 -0
  386. data/tracks/scala/exercises/roman-numerals/example.scala +2 -2
  387. data/tracks/scala/exercises/roman-numerals/src/test/scala/RomanNumeralsTest.scala +40 -39
  388. data/tracks/scala/testgen/src/main/scala/AtbashCipherTestGenerator.scala +16 -0
  389. data/tracks/scala/testgen/src/main/scala/RomanNumeralsTestGenerator.scala +15 -0
  390. data/tracks/scheme/config/exercise_readme.go.tmpl +16 -0
  391. data/tracks/scheme/config.json +42 -3
  392. data/tracks/scheme/exercises/anagram/README.md +13 -0
  393. data/tracks/scheme/exercises/bob/README.md +18 -0
  394. data/tracks/scheme/exercises/difference-of-squares/README.md +19 -0
  395. data/tracks/scheme/exercises/grains/README.md +34 -0
  396. data/tracks/scheme/exercises/hamming/README.md +42 -0
  397. data/tracks/scheme/exercises/hello-world/README.md +21 -0
  398. data/tracks/scheme/exercises/leap/README.md +33 -0
  399. data/tracks/scheme/exercises/list-ops/README.md +10 -0
  400. data/tracks/scheme/exercises/nucleotide-count/README.md +33 -0
  401. data/tracks/scheme/exercises/phone-number/README.md +34 -0
  402. data/tracks/scheme/exercises/raindrops/README.md +24 -0
  403. data/tracks/scheme/exercises/rna-transcription/README.md +25 -0
  404. data/tracks/scheme/exercises/robot-name/README.md +22 -0
  405. data/tracks/scheme/exercises/scrabble-score/README.md +44 -0
  406. data/tracks/sml/config/maintainers.json +25 -0
  407. data/tracks/typescript/config/exercise_readme.go.tmpl +16 -0
  408. data/tracks/typescript/config/maintainers.json +25 -0
  409. data/tracks/typescript/config.json +0 -2
  410. data/tracks/typescript/exercises/anagram/README.md +39 -0
  411. data/tracks/typescript/exercises/beer-song/README.md +353 -0
  412. data/tracks/typescript/exercises/bob/README.md +44 -0
  413. data/tracks/typescript/exercises/difference-of-squares/README.md +45 -0
  414. data/tracks/typescript/exercises/etl/README.md +77 -0
  415. data/tracks/typescript/exercises/food-chain/README.md +96 -0
  416. data/tracks/typescript/exercises/gigasecond/README.md +37 -0
  417. data/tracks/typescript/exercises/grade-school/README.md +68 -0
  418. data/tracks/typescript/exercises/hamming/README.md +68 -0
  419. data/tracks/typescript/exercises/hello-world/README.md +47 -0
  420. data/tracks/typescript/exercises/leap/README.md +59 -0
  421. data/tracks/typescript/exercises/pangram/README.md +41 -0
  422. data/tracks/typescript/exercises/phone-number/README.md +60 -0
  423. data/tracks/typescript/exercises/raindrops/README.md +50 -0
  424. data/tracks/typescript/exercises/rna-transcription/README.md +51 -0
  425. data/tracks/typescript/exercises/robot-name/README.md +48 -0
  426. data/tracks/typescript/exercises/say/README.md +95 -0
  427. data/tracks/typescript/exercises/scrabble-score/README.md +70 -0
  428. data/tracks/typescript/exercises/space-age/README.md +50 -0
  429. data/tracks/typescript/exercises/word-count/README.md +45 -0
  430. data/tracks/typescript/exercises/wordy/README.md +89 -0
  431. data/tracks/vbnet/config/exercise_readme.go.tmpl +16 -0
  432. data/tracks/vbnet/config.json +28 -12
  433. data/tracks/vbnet/exercises/accumulate/README.md +41 -0
  434. data/tracks/vbnet/exercises/allergies/README.md +43 -0
  435. data/tracks/vbnet/exercises/anagram/README.md +19 -0
  436. data/tracks/vbnet/exercises/atbash-cipher/README.md +40 -0
  437. data/tracks/vbnet/exercises/binary/README.md +41 -0
  438. data/tracks/vbnet/exercises/bob/README.md +24 -0
  439. data/tracks/vbnet/exercises/crypto-square/README.md +80 -0
  440. metadata +401 -4
  441. data/tracks/scala/exercises/atbash-cipher/src/main/scala/Atbash.scala +0 -3
  442. data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +0 -48
@@ -0,0 +1,46 @@
1
+ # Bank Account
2
+
3
+ Simulate a bank account supporting opening/closing, withdrawals, and deposits
4
+ of money. Watch out for concurrent transactions!
5
+
6
+ A bank account can be accessed in multiple ways. Clients can make
7
+ deposits and withdrawals using the internet, mobile phones, etc. Shops
8
+ can charge against the account.
9
+
10
+ Create an account that can be accessed from multiple threads/processes
11
+ (terminology depends on your programming language).
12
+
13
+ It should be possible to close an account; operations against a closed
14
+ account must fail.
15
+
16
+ ## Instructions
17
+
18
+ Run the test file, and fix each of the errors in turn. When you get the
19
+ first test to pass, go to the first pending or skipped test, and make
20
+ that pass as well. When all of the tests are passing, feel free to
21
+ submit.
22
+
23
+ Remember that passing code is just the first step. The goal is to work
24
+ towards a solution that is as readable and expressive as you can make
25
+ it.
26
+
27
+ Have fun!
28
+
29
+ * * * *
30
+
31
+ For installation and learning resources, refer to the [exercism help page][].
32
+
33
+ [exercism help page]: http://exercism.io/languages/lfe
34
+
35
+ To run the provided tests, you will need `make`.
36
+ Open a terminal window and run the following from the exercise directory:
37
+
38
+ ```sh
39
+ make test
40
+ ```
41
+
42
+ You should now be able to see the results of the test suite for the exercise.
43
+
44
+
45
+ ## Submitting Incomplete Solutions
46
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,343 @@
1
+ # Beer Song
2
+
3
+ Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
4
+
5
+ Note that not all verses are identical.
6
+
7
+ ```plain
8
+ 99 bottles of beer on the wall, 99 bottles of beer.
9
+ Take one down and pass it around, 98 bottles of beer on the wall.
10
+
11
+ 98 bottles of beer on the wall, 98 bottles of beer.
12
+ Take one down and pass it around, 97 bottles of beer on the wall.
13
+
14
+ 97 bottles of beer on the wall, 97 bottles of beer.
15
+ Take one down and pass it around, 96 bottles of beer on the wall.
16
+
17
+ 96 bottles of beer on the wall, 96 bottles of beer.
18
+ Take one down and pass it around, 95 bottles of beer on the wall.
19
+
20
+ 95 bottles of beer on the wall, 95 bottles of beer.
21
+ Take one down and pass it around, 94 bottles of beer on the wall.
22
+
23
+ 94 bottles of beer on the wall, 94 bottles of beer.
24
+ Take one down and pass it around, 93 bottles of beer on the wall.
25
+
26
+ 93 bottles of beer on the wall, 93 bottles of beer.
27
+ Take one down and pass it around, 92 bottles of beer on the wall.
28
+
29
+ 92 bottles of beer on the wall, 92 bottles of beer.
30
+ Take one down and pass it around, 91 bottles of beer on the wall.
31
+
32
+ 91 bottles of beer on the wall, 91 bottles of beer.
33
+ Take one down and pass it around, 90 bottles of beer on the wall.
34
+
35
+ 90 bottles of beer on the wall, 90 bottles of beer.
36
+ Take one down and pass it around, 89 bottles of beer on the wall.
37
+
38
+ 89 bottles of beer on the wall, 89 bottles of beer.
39
+ Take one down and pass it around, 88 bottles of beer on the wall.
40
+
41
+ 88 bottles of beer on the wall, 88 bottles of beer.
42
+ Take one down and pass it around, 87 bottles of beer on the wall.
43
+
44
+ 87 bottles of beer on the wall, 87 bottles of beer.
45
+ Take one down and pass it around, 86 bottles of beer on the wall.
46
+
47
+ 86 bottles of beer on the wall, 86 bottles of beer.
48
+ Take one down and pass it around, 85 bottles of beer on the wall.
49
+
50
+ 85 bottles of beer on the wall, 85 bottles of beer.
51
+ Take one down and pass it around, 84 bottles of beer on the wall.
52
+
53
+ 84 bottles of beer on the wall, 84 bottles of beer.
54
+ Take one down and pass it around, 83 bottles of beer on the wall.
55
+
56
+ 83 bottles of beer on the wall, 83 bottles of beer.
57
+ Take one down and pass it around, 82 bottles of beer on the wall.
58
+
59
+ 82 bottles of beer on the wall, 82 bottles of beer.
60
+ Take one down and pass it around, 81 bottles of beer on the wall.
61
+
62
+ 81 bottles of beer on the wall, 81 bottles of beer.
63
+ Take one down and pass it around, 80 bottles of beer on the wall.
64
+
65
+ 80 bottles of beer on the wall, 80 bottles of beer.
66
+ Take one down and pass it around, 79 bottles of beer on the wall.
67
+
68
+ 79 bottles of beer on the wall, 79 bottles of beer.
69
+ Take one down and pass it around, 78 bottles of beer on the wall.
70
+
71
+ 78 bottles of beer on the wall, 78 bottles of beer.
72
+ Take one down and pass it around, 77 bottles of beer on the wall.
73
+
74
+ 77 bottles of beer on the wall, 77 bottles of beer.
75
+ Take one down and pass it around, 76 bottles of beer on the wall.
76
+
77
+ 76 bottles of beer on the wall, 76 bottles of beer.
78
+ Take one down and pass it around, 75 bottles of beer on the wall.
79
+
80
+ 75 bottles of beer on the wall, 75 bottles of beer.
81
+ Take one down and pass it around, 74 bottles of beer on the wall.
82
+
83
+ 74 bottles of beer on the wall, 74 bottles of beer.
84
+ Take one down and pass it around, 73 bottles of beer on the wall.
85
+
86
+ 73 bottles of beer on the wall, 73 bottles of beer.
87
+ Take one down and pass it around, 72 bottles of beer on the wall.
88
+
89
+ 72 bottles of beer on the wall, 72 bottles of beer.
90
+ Take one down and pass it around, 71 bottles of beer on the wall.
91
+
92
+ 71 bottles of beer on the wall, 71 bottles of beer.
93
+ Take one down and pass it around, 70 bottles of beer on the wall.
94
+
95
+ 70 bottles of beer on the wall, 70 bottles of beer.
96
+ Take one down and pass it around, 69 bottles of beer on the wall.
97
+
98
+ 69 bottles of beer on the wall, 69 bottles of beer.
99
+ Take one down and pass it around, 68 bottles of beer on the wall.
100
+
101
+ 68 bottles of beer on the wall, 68 bottles of beer.
102
+ Take one down and pass it around, 67 bottles of beer on the wall.
103
+
104
+ 67 bottles of beer on the wall, 67 bottles of beer.
105
+ Take one down and pass it around, 66 bottles of beer on the wall.
106
+
107
+ 66 bottles of beer on the wall, 66 bottles of beer.
108
+ Take one down and pass it around, 65 bottles of beer on the wall.
109
+
110
+ 65 bottles of beer on the wall, 65 bottles of beer.
111
+ Take one down and pass it around, 64 bottles of beer on the wall.
112
+
113
+ 64 bottles of beer on the wall, 64 bottles of beer.
114
+ Take one down and pass it around, 63 bottles of beer on the wall.
115
+
116
+ 63 bottles of beer on the wall, 63 bottles of beer.
117
+ Take one down and pass it around, 62 bottles of beer on the wall.
118
+
119
+ 62 bottles of beer on the wall, 62 bottles of beer.
120
+ Take one down and pass it around, 61 bottles of beer on the wall.
121
+
122
+ 61 bottles of beer on the wall, 61 bottles of beer.
123
+ Take one down and pass it around, 60 bottles of beer on the wall.
124
+
125
+ 60 bottles of beer on the wall, 60 bottles of beer.
126
+ Take one down and pass it around, 59 bottles of beer on the wall.
127
+
128
+ 59 bottles of beer on the wall, 59 bottles of beer.
129
+ Take one down and pass it around, 58 bottles of beer on the wall.
130
+
131
+ 58 bottles of beer on the wall, 58 bottles of beer.
132
+ Take one down and pass it around, 57 bottles of beer on the wall.
133
+
134
+ 57 bottles of beer on the wall, 57 bottles of beer.
135
+ Take one down and pass it around, 56 bottles of beer on the wall.
136
+
137
+ 56 bottles of beer on the wall, 56 bottles of beer.
138
+ Take one down and pass it around, 55 bottles of beer on the wall.
139
+
140
+ 55 bottles of beer on the wall, 55 bottles of beer.
141
+ Take one down and pass it around, 54 bottles of beer on the wall.
142
+
143
+ 54 bottles of beer on the wall, 54 bottles of beer.
144
+ Take one down and pass it around, 53 bottles of beer on the wall.
145
+
146
+ 53 bottles of beer on the wall, 53 bottles of beer.
147
+ Take one down and pass it around, 52 bottles of beer on the wall.
148
+
149
+ 52 bottles of beer on the wall, 52 bottles of beer.
150
+ Take one down and pass it around, 51 bottles of beer on the wall.
151
+
152
+ 51 bottles of beer on the wall, 51 bottles of beer.
153
+ Take one down and pass it around, 50 bottles of beer on the wall.
154
+
155
+ 50 bottles of beer on the wall, 50 bottles of beer.
156
+ Take one down and pass it around, 49 bottles of beer on the wall.
157
+
158
+ 49 bottles of beer on the wall, 49 bottles of beer.
159
+ Take one down and pass it around, 48 bottles of beer on the wall.
160
+
161
+ 48 bottles of beer on the wall, 48 bottles of beer.
162
+ Take one down and pass it around, 47 bottles of beer on the wall.
163
+
164
+ 47 bottles of beer on the wall, 47 bottles of beer.
165
+ Take one down and pass it around, 46 bottles of beer on the wall.
166
+
167
+ 46 bottles of beer on the wall, 46 bottles of beer.
168
+ Take one down and pass it around, 45 bottles of beer on the wall.
169
+
170
+ 45 bottles of beer on the wall, 45 bottles of beer.
171
+ Take one down and pass it around, 44 bottles of beer on the wall.
172
+
173
+ 44 bottles of beer on the wall, 44 bottles of beer.
174
+ Take one down and pass it around, 43 bottles of beer on the wall.
175
+
176
+ 43 bottles of beer on the wall, 43 bottles of beer.
177
+ Take one down and pass it around, 42 bottles of beer on the wall.
178
+
179
+ 42 bottles of beer on the wall, 42 bottles of beer.
180
+ Take one down and pass it around, 41 bottles of beer on the wall.
181
+
182
+ 41 bottles of beer on the wall, 41 bottles of beer.
183
+ Take one down and pass it around, 40 bottles of beer on the wall.
184
+
185
+ 40 bottles of beer on the wall, 40 bottles of beer.
186
+ Take one down and pass it around, 39 bottles of beer on the wall.
187
+
188
+ 39 bottles of beer on the wall, 39 bottles of beer.
189
+ Take one down and pass it around, 38 bottles of beer on the wall.
190
+
191
+ 38 bottles of beer on the wall, 38 bottles of beer.
192
+ Take one down and pass it around, 37 bottles of beer on the wall.
193
+
194
+ 37 bottles of beer on the wall, 37 bottles of beer.
195
+ Take one down and pass it around, 36 bottles of beer on the wall.
196
+
197
+ 36 bottles of beer on the wall, 36 bottles of beer.
198
+ Take one down and pass it around, 35 bottles of beer on the wall.
199
+
200
+ 35 bottles of beer on the wall, 35 bottles of beer.
201
+ Take one down and pass it around, 34 bottles of beer on the wall.
202
+
203
+ 34 bottles of beer on the wall, 34 bottles of beer.
204
+ Take one down and pass it around, 33 bottles of beer on the wall.
205
+
206
+ 33 bottles of beer on the wall, 33 bottles of beer.
207
+ Take one down and pass it around, 32 bottles of beer on the wall.
208
+
209
+ 32 bottles of beer on the wall, 32 bottles of beer.
210
+ Take one down and pass it around, 31 bottles of beer on the wall.
211
+
212
+ 31 bottles of beer on the wall, 31 bottles of beer.
213
+ Take one down and pass it around, 30 bottles of beer on the wall.
214
+
215
+ 30 bottles of beer on the wall, 30 bottles of beer.
216
+ Take one down and pass it around, 29 bottles of beer on the wall.
217
+
218
+ 29 bottles of beer on the wall, 29 bottles of beer.
219
+ Take one down and pass it around, 28 bottles of beer on the wall.
220
+
221
+ 28 bottles of beer on the wall, 28 bottles of beer.
222
+ Take one down and pass it around, 27 bottles of beer on the wall.
223
+
224
+ 27 bottles of beer on the wall, 27 bottles of beer.
225
+ Take one down and pass it around, 26 bottles of beer on the wall.
226
+
227
+ 26 bottles of beer on the wall, 26 bottles of beer.
228
+ Take one down and pass it around, 25 bottles of beer on the wall.
229
+
230
+ 25 bottles of beer on the wall, 25 bottles of beer.
231
+ Take one down and pass it around, 24 bottles of beer on the wall.
232
+
233
+ 24 bottles of beer on the wall, 24 bottles of beer.
234
+ Take one down and pass it around, 23 bottles of beer on the wall.
235
+
236
+ 23 bottles of beer on the wall, 23 bottles of beer.
237
+ Take one down and pass it around, 22 bottles of beer on the wall.
238
+
239
+ 22 bottles of beer on the wall, 22 bottles of beer.
240
+ Take one down and pass it around, 21 bottles of beer on the wall.
241
+
242
+ 21 bottles of beer on the wall, 21 bottles of beer.
243
+ Take one down and pass it around, 20 bottles of beer on the wall.
244
+
245
+ 20 bottles of beer on the wall, 20 bottles of beer.
246
+ Take one down and pass it around, 19 bottles of beer on the wall.
247
+
248
+ 19 bottles of beer on the wall, 19 bottles of beer.
249
+ Take one down and pass it around, 18 bottles of beer on the wall.
250
+
251
+ 18 bottles of beer on the wall, 18 bottles of beer.
252
+ Take one down and pass it around, 17 bottles of beer on the wall.
253
+
254
+ 17 bottles of beer on the wall, 17 bottles of beer.
255
+ Take one down and pass it around, 16 bottles of beer on the wall.
256
+
257
+ 16 bottles of beer on the wall, 16 bottles of beer.
258
+ Take one down and pass it around, 15 bottles of beer on the wall.
259
+
260
+ 15 bottles of beer on the wall, 15 bottles of beer.
261
+ Take one down and pass it around, 14 bottles of beer on the wall.
262
+
263
+ 14 bottles of beer on the wall, 14 bottles of beer.
264
+ Take one down and pass it around, 13 bottles of beer on the wall.
265
+
266
+ 13 bottles of beer on the wall, 13 bottles of beer.
267
+ Take one down and pass it around, 12 bottles of beer on the wall.
268
+
269
+ 12 bottles of beer on the wall, 12 bottles of beer.
270
+ Take one down and pass it around, 11 bottles of beer on the wall.
271
+
272
+ 11 bottles of beer on the wall, 11 bottles of beer.
273
+ Take one down and pass it around, 10 bottles of beer on the wall.
274
+
275
+ 10 bottles of beer on the wall, 10 bottles of beer.
276
+ Take one down and pass it around, 9 bottles of beer on the wall.
277
+
278
+ 9 bottles of beer on the wall, 9 bottles of beer.
279
+ Take one down and pass it around, 8 bottles of beer on the wall.
280
+
281
+ 8 bottles of beer on the wall, 8 bottles of beer.
282
+ Take one down and pass it around, 7 bottles of beer on the wall.
283
+
284
+ 7 bottles of beer on the wall, 7 bottles of beer.
285
+ Take one down and pass it around, 6 bottles of beer on the wall.
286
+
287
+ 6 bottles of beer on the wall, 6 bottles of beer.
288
+ Take one down and pass it around, 5 bottles of beer on the wall.
289
+
290
+ 5 bottles of beer on the wall, 5 bottles of beer.
291
+ Take one down and pass it around, 4 bottles of beer on the wall.
292
+
293
+ 4 bottles of beer on the wall, 4 bottles of beer.
294
+ Take one down and pass it around, 3 bottles of beer on the wall.
295
+
296
+ 3 bottles of beer on the wall, 3 bottles of beer.
297
+ Take one down and pass it around, 2 bottles of beer on the wall.
298
+
299
+ 2 bottles of beer on the wall, 2 bottles of beer.
300
+ Take one down and pass it around, 1 bottle of beer on the wall.
301
+
302
+ 1 bottle of beer on the wall, 1 bottle of beer.
303
+ Take it down and pass it around, no more bottles of beer on the wall.
304
+
305
+ No more bottles of beer on the wall, no more bottles of beer.
306
+ Go to the store and buy some more, 99 bottles of beer on the wall.
307
+ ```
308
+
309
+ ## For bonus points
310
+
311
+ Did you get the tests passing and the code clean? If you want to, these
312
+ are some additional things you could try:
313
+
314
+ * Remove as much duplication as you possibly can.
315
+ * Optimize for readability, even if it means introducing duplication.
316
+ * If you've removed all the duplication, do you have a lot of
317
+ conditionals? Try replacing the conditionals with polymorphism, if it
318
+ applies in this language. How readable is it?
319
+
320
+ Then please share your thoughts in a comment on the submission. Did this
321
+ experiment make the code better? Worse? Did you learn anything from it?
322
+
323
+ * * * *
324
+
325
+ For installation and learning resources, refer to the [exercism help page][].
326
+
327
+ [exercism help page]: http://exercism.io/languages/lfe
328
+
329
+ To run the provided tests, you will need `make`.
330
+ Open a terminal window and run the following from the exercise directory:
331
+
332
+ ```sh
333
+ make test
334
+ ```
335
+
336
+ You should now be able to see the results of the test suite for the exercise.
337
+
338
+ ## Source
339
+
340
+ Learn to Program by Chris Pine [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
341
+
342
+ ## Submitting Incomplete Solutions
343
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,51 @@
1
+ # Binary
2
+
3
+ Convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles.
4
+
5
+ Implement binary to decimal conversion. Given a binary input
6
+ string, your program should produce a decimal output. The
7
+ program should handle invalid inputs.
8
+
9
+ ## Note
10
+ - Implement the conversion yourself.
11
+ Do not use something else to perform the conversion for you.
12
+
13
+ ## About Binary (Base-2)
14
+ Decimal is a base-10 system.
15
+
16
+ A number 23 in base 10 notation can be understood
17
+ as a linear combination of powers of 10:
18
+
19
+ - The rightmost digit gets multiplied by 10^0 = 1
20
+ - The next number gets multiplied by 10^1 = 10
21
+ - ...
22
+ - The *n*th number gets multiplied by 10^*(n-1)*.
23
+ - All these values are summed.
24
+
25
+ So: `23 => 2*10^1 + 3*10^0 => 2*10 + 3*1 = 23 base 10`
26
+
27
+ Binary is similar, but uses powers of 2 rather than powers of 10.
28
+
29
+ So: `101 => 1*2^2 + 0*2^1 + 1*2^0 => 1*4 + 0*2 + 1*1 => 4 + 1 => 5 base 10`.
30
+
31
+ * * * *
32
+
33
+ For installation and learning resources, refer to the [exercism help page][].
34
+
35
+ [exercism help page]: http://exercism.io/languages/lfe
36
+
37
+ To run the provided tests, you will need `make`.
38
+ Open a terminal window and run the following from the exercise directory:
39
+
40
+ ```sh
41
+ make test
42
+ ```
43
+
44
+ You should now be able to see the results of the test suite for the exercise.
45
+
46
+ ## Source
47
+
48
+ All of Computer Science [http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-](http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-)
49
+
50
+ ## Submitting Incomplete Solutions
51
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,34 @@
1
+ # Bob
2
+
3
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
4
+
5
+ Bob answers 'Sure.' if you ask him a question.
6
+
7
+ He answers 'Whoa, chill out!' if you yell at him.
8
+
9
+ He says 'Fine. Be that way!' if you address him without actually saying
10
+ anything.
11
+
12
+ He answers 'Whatever.' to anything else.
13
+
14
+ * * * *
15
+
16
+ For installation and learning resources, refer to the [exercism help page][].
17
+
18
+ [exercism help page]: http://exercism.io/languages/lfe
19
+
20
+ To run the provided tests, you will need `make`.
21
+ Open a terminal window and run the following from the exercise directory:
22
+
23
+ ```sh
24
+ make test
25
+ ```
26
+
27
+ You should now be able to see the results of the test suite for the exercise.
28
+
29
+ ## Source
30
+
31
+ Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
32
+
33
+ ## Submitting Incomplete Solutions
34
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,66 @@
1
+ # Circular Buffer
2
+
3
+ A circular buffer, cyclic buffer or ring buffer is a data structure that
4
+ uses a single, fixed-size buffer as if it were connected end-to-end.
5
+
6
+ A circular buffer first starts empty and of some predefined length. For
7
+ example, this is a 7-element buffer:
8
+
9
+ [ ][ ][ ][ ][ ][ ][ ]
10
+
11
+ Assume that a 1 is written into the middle of the buffer (exact starting
12
+ location does not matter in a circular buffer):
13
+
14
+ [ ][ ][ ][1][ ][ ][ ]
15
+
16
+ Then assume that two more elements are added — 2 & 3 — which get
17
+ appended after the 1:
18
+
19
+ [ ][ ][ ][1][2][3][ ]
20
+
21
+ If two elements are then removed from the buffer, the oldest values
22
+ inside the buffer are removed. The two elements removed, in this case,
23
+ are 1 & 2, leaving the buffer with just a 3:
24
+
25
+ [ ][ ][ ][ ][ ][3][ ]
26
+
27
+ If the buffer has 7 elements then it is completely full:
28
+
29
+ [6][7][8][9][3][4][5]
30
+
31
+ When the buffer is full an error will be raised, alerting the client
32
+ that further writes are blocked until a slot becomes free.
33
+
34
+ The client can opt to overwrite the oldest data with a forced write. In
35
+ this case, two more elements — A & B — are added and they overwrite the
36
+ 3 & 4:
37
+
38
+ [6][7][8][9][A][B][5]
39
+
40
+ Finally, if two elements are now removed then what would be returned is
41
+ not 3 & 4 but 5 & 6 because A & B overwrote the 3 & the 4 yielding the
42
+ buffer with:
43
+
44
+ [ ][7][8][9][A][B][ ]
45
+
46
+ * * * *
47
+
48
+ For installation and learning resources, refer to the [exercism help page][].
49
+
50
+ [exercism help page]: http://exercism.io/languages/lfe
51
+
52
+ To run the provided tests, you will need `make`.
53
+ Open a terminal window and run the following from the exercise directory:
54
+
55
+ ```sh
56
+ make test
57
+ ```
58
+
59
+ You should now be able to see the results of the test suite for the exercise.
60
+
61
+ ## Source
62
+
63
+ Wikipedia [http://en.wikipedia.org/wiki/Circular_buffer](http://en.wikipedia.org/wiki/Circular_buffer)
64
+
65
+ ## Submitting Incomplete Solutions
66
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,29 @@
1
+ # Clock
2
+
3
+ Implement a clock that handles times without dates.
4
+
5
+ You should be able to add and subtract minutes to it.
6
+
7
+ Two clocks that represent the same time should be equal to each other.
8
+
9
+ * * * *
10
+
11
+ For installation and learning resources, refer to the [exercism help page][].
12
+
13
+ [exercism help page]: http://exercism.io/languages/lfe
14
+
15
+ To run the provided tests, you will need `make`.
16
+ Open a terminal window and run the following from the exercise directory:
17
+
18
+ ```sh
19
+ make test
20
+ ```
21
+
22
+ You should now be able to see the results of the test suite for the exercise.
23
+
24
+ ## Source
25
+
26
+ Pairing session with Erin Drummond [https://twitter.com/ebdrummond](https://twitter.com/ebdrummond)
27
+
28
+ ## Submitting Incomplete Solutions
29
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,35 @@
1
+ # Difference Of Squares
2
+
3
+ Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
4
+
5
+ The square of the sum of the first ten natural numbers is
6
+ (1 + 2 + ... + 10)² = 55² = 3025.
7
+
8
+ The sum of the squares of the first ten natural numbers is
9
+ 1² + 2² + ... + 10² = 385.
10
+
11
+ Hence the difference between the square of the sum of the first
12
+ ten natural numbers and the sum of the squares of the first ten
13
+ natural numbers is 3025 - 385 = 2640.
14
+
15
+ * * * *
16
+
17
+ For installation and learning resources, refer to the [exercism help page][].
18
+
19
+ [exercism help page]: http://exercism.io/languages/lfe
20
+
21
+ To run the provided tests, you will need `make`.
22
+ Open a terminal window and run the following from the exercise directory:
23
+
24
+ ```sh
25
+ make test
26
+ ```
27
+
28
+ You should now be able to see the results of the test suite for the exercise.
29
+
30
+ ## Source
31
+
32
+ Problem 6 at Project Euler [http://projecteuler.net/problem=6](http://projecteuler.net/problem=6)
33
+
34
+ ## Submitting Incomplete Solutions
35
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,67 @@
1
+ # Etl
2
+
3
+ We are going to do the `Transform` step of an Extract-Transform-Load.
4
+
5
+ ### ETL
6
+ Extract-Transform-Load (ETL) is a fancy way of saying, "We have some crufty, legacy data over in this system, and now we need it in this shiny new system over here, so
7
+ we're going to migrate this."
8
+
9
+ (Typically, this is followed by, "We're only going to need to run this
10
+ once." That's then typically followed by much forehead slapping and
11
+ moaning about how stupid we could possibly be.)
12
+
13
+ ### The goal
14
+ We're going to extract some scrabble scores from a legacy system.
15
+
16
+ The old system stored a list of letters per score:
17
+
18
+ - 1 point: "A", "E", "I", "O", "U", "L", "N", "R", "S", "T",
19
+ - 2 points: "D", "G",
20
+ - 3 points: "B", "C", "M", "P",
21
+ - 4 points: "F", "H", "V", "W", "Y",
22
+ - 5 points: "K",
23
+ - 8 points: "J", "X",
24
+ - 10 points: "Q", "Z",
25
+
26
+ The shiny new scrabble system instead stores the score per letter, which
27
+ makes it much faster and easier to calculate the score for a word. It
28
+ also stores the letters in lower-case regardless of the case of the
29
+ input letters:
30
+
31
+ - "a" is worth 1 point.
32
+ - "b" is worth 3 points.
33
+ - "c" is worth 3 points.
34
+ - "d" is worth 2 points.
35
+ - Etc.
36
+
37
+ Your mission, should you choose to accept it, is to transform the legacy data
38
+ format to the shiny new format.
39
+
40
+ ### Notes
41
+
42
+ A final note about scoring, Scrabble is played around the world in a
43
+ variety of languages, each with its own unique scoring table. For
44
+ example, an "E" is scored at 2 in the Māori-language version of the
45
+ game while being scored at 4 in the Hawaiian-language version.
46
+
47
+ * * * *
48
+
49
+ For installation and learning resources, refer to the [exercism help page][].
50
+
51
+ [exercism help page]: http://exercism.io/languages/lfe
52
+
53
+ To run the provided tests, you will need `make`.
54
+ Open a terminal window and run the following from the exercise directory:
55
+
56
+ ```sh
57
+ make test
58
+ ```
59
+
60
+ You should now be able to see the results of the test suite for the exercise.
61
+
62
+ ## Source
63
+
64
+ The Jumpstart Lab team [http://jumpstartlab.com](http://jumpstartlab.com)
65
+
66
+ ## Submitting Incomplete Solutions
67
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.