trackler 2.2.1.4 → 2.2.1.5

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -4,133 +4,190 @@
4
4
  "test_pattern": "_spec.cr",
5
5
  "exercises": [
6
6
  {
7
+ "uuid": "4078cf4d-4361-4c55-aa18-63a3fe269be1",
7
8
  "slug": "hello-world",
9
+ "core": false,
10
+ "unlocked_by": null,
8
11
  "difficulty": 1,
9
12
  "topics": [
10
13
 
11
14
  ]
12
15
  },
13
16
  {
17
+ "uuid": "080b6ab1-576f-4566-a065-5aae761f51af",
14
18
  "slug": "hamming",
19
+ "core": false,
20
+ "unlocked_by": null,
15
21
  "difficulty": 1,
16
22
  "topics": [
17
23
 
18
24
  ]
19
25
  },
20
26
  {
27
+ "uuid": "16228cbe-49ff-4d15-b121-d84b40a56a66",
21
28
  "slug": "gigasecond",
29
+ "core": false,
30
+ "unlocked_by": null,
22
31
  "difficulty": 1,
23
32
  "topics": [
24
33
 
25
34
  ]
26
35
  },
27
36
  {
37
+ "uuid": "99e661d7-7094-400f-a31d-48cf96d2cbc6",
28
38
  "slug": "rna-transcription",
39
+ "core": false,
40
+ "unlocked_by": null,
29
41
  "difficulty": 1,
30
42
  "topics": [
31
43
 
32
44
  ]
33
45
  },
34
46
  {
47
+ "uuid": "7ad02ecf-036c-4510-b6ad-93bf1d5f0d28",
35
48
  "slug": "bob",
49
+ "core": false,
50
+ "unlocked_by": null,
36
51
  "difficulty": 1,
37
52
  "topics": [
38
53
 
39
54
  ]
40
55
  },
41
56
  {
57
+ "uuid": "a1a95816-b9e8-480e-beca-477531cdaa4c",
42
58
  "slug": "raindrops",
59
+ "core": false,
60
+ "unlocked_by": null,
43
61
  "difficulty": 1,
44
62
  "topics": [
45
63
 
46
64
  ]
47
65
  },
48
66
  {
67
+ "uuid": "607eb4f7-2650-47e1-81b9-a6fc2f0367cd",
49
68
  "slug": "leap",
69
+ "core": false,
70
+ "unlocked_by": null,
50
71
  "difficulty": 1,
51
72
  "topics": [
52
73
 
53
74
  ]
54
75
  },
55
76
  {
77
+ "uuid": "19298c02-b34f-4f11-aad6-5da4838967a0",
56
78
  "slug": "difference-of-squares",
79
+ "core": false,
80
+ "unlocked_by": null,
57
81
  "difficulty": 1,
58
82
  "topics": [
59
83
 
60
84
  ]
61
85
  },
62
86
  {
87
+ "uuid": "1546e974-866e-4d4d-bec5-d08f91c47fa3",
63
88
  "slug": "pangram",
89
+ "core": false,
90
+ "unlocked_by": null,
64
91
  "difficulty": 1,
65
92
  "topics": [
66
93
 
67
94
  ]
68
95
  },
69
96
  {
97
+ "uuid": "ec55356b-61ab-4164-94d0-791133718fa8",
70
98
  "slug": "largest-series-product",
99
+ "core": false,
100
+ "unlocked_by": null,
71
101
  "difficulty": 1,
72
102
  "topics": [
73
103
 
74
104
  ]
75
105
  },
76
106
  {
107
+ "uuid": "b8a4ccaa-4676-4921-baad-ec194a429b75",
77
108
  "slug": "bracket-push",
109
+ "core": false,
110
+ "unlocked_by": null,
78
111
  "difficulty": 1,
79
112
  "topics": [
80
113
 
81
114
  ]
82
115
  },
83
116
  {
117
+ "uuid": "a2e06a49-1311-47eb-8d57-6fbc5abbe7e2",
84
118
  "slug": "sieve",
119
+ "core": false,
120
+ "unlocked_by": null,
85
121
  "difficulty": 1,
86
122
  "topics": [
87
123
 
88
124
  ]
89
125
  },
90
126
  {
127
+ "uuid": "45a2591a-493d-4bab-be64-847243b4554b",
91
128
  "slug": "roman-numerals",
129
+ "core": false,
130
+ "unlocked_by": null,
92
131
  "difficulty": 1,
93
132
  "topics": [
94
133
 
95
134
  ]
96
135
  },
97
136
  {
137
+ "uuid": "7dc99d5e-95af-4f91-85d4-ddb4c9dbb758",
98
138
  "slug": "atbash-cipher",
139
+ "core": false,
140
+ "unlocked_by": null,
99
141
  "difficulty": 1,
100
142
  "topics": [
101
143
 
102
144
  ]
103
145
  },
104
146
  {
147
+ "uuid": "2df0796e-951d-4f10-8a2e-5c54f2443f10",
105
148
  "slug": "anagram",
149
+ "core": false,
150
+ "unlocked_by": null,
106
151
  "difficulty": 1,
107
152
  "topics": [
108
153
 
109
154
  ]
110
155
  },
111
156
  {
157
+ "uuid": "2da645e4-7e72-4377-a7ac-184b67ff8a63",
112
158
  "slug": "react",
159
+ "core": false,
160
+ "unlocked_by": null,
113
161
  "difficulty": 1,
114
162
  "topics": [
115
163
 
116
164
  ]
117
165
  },
118
166
  {
167
+ "uuid": "5373e713-f2ab-4b1e-b934-92969174bc48",
119
168
  "slug": "acronym",
169
+ "core": false,
170
+ "unlocked_by": null,
120
171
  "difficulty": 1,
121
172
  "topics": [
122
173
 
123
174
  ]
124
175
  },
125
176
  {
177
+ "uuid": "d0c862a3-7d1f-4081-b378-f631ccf54fac",
126
178
  "slug": "binary",
179
+ "core": false,
180
+ "unlocked_by": null,
127
181
  "difficulty": 1,
128
182
  "topics": [
129
183
 
130
184
  ]
131
185
  },
132
186
  {
187
+ "uuid": "415605d8-cc98-4eb1-9467-5c970e69f137",
133
188
  "slug": "binary-search-tree",
189
+ "core": false,
190
+ "unlocked_by": null,
134
191
  "difficulty": 1,
135
192
  "topics": [
136
193
  "data structures",
@@ -140,36 +197,45 @@
140
197
  ]
141
198
  },
142
199
  {
200
+ "uuid": "bed338cd-2308-4a15-9225-699d1d09ed49",
143
201
  "slug": "run-length-encoding",
202
+ "core": false,
203
+ "unlocked_by": null,
144
204
  "difficulty": 1,
145
205
  "topics": [
146
206
 
147
207
  ]
148
208
  },
149
209
  {
210
+ "uuid": "1f04c451-a96a-4299-9386-6774b08f55ed",
150
211
  "slug": "pascals-triangle",
212
+ "core": false,
213
+ "unlocked_by": null,
151
214
  "difficulty": 1,
152
215
  "topics": [
153
216
 
154
217
  ]
155
218
  },
156
219
  {
220
+ "uuid": "c85a6334-2f76-44ce-8ca5-0e997cc65d03",
157
221
  "slug": "forth",
222
+ "core": false,
223
+ "unlocked_by": null,
158
224
  "difficulty": 3,
159
225
  "topics": [
160
226
 
161
227
  ]
162
228
  },
163
229
  {
230
+ "uuid": "85b2450c-727d-4b84-9904-02c37f385610",
164
231
  "slug": "flatten-array",
232
+ "core": false,
233
+ "unlocked_by": null,
165
234
  "difficulty": 1,
166
235
  "topics": [
167
236
 
168
237
  ]
169
238
  }
170
- ],
171
- "deprecated": [
172
-
173
239
  ],
