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,66 @@
1
+ # Atbash Cipher
2
+
3
+ Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
4
+
5
+ The Atbash cipher is a simple substitution cipher that relies on
6
+ transposing all the letters in the alphabet such that the resulting
7
+ alphabet is backwards. The first letter is replaced with the last
8
+ letter, the second with the second-last, and so on.
9
+
10
+ An Atbash cipher for the Latin alphabet would be as follows:
11
+
12
+ ```plain
13
+ Plain: abcdefghijklmnopqrstuvwxyz
14
+ Cipher: zyxwvutsrqponmlkjihgfedcba
15
+ ```
16
+
17
+ It is a very weak cipher because it only has one possible key, and it is
18
+ a simple monoalphabetic substitution cipher. However, this may not have
19
+ been an issue in the cipher's time.
20
+
21
+ Ciphertext is written out in groups of fixed length, the traditional group size
22
+ being 5 letters, and punctuation is excluded. This is to make it harder to guess
23
+ things based on word boundaries.
24
+
25
+ ## Examples
26
+ - Encoding `test` gives `gvhg`
27
+ - Decoding `gvhg` gives `test`
28
+ - Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
29
+
30
+ ## Getting Started
31
+
32
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
33
+ exercism.io. This covers the basic information on setting up the development
34
+ environment expected by the exercises.
35
+
36
+ ## Passing the Tests
37
+
38
+ Get the first test compiling, linking and passing by following the [three
39
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
40
+ Create just enough structure by declaring namespaces, functions, classes,
41
+ etc., to satisfy any compiler errors and get the test to fail. Then write
42
+ just enough code to get the test to pass. Once you've done that,
43
+ uncomment the next test by moving the following line past the next test.
44
+
45
+ ```C++
46
+ #if defined(EXERCISM_RUN_ALL_TESTS)
47
+ ```
48
+
49
+ This may result in compile errors as new constructs may be invoked that
50
+ you haven't yet declared or defined. Again, fix the compile errors minimally
51
+ to get a failing test, then change the code minimally to pass the test,
52
+ refactor your implementation for readability and expressiveness and then
53
+ go on to the next test.
54
+
55
+ Try to use standard C++11 facilities in preference to writing your own
56
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
57
+ is a wiki reference to the C++ language and standard library. If you
58
+ are new to C++, but have programmed in C, beware of
59
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
60
+
61
+ ## Source
62
+
63
+ Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
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,359 @@
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
+ ## Getting Started
324
+
325
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
326
+ exercism.io. This covers the basic information on setting up the development
327
+ environment expected by the exercises.
328
+
329
+ ## Passing the Tests
330
+
331
+ Get the first test compiling, linking and passing by following the [three
332
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
333
+ Create just enough structure by declaring namespaces, functions, classes,
334
+ etc., to satisfy any compiler errors and get the test to fail. Then write
335
+ just enough code to get the test to pass. Once you've done that,
336
+ uncomment the next test by moving the following line past the next test.
337
+
338
+ ```C++
339
+ #if defined(EXERCISM_RUN_ALL_TESTS)
340
+ ```
341
+
342
+ This may result in compile errors as new constructs may be invoked that
343
+ you haven't yet declared or defined. Again, fix the compile errors minimally
344
+ to get a failing test, then change the code minimally to pass the test,
345
+ refactor your implementation for readability and expressiveness and then
346
+ go on to the next test.
347
+
348
+ Try to use standard C++11 facilities in preference to writing your own
349
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
350
+ is a wiki reference to the C++ language and standard library. If you
351
+ are new to C++, but have programmed in C, beware of
352
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
353
+
354
+ ## Source
355
+
356
+ Learn to Program by Chris Pine [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
357
+
358
+ ## Submitting Incomplete Solutions
359
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,67 @@
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
+ ## Getting Started
32
+
33
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
34
+ exercism.io. This covers the basic information on setting up the development
35
+ environment expected by the exercises.
36
+
37
+ ## Passing the Tests
38
+
39
+ Get the first test compiling, linking and passing by following the [three
40
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
41
+ Create just enough structure by declaring namespaces, functions, classes,
42
+ etc., to satisfy any compiler errors and get the test to fail. Then write
43
+ just enough code to get the test to pass. Once you've done that,
44
+ uncomment the next test by moving the following line past the next test.
45
+
46
+ ```C++
47
+ #if defined(EXERCISM_RUN_ALL_TESTS)
48
+ ```
49
+
50
+ This may result in compile errors as new constructs may be invoked that
51
+ you haven't yet declared or defined. Again, fix the compile errors minimally
52
+ to get a failing test, then change the code minimally to pass the test,
53
+ refactor your implementation for readability and expressiveness and then
54
+ go on to the next test.
55
+
56
+ Try to use standard C++11 facilities in preference to writing your own
57
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
58
+ is a wiki reference to the C++ language and standard library. If you
59
+ are new to C++, but have programmed in C, beware of
60
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
61
+
62
+ ## Source
63
+
64
+ 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-)
65
+
66
+ ## Submitting Incomplete Solutions
67
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,50 @@
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
+ ## Getting Started
15
+
16
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
17
+ exercism.io. This covers the basic information on setting up the development
18
+ environment expected by the exercises.
19
+
20
+ ## Passing the Tests
21
+
22
+ Get the first test compiling, linking and passing by following the [three
23
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
24
+ Create just enough structure by declaring namespaces, functions, classes,
25
+ etc., to satisfy any compiler errors and get the test to fail. Then write
26
+ just enough code to get the test to pass. Once you've done that,
27
+ uncomment the next test by moving the following line past the next test.
28
+
29
+ ```C++
30
+ #if defined(EXERCISM_RUN_ALL_TESTS)
31
+ ```
32
+
33
+ This may result in compile errors as new constructs may be invoked that
34
+ you haven't yet declared or defined. Again, fix the compile errors minimally
35
+ to get a failing test, then change the code minimally to pass the test,
36
+ refactor your implementation for readability and expressiveness and then
37
+ go on to the next test.
38
+
39
+ Try to use standard C++11 facilities in preference to writing your own
40
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
41
+ is a wiki reference to the C++ language and standard library. If you
42
+ are new to C++, but have programmed in C, beware of
43
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
44
+
45
+ ## Source
46
+
47
+ 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)
48
+
49
+ ## Submitting Incomplete Solutions
50
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,45 @@
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
+ ## Getting Started
10
+
11
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
12
+ exercism.io. This covers the basic information on setting up the development
13
+ environment expected by the exercises.
14
+
15
+ ## Passing the Tests
16
+
17
+ Get the first test compiling, linking and passing by following the [three
18
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
19
+ Create just enough structure by declaring namespaces, functions, classes,
20
+ etc., to satisfy any compiler errors and get the test to fail. Then write
21
+ just enough code to get the test to pass. Once you've done that,
22
+ uncomment the next test by moving the following line past the next test.
23
+
24
+ ```C++
25
+ #if defined(EXERCISM_RUN_ALL_TESTS)
26
+ ```
27
+
28
+ This may result in compile errors as new constructs may be invoked that
29
+ you haven't yet declared or defined. Again, fix the compile errors minimally
30
+ to get a failing test, then change the code minimally to pass the test,
31
+ refactor your implementation for readability and expressiveness and then
32
+ go on to the next test.
33
+
34
+ Try to use standard C++11 facilities in preference to writing your own
35
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
36
+ is a wiki reference to the C++ language and standard library. If you
37
+ are new to C++, but have programmed in C, beware of
38
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
39
+
40
+ ## Source
41
+
42
+ Pairing session with Erin Drummond [https://twitter.com/ebdrummond](https://twitter.com/ebdrummond)
43
+
44
+ ## Submitting Incomplete Solutions
45
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,106 @@
1
+ # Crypto Square
2
+
3
+ Implement the classic method for composing secret messages called a square code.
4
+
5
+ Given an English text, output the encoded version of that text.
6
+
7
+ First, the input is normalized: the spaces and punctuation are removed
8
+ from the English text and the message is downcased.
9
+
10
+ Then, the normalized characters are broken into rows. These rows can be
11
+ regarded as forming a rectangle when printed with intervening newlines.
12
+
13
+ For example, the sentence
14
+
15
+ > If man was meant to stay on the ground, god would have given us roots.
16
+
17
+ is normalized to:
18
+
19
+ > ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots
20
+
21
+ The plaintext should be organized in to a rectangle. The size of the
22
+ rectangle (`r x c`) should be decided by the length of the message,
23
+ such that `c >= r` and `c - r <= 1`, where `c` is the number of columns
24
+ and `r` is the number of rows.
25
+
26
+ Our normalized text is 54 characters long, dictating a rectangle with
27
+ `c = 8` and `r = 7`:
28
+
29
+ ```plain
30
+ ifmanwas
31
+ meanttos
32
+ tayonthe
33
+ groundgo
34
+ dwouldha
35
+ vegivenu
36
+ sroots
37
+ ```
38
+
39
+ The coded message is obtained by reading down the columns going left to
40
+ right.
41
+
42
+ The message above is coded as:
43
+
44
+ ```plain
45
+ imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
46
+ ```
47
+
48
+ Output the encoded text in chunks. Phrases that fill perfect squares
49
+ `(r X r)` should be output in `r`-length chunks separated by spaces.
50
+ Imperfect squares will have `n` empty spaces. Those spaces should be distributed evenly across the last `n` rows.
51
+
52
+ ```plain
53
+ imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
54
+ ```
55
+
56
+ Notice that were we to stack these, we could visually decode the
57
+ cyphertext back in to the original message:
58
+
59
+ ```plain
60
+ imtgdvs
61
+ fearwer
62
+ mayoogo
63
+ anouuio
64
+ ntnnlvt
65
+ wttddes
66
+ aohghn
67
+ sseoau
68
+ ```
69
+
70
+ ## Getting Started
71
+
72
+ Make sure you have read [the C++ page](http://exercism.io/languages/cpp) on
73
+ exercism.io. This covers the basic information on setting up the development
74
+ environment expected by the exercises.
75
+
76
+ ## Passing the Tests
77
+
78
+ Get the first test compiling, linking and passing by following the [three
79
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
80
+ Create just enough structure by declaring namespaces, functions, classes,
81
+ etc., to satisfy any compiler errors and get the test to fail. Then write
82
+ just enough code to get the test to pass. Once you've done that,
83
+ uncomment the next test by moving the following line past the next test.
84
+
85
+ ```C++
86
+ #if defined(EXERCISM_RUN_ALL_TESTS)
87
+ ```
88
+
89
+ This may result in compile errors as new constructs may be invoked that
90
+ you haven't yet declared or defined. Again, fix the compile errors minimally
91
+ to get a failing test, then change the code minimally to pass the test,
92
+ refactor your implementation for readability and expressiveness and then
93
+ go on to the next test.
94
+
95
+ Try to use standard C++11 facilities in preference to writing your own
96
+ low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
97
+ is a wiki reference to the C++ language and standard library. If you
98
+ are new to C++, but have programmed in C, beware of
99
+ [C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
100
+
101
+ ## Source
102
+
103
+ J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html](http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html)
104
+
105
+ ## Submitting Incomplete Solutions
106
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.