174
240
  "foregone": [
175
241
 
@@ -0,0 +1,16 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
data/tracks/d/config.json CHANGED
@@ -6,21 +6,30 @@
6
6
  "active": true,
7
7
  "exercises": [
8
8
  {
9
+ "uuid": "a91c2216-9331-4485-ae4b-190ee9e2a7f8",
9
10
  "slug": "hello-world",
11
+ "core": false,
12
+ "unlocked_by": null,
10
13
  "difficulty": 1,
11
14
  "topics": [
12
15
  "language basics"
13
16
  ]
14
17
  },
15
18
  {
19
+ "uuid": "9f52d6a7-1002-4614-afc3-cce03187c59b",
16
20
  "slug": "leap",
21
+ "core": false,
22
+ "unlocked_by": null,
17
23
  "difficulty": 1,
18
24
  "topics": [
19
25
  "language basics"
20
26
  ]
21
27
  },
22
28
  {
29
+ "uuid": "8c976f92-fcfa-45f0-9bd1-2353822e51e8",
23
30
  "slug": "gigasecond",
31
+ "core": false,
32
+ "unlocked_by": null,
24
33
  "difficulty": 1,
25
34
  "topics": [
26
35
  "language basics",
@@ -28,7 +37,10 @@
28
37
  ]
29
38
  },
30
39
  {
40
+ "uuid": "208f9a34-bdf2-4c2b-b102-f0ef1a5d04fe",
31
41
  "slug": "rna-transcription",
42
+ "core": false,
43
+ "unlocked_by": null,
32
44
  "difficulty": 2,
33
45
  "topics": [
34
46
  "string manipulation",
@@ -37,7 +49,10 @@
37
49
  ]
38
50
  },
39
51
  {
52
+ "uuid": "f6d21f86-b4d3-4dec-b830-8e19e1018548",
40
53
  "slug": "raindrops",
54
+ "core": false,
55
+ "unlocked_by": null,
41
56
  "difficulty": 1,
42
57
  "topics": [
43
58
  "language basics",
@@ -45,7 +60,10 @@
45
60
  ]
46
61
  },
47
62
  {
63
+ "uuid": "99ee69a6-2c0f-4c7c-86f9-bee1633b4f51",
48
64
  "slug": "bob",
65
+ "core": false,
66
+ "unlocked_by": null,
49
67
  "difficulty": 2,
50
68
  "topics": [
51
69
  "string manipulation",
@@ -53,7 +71,10 @@
53
71
  ]
54
72
  },
55
73
  {
74
+ "uuid": "dc631076-1eb8-4120-bd8f-dccf33df9a3f",
56
75
  "slug": "etl",
76
+ "core": false,
77
+ "unlocked_by": null,
57
78
  "difficulty": 2,
58
79
  "topics": [
59
80
  "string manipulation",
@@ -62,7 +83,10 @@
62
83
  ]
63
84
  },
64
85
  {
86
+ "uuid": "87c87444-2349-40ab-a9a3-c0f0d2e200d6",
65
87
  "slug": "hamming",
88
+ "core": false,
89
+ "unlocked_by": null,
66
90
  "difficulty": 2,
67
91
  "topics": [
68
92
  "error handling",
@@ -70,7 +94,10 @@
70
94
  ]
71
95
  },
72
96
  {
97
+ "uuid": "23b23ac0-62ef-4a22-b634-d64206c8a226",
73
98
  "slug": "nucleotide-count",
99
+ "core": false,
100
+ "unlocked_by": null,
74
101
  "difficulty": 3,
75
102
  "topics": [
76
103
  "classes",
@@ -79,7 +106,10 @@
79
106
  ]
80
107
  },
81
108
  {
109
+ "uuid": "d7dd5df3-ff36-47ee-88db-e0f974a4cb19",
82
110
  "slug": "robot-name",
111
+ "core": false,
112
+ "unlocked_by": null,
83
113
  "difficulty": 3,
84
114
  "topics": [
85
115
  "classes",
@@ -87,7 +117,10 @@
87
117
  ]
88
118
  },
89
119
  {
120
+ "uuid": "d6c67e30-c950-40b6-b6db-0fa6df5652af",
90
121
  "slug": "difference-of-squares",
122
+ "core": false,
123
+ "unlocked_by": null,
91
124
  "difficulty": 2,
92
125
  "topics": [
93
126
  "control-flow (foreach)",
@@ -97,7 +130,10 @@
97
130
  ]
98
131
  },
99
132
  {
133
+ "uuid": "5647c00e-d4be-4546-bac3-6a3e1670c2a1",
100
134
  "slug": "roman-numerals",
135
+ "core": false,
136
+ "unlocked_by": null,
101
137
  "difficulty": 3,
102
138
  "topics": [
103
139
  "string manipulation",
@@ -106,7 +142,10 @@
106
142
  ]
107
143
  },
108
144
  {
145
+ "uuid": "14c3c478-9dc1-470b-8517-35c3ceac3f47",
109
146
  "slug": "series",
147
+ "core": false,
148
+ "unlocked_by": null,
110
149
  "difficulty": 3,
111
150
  "topics": [
112
151
  "string manipulation",
@@ -114,7 +153,10 @@
114
153
  ]
115
154
  },
116
155
  {
156
+ "uuid": "c9acd967-fc2a-4c74-b584-2572ce690e71",
117
157
  "slug": "triangle",
158
+ "core": false,
159
+ "unlocked_by": null,
118
160
  "difficulty": 2,
119
161
  "topics": [
120
162
  "language basics",
@@ -122,7 +164,10 @@
122
164
  ]
123
165
  },
124
166
  {
167
+ "uuid": "45afc532-3f6c-4b9e-90f6-c53a79551af1",
125
168
  "slug": "crypto-square",
169
+ "core": false,
170
+ "unlocked_by": null,
126
171
  "difficulty": 3,
127
172
  "topics": [
128
173
  "string manipulation",
@@ -131,7 +176,10 @@
131
176
  ]
132
177
  },
133
178
  {
179
+ "uuid": "2ba799a8-eab9-44a0-9b31-a10e72baa38b",
134
180
  "slug": "circular-buffer",
181
+ "core": false,
182
+ "unlocked_by": null,
135
183
  "difficulty": 4,
136
184
  "topics": [
137
185
  "class templates",
@@ -139,7 +187,10 @@
139
187
  ]
140
188
  },
141
189
  {
190
+ "uuid": "a4cf4571-1f97-438c-9c02-3fe7c52ee25f",
142
191
  "slug": "pangram",
192
+ "core": false,
193
+ "unlocked_by": null,
143
194
  "difficulty": 1,
144
195
  "topics": [
145
196
  "language basics",
@@ -148,7 +199,10 @@
148
199
  ]
149
200
  },
150
201
  {
202
+ "uuid": "31dd1e53-2b5e-4d40-ac4c-a68fe5e6635c",
151
203
  "slug": "react",
204
+ "core": false,
205
+ "unlocked_by": null,
152
206
  "difficulty": 10,
153
207
  "topics": [
154
208
  "reactive programming",
@@ -158,9 +212,6 @@
158
212
  "delegates"
159
213
  ]
160
214
  }
161
- ],
162
- "deprecated": [
163
-
164
215
  ],
165
216
  "foregone": [
166
217
 
@@ -0,0 +1,49 @@
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 [D page](http://exercism.io/languages/dlang) 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
+ ```D
30
+ static if (all_tests_enabled)
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 D facilities in preference to writing your own
40
+ low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
41
+ and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
42
+
43
+
44
+ ## Source
45
+
46
+ 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)
47
+
48
+ ## Submitting Incomplete Solutions
49
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,81 @@
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
+ ## Getting Started
47
+
48
+ Make sure you have read [D page](http://exercism.io/languages/dlang) on
49
+ exercism.io. This covers the basic information on setting up the development
50
+ environment expected by the exercises.
51
+
52
+ ## Passing the Tests
53
+
54
+ Get the first test compiling, linking and passing by following the [three
55
+ rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
56
+ Create just enough structure by declaring namespaces, functions, classes,
57
+ etc., to satisfy any compiler errors and get the test to fail. Then write
58
+ just enough code to get the test to pass. Once you've done that,
59
+ uncomment the next test by moving the following line past the next test.
60
+
61
+ ```D
62
+ static if (all_tests_enabled)
63
+ ```
64
+
65
+ This may result in compile errors as new constructs may be invoked that
66
+ you haven't yet declared or defined. Again, fix the compile errors minimally
67
+ to get a failing test, then change the code minimally to pass the test,
68
+ refactor your implementation for readability and expressiveness and then
69
+ go on to the next test.
70
+
71
+ Try to use standard D facilities in preference to writing your own
72
+ low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
73
+ and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
74
+
75
+
76
+ ## Source
77
+
78
+ Wikipedia [http://en.wikipedia.org/wiki/Circular_buffer](http://en.wikipedia.org/wiki/Circular_buffer)
79
+
80
+ ## Submitting Incomplete Solutions
81
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,105 @@
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 [D page](http://exercism.io/languages/dlang) 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
+ ```D
86
+ static if (all_tests_enabled)
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 D facilities in preference to writing your own
96
+ low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
97
+ and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
98
+
99
+
100
+ ## Source
101
+
102
+ 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)
103
+
104
+ ## Submitting Incomplete Solutions
105
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.