trackler 2.2.1.110 → 2.2.1.111

Sign up to get free protection for your applications and to get access to all the features.
Files changed (939) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/house/canonical-data.json +28 -200
  4. data/problem-specifications/exercises/react/canonical-data.json +49 -2
  5. data/tracks/c/config.json +49 -0
  6. data/tracks/c/exercises/crypto-square/README.md +69 -0
  7. data/tracks/c/exercises/crypto-square/makefile +25 -0
  8. data/tracks/c/exercises/crypto-square/src/example.c +87 -0
  9. data/tracks/c/exercises/crypto-square/src/example.h +6 -0
  10. data/tracks/c/exercises/crypto-square/test/test_crypto_square.c +99 -0
  11. data/tracks/c/exercises/crypto-square/test/vendor/unity.c +1300 -0
  12. data/tracks/c/exercises/crypto-square/test/vendor/unity.h +274 -0
  13. data/tracks/c/exercises/crypto-square/test/vendor/unity_internals.h +701 -0
  14. data/tracks/c/exercises/pig-latin/README.md +17 -0
  15. data/tracks/c/exercises/pig-latin/makefile +25 -0
  16. data/tracks/c/exercises/pig-latin/src/example.c +128 -0
  17. data/tracks/c/exercises/pig-latin/src/example.h +6 -0
  18. data/tracks/c/exercises/pig-latin/test/test_pig_latin.c +239 -0
  19. data/tracks/c/exercises/pig-latin/test/vendor/unity.c +1300 -0
  20. data/tracks/c/exercises/pig-latin/test/vendor/unity.h +274 -0
  21. data/tracks/c/exercises/pig-latin/test/vendor/unity_internals.h +701 -0
  22. data/tracks/c/exercises/say/README.md +62 -0
  23. data/tracks/c/exercises/say/makefile +27 -0
  24. data/tracks/c/exercises/say/src/example.c +144 -0
  25. data/tracks/c/exercises/say/src/example.h +7 -0
  26. data/tracks/c/exercises/say/test/test_say.c +185 -0
  27. data/tracks/c/exercises/say/test/vendor/unity.c +1300 -0
  28. data/tracks/c/exercises/say/test/vendor/unity.h +274 -0
  29. data/tracks/c/exercises/say/test/vendor/unity_internals.h +701 -0
  30. data/tracks/c/exercises/secret-handshake/README.md +28 -0
  31. data/tracks/c/exercises/secret-handshake/makefile +25 -0
  32. data/tracks/c/exercises/secret-handshake/src/example.c +60 -0
  33. data/tracks/c/exercises/secret-handshake/src/example.h +7 -0
  34. data/tracks/c/exercises/secret-handshake/test/test_secret_handshake.c +133 -0
  35. data/tracks/c/exercises/secret-handshake/test/vendor/unity.c +1300 -0
  36. data/tracks/c/exercises/secret-handshake/test/vendor/unity.h +274 -0
  37. data/tracks/c/exercises/secret-handshake/test/vendor/unity_internals.h +701 -0
  38. data/tracks/coffeescript/config/exercise_readme.go.tmpl +7 -4
  39. data/tracks/coffeescript/exercises/accumulate/README.md +0 -3
  40. data/tracks/coffeescript/exercises/atbash-cipher/README.md +2 -1
  41. data/tracks/coffeescript/exercises/beer-song/README.md +2 -2
  42. data/tracks/coffeescript/exercises/binary/README.md +2 -0
  43. data/tracks/coffeescript/exercises/linked-list/README.md +10 -10
  44. data/tracks/coffeescript/exercises/luhn/README.md +7 -7
  45. data/tracks/coffeescript/exercises/nucleotide-count/README.md +8 -22
  46. data/tracks/coffeescript/exercises/palindrome-products/README.md +15 -16
  47. data/tracks/coffeescript/exercises/pascals-triangle/README.md +2 -2
  48. data/tracks/coffeescript/exercises/queen-attack/README.md +1 -1
  49. data/tracks/coffeescript/exercises/triangle/README.md +9 -6
  50. data/tracks/coffeescript/exercises/trinary/README.md +1 -1
  51. data/tracks/coffeescript/exercises/word-count/README.md +1 -2
  52. data/tracks/coffeescript/exercises/wordy/README.md +0 -5
  53. data/tracks/coq/config/exercise_readme.go.tmpl +23 -4
  54. data/tracks/coq/exercises/rna-transcription/README.md +2 -2
  55. data/tracks/cpp/config/exercise_readme.go.tmpl +31 -4
  56. data/tracks/cpp/exercises/allergies/README.md +0 -1
  57. data/tracks/cpp/exercises/atbash-cipher/README.md +2 -1
  58. data/tracks/cpp/exercises/beer-song/README.md +2 -2
  59. data/tracks/cpp/exercises/binary/README.md +2 -0
  60. data/tracks/cpp/exercises/crypto-square/README.md +10 -8
  61. data/tracks/cpp/exercises/etl/README.md +3 -1
  62. data/tracks/cpp/exercises/food-chain/README.md +1 -1
  63. data/tracks/cpp/exercises/grade-school/README.md +0 -1
  64. data/tracks/cpp/exercises/grains/README.md +0 -1
  65. data/tracks/cpp/exercises/leap/README.md +1 -1
  66. data/tracks/cpp/exercises/meetup/README.md +16 -13
  67. data/tracks/cpp/exercises/nucleotide-count/README.md +2 -4
  68. data/tracks/cpp/exercises/pangram/README.md +1 -1
  69. data/tracks/cpp/exercises/phone-number/README.md +4 -3
  70. data/tracks/cpp/exercises/queen-attack/README.md +1 -1
  71. data/tracks/cpp/exercises/rna-transcription/README.md +2 -2
  72. data/tracks/cpp/exercises/roman-numerals/README.md +1 -1
  73. data/tracks/cpp/exercises/scrabble-score/README.md +3 -1
  74. data/tracks/cpp/exercises/space-age/README.md +1 -2
  75. data/tracks/cpp/exercises/sum-of-multiples/README.md +3 -6
  76. data/tracks/cpp/exercises/triangle/README.md +9 -6
  77. data/tracks/cpp/exercises/trinary/README.md +1 -1
  78. data/tracks/cpp/exercises/word-count/README.md +1 -2
  79. data/tracks/d/config/exercise_readme.go.tmpl +30 -4
  80. data/tracks/d/exercises/circular-buffer/README.md +13 -6
  81. data/tracks/d/exercises/crypto-square/README.md +10 -8
  82. data/tracks/d/exercises/etl/README.md +3 -1
  83. data/tracks/d/exercises/leap/README.md +1 -1
  84. data/tracks/d/exercises/nucleotide-count/README.md +8 -22
  85. data/tracks/d/exercises/pangram/README.md +1 -1
  86. data/tracks/d/exercises/react/README.md +0 -1
  87. data/tracks/d/exercises/rna-transcription/README.md +2 -2
  88. data/tracks/d/exercises/roman-numerals/README.md +1 -1
  89. data/tracks/d/exercises/triangle/README.md +9 -6
  90. data/tracks/ecmascript/config/exercise_readme.go.tmpl +29 -4
  91. data/tracks/ecmascript/exercises/accumulate/README.md +1 -4
  92. data/tracks/ecmascript/exercises/acronym/README.md +1 -2
  93. data/tracks/ecmascript/exercises/all-your-base/README.md +2 -3
  94. data/tracks/ecmascript/exercises/allergies/README.md +1 -2
  95. data/tracks/ecmascript/exercises/alphametics/README.md +3 -4
  96. data/tracks/ecmascript/exercises/anagram/README.md +1 -1
  97. data/tracks/ecmascript/exercises/atbash-cipher/README.md +3 -2
  98. data/tracks/ecmascript/exercises/beer-song/README.md +3 -3
  99. data/tracks/ecmascript/exercises/binary-search-tree/README.md +1 -1
  100. data/tracks/ecmascript/exercises/binary-search/README.md +1 -1
  101. data/tracks/ecmascript/exercises/binary/README.md +3 -1
  102. data/tracks/ecmascript/exercises/bowling/README.md +32 -15
  103. data/tracks/ecmascript/exercises/bracket-push/README.md +1 -1
  104. data/tracks/ecmascript/exercises/change/README.md +19 -10
  105. data/tracks/ecmascript/exercises/circular-buffer/README.md +14 -7
  106. data/tracks/ecmascript/exercises/clock/README.md +1 -1
  107. data/tracks/ecmascript/exercises/collatz-conjecture/README.md +5 -1
  108. data/tracks/ecmascript/exercises/complex-numbers/README.md +2 -2
  109. data/tracks/ecmascript/exercises/connect/README.md +2 -3
  110. data/tracks/ecmascript/exercises/crypto-square/README.md +11 -9
  111. data/tracks/ecmascript/exercises/custom-set/README.md +1 -2
  112. data/tracks/ecmascript/exercises/diamond/README.md +7 -7
  113. data/tracks/ecmascript/exercises/difference-of-squares/README.md +1 -1
  114. data/tracks/ecmascript/exercises/diffie-hellman/README.md +1 -1
  115. data/tracks/ecmascript/exercises/etl/README.md +4 -2
  116. data/tracks/ecmascript/exercises/flatten-array/README.md +2 -3
  117. data/tracks/ecmascript/exercises/food-chain/README.md +2 -2
  118. data/tracks/ecmascript/exercises/gigasecond/README.md +1 -1
  119. data/tracks/ecmascript/exercises/grade-school/README.md +1 -2
  120. data/tracks/ecmascript/exercises/grains/README.md +1 -2
  121. data/tracks/ecmascript/exercises/hamming/README.md +1 -1
  122. data/tracks/ecmascript/exercises/hello-world/README.md +1 -1
  123. data/tracks/ecmascript/exercises/hexadecimal/README.md +1 -1
  124. data/tracks/ecmascript/exercises/house/README.md +1 -5
  125. data/tracks/ecmascript/exercises/isbn-verifier/README.md +32 -17
  126. data/tracks/ecmascript/exercises/isogram/README.md +3 -2
  127. data/tracks/ecmascript/exercises/kindergarten-garden/README.md +14 -14
  128. data/tracks/ecmascript/exercises/largest-series-product/README.md +1 -1
  129. data/tracks/ecmascript/exercises/leap/README.md +2 -2
  130. data/tracks/ecmascript/exercises/linked-list/README.md +11 -11
  131. data/tracks/ecmascript/exercises/list-ops/README.md +1 -2
  132. data/tracks/ecmascript/exercises/luhn/README.md +8 -8
  133. data/tracks/ecmascript/exercises/matrix/README.md +7 -5
  134. data/tracks/ecmascript/exercises/meetup/README.md +17 -14
  135. data/tracks/ecmascript/exercises/minesweeper/README.md +1 -2
  136. data/tracks/ecmascript/exercises/nth-prime/README.md +1 -1
  137. data/tracks/ecmascript/exercises/ocr-numbers/README.md +7 -7
  138. data/tracks/ecmascript/exercises/octal/README.md +7 -3
  139. data/tracks/ecmascript/exercises/palindrome-products/README.md +16 -17
  140. data/tracks/ecmascript/exercises/pangram/README.md +2 -2
  141. data/tracks/ecmascript/exercises/pascals-triangle/README.md +3 -3
  142. data/tracks/ecmascript/exercises/perfect-numbers/README.md +3 -3
  143. data/tracks/ecmascript/exercises/phone-number/README.md +5 -4
  144. data/tracks/ecmascript/exercises/pig-latin/README.md +1 -1
  145. data/tracks/ecmascript/exercises/prime-factors/README.md +1 -1
  146. data/tracks/ecmascript/exercises/protein-translation/README.md +8 -8
  147. data/tracks/ecmascript/exercises/proverb/README.md +17 -27
  148. data/tracks/ecmascript/exercises/pythagorean-triplet/README.md +4 -4
  149. data/tracks/ecmascript/exercises/queen-attack/README.md +2 -2
  150. data/tracks/ecmascript/exercises/raindrops/README.md +1 -1
  151. data/tracks/ecmascript/exercises/react/README.md +8 -1
  152. data/tracks/ecmascript/exercises/rectangles/README.md +11 -10
  153. data/tracks/ecmascript/exercises/rna-transcription/README.md +3 -3
  154. data/tracks/ecmascript/exercises/robot-name/README.md +1 -1
  155. data/tracks/ecmascript/exercises/robot-simulator/README.md +1 -1
  156. data/tracks/ecmascript/exercises/roman-numerals/README.md +2 -2
  157. data/tracks/ecmascript/exercises/rotational-cipher/README.md +3 -2
  158. data/tracks/ecmascript/exercises/run-length-encoding/README.md +9 -8
  159. data/tracks/ecmascript/exercises/saddle-points/README.md +3 -3
  160. data/tracks/ecmascript/exercises/say/README.md +1 -1
  161. data/tracks/ecmascript/exercises/scrabble-score/README.md +4 -2
  162. data/tracks/ecmascript/exercises/secret-handshake/README.md +3 -3
  163. data/tracks/ecmascript/exercises/series/README.md +1 -1
  164. data/tracks/ecmascript/exercises/sieve/README.md +1 -1
  165. data/tracks/ecmascript/exercises/simple-cipher/README.md +6 -8
  166. data/tracks/ecmascript/exercises/simple-linked-list/README.md +2 -1
  167. data/tracks/ecmascript/exercises/space-age/README.md +2 -2
  168. data/tracks/ecmascript/exercises/spiral-matrix/README.md +4 -3
  169. data/tracks/ecmascript/exercises/strain/README.md +1 -1
  170. data/tracks/ecmascript/exercises/sublist/README.md +1 -1
  171. data/tracks/ecmascript/exercises/sum-of-multiples/README.md +4 -7
  172. data/tracks/ecmascript/exercises/transpose/README.md +3 -2
  173. data/tracks/ecmascript/exercises/triangle/README.md +10 -7
  174. data/tracks/ecmascript/exercises/trinary/README.md +2 -2
  175. data/tracks/ecmascript/exercises/twelve-days/README.md +3 -4
  176. data/tracks/ecmascript/exercises/two-bucket/README.md +11 -11
  177. data/tracks/ecmascript/exercises/two-fer/README.md +8 -6
  178. data/tracks/ecmascript/exercises/word-count/README.md +2 -3
  179. data/tracks/ecmascript/exercises/word-search/README.md +2 -1
  180. data/tracks/ecmascript/exercises/wordy/README.md +1 -6
  181. data/tracks/elixir/exercises/bob/bob_test.exs +1 -1
  182. data/tracks/elixir/exercises/bob/example.exs +13 -9
  183. data/tracks/elm/config.json +28 -0
  184. data/tracks/elm/config/exercise_readme.go.tmpl +3 -3
  185. data/tracks/elm/docs/INSTALLATION.md +6 -2
  186. data/tracks/elm/exercises/accumulate/README.md +3 -3
  187. data/tracks/elm/exercises/acronym/Acronym.elm +1 -0
  188. data/tracks/elm/exercises/acronym/Acronym.example.elm +22 -0
  189. data/tracks/elm/exercises/acronym/README.md +44 -0
  190. data/tracks/elm/exercises/acronym/elm-package.json +15 -0
  191. data/tracks/elm/exercises/acronym/tests/Tests.elm +35 -0
  192. data/tracks/elm/exercises/acronym/tests/elm-package.json +16 -0
  193. data/tracks/elm/exercises/all-your-base/README.md +3 -3
  194. data/tracks/elm/exercises/allergies/README.md +3 -3
  195. data/tracks/elm/exercises/anagram/README.md +3 -3
  196. data/tracks/elm/exercises/atbash-cipher/README.md +3 -3
  197. data/tracks/elm/exercises/binary-search/README.md +3 -3
  198. data/tracks/elm/exercises/bob/README.md +3 -5
  199. data/tracks/elm/exercises/collatz-conjecture/README.md +3 -3
  200. data/tracks/elm/exercises/difference-of-squares/README.md +3 -3
  201. data/tracks/elm/exercises/etl/README.md +3 -3
  202. data/tracks/elm/exercises/gigasecond/README.md +3 -3
  203. data/tracks/elm/exercises/grade-school/README.md +3 -3
  204. data/tracks/elm/exercises/grains/README.md +3 -3
  205. data/tracks/elm/exercises/hamming/README.md +3 -3
  206. data/tracks/elm/exercises/hello-world/README.md +3 -3
  207. data/tracks/elm/exercises/isogram/README.md +3 -3
  208. data/tracks/elm/exercises/largest-series-product/README.md +3 -3
  209. data/tracks/elm/exercises/leap/README.md +3 -3
  210. data/tracks/elm/exercises/list-ops/README.md +3 -3
  211. data/tracks/elm/exercises/luhn/Luhn.elm +1 -0
  212. data/tracks/elm/exercises/luhn/Luhn.example.elm +51 -0
  213. data/tracks/elm/exercises/luhn/README.md +101 -0
  214. data/tracks/elm/exercises/luhn/elm-package.json +15 -0
  215. data/tracks/elm/exercises/luhn/tests/Tests.elm +62 -0
  216. data/tracks/elm/exercises/luhn/tests/elm-package.json +16 -0
  217. data/tracks/elm/exercises/nucleotide-count/README.md +3 -3
  218. data/tracks/elm/exercises/pangram/.meta/description.md +7 -0
  219. data/tracks/elm/exercises/pangram/README.md +4 -4
  220. data/tracks/elm/exercises/pascals-triangle/README.md +3 -3
  221. data/tracks/elm/exercises/phone-number/README.md +3 -3
  222. data/tracks/elm/exercises/raindrops/README.md +3 -3
  223. data/tracks/elm/exercises/rna-transcription/README.md +4 -4
  224. data/tracks/elm/exercises/robot-simulator/README.md +3 -3
  225. data/tracks/elm/exercises/roman-numerals/README.md +3 -3
  226. data/tracks/elm/exercises/run-length-encoding/README.md +3 -3
  227. data/tracks/elm/exercises/say/README.md +3 -3
  228. data/tracks/elm/exercises/scrabble-score/README.md +3 -3
  229. data/tracks/elm/exercises/series/README.md +3 -3
  230. data/tracks/elm/exercises/space-age/README.md +3 -3
  231. data/tracks/elm/exercises/strain/README.md +3 -3
  232. data/tracks/elm/exercises/sublist/README.md +3 -3
  233. data/tracks/elm/exercises/sum-of-multiples/README.md +3 -3
  234. data/tracks/elm/exercises/triangle/README.md +3 -3
  235. data/tracks/elm/exercises/twelve-days/README.md +65 -0
  236. data/tracks/elm/exercises/twelve-days/TwelveDays.elm +1 -0
  237. data/tracks/elm/exercises/twelve-days/TwelveDays.example.elm +148 -0
  238. data/tracks/elm/exercises/twelve-days/elm-package.json +14 -0
  239. data/tracks/elm/exercises/twelve-days/tests/Tests.elm +130 -0
  240. data/tracks/elm/exercises/twelve-days/tests/elm-package.json +16 -0
  241. data/tracks/elm/exercises/word-count/README.md +3 -3
  242. data/tracks/elm/package-lock.json +2329 -0
  243. data/tracks/elm/package.json +6 -1
  244. data/tracks/erlang/config/exercise_readme.go.tmpl +42 -4
  245. data/tracks/erlang/exercises/accumulate/README.md +0 -3
  246. data/tracks/erlang/exercises/all-your-base/README.md +1 -2
  247. data/tracks/erlang/exercises/allergies/README.md +0 -1
  248. data/tracks/erlang/exercises/atbash-cipher/README.md +2 -1
  249. data/tracks/erlang/exercises/bank-account/README.md +0 -1
  250. data/tracks/erlang/exercises/beer-song/README.md +2 -2
  251. data/tracks/erlang/exercises/circular-buffer/README.md +13 -6
  252. data/tracks/erlang/exercises/collatz-conjecture/README.md +1 -1
  253. data/tracks/erlang/exercises/custom-set/README.md +0 -1
  254. data/tracks/erlang/exercises/etl/README.md +3 -1
  255. data/tracks/erlang/exercises/grade-school/README.md +0 -1
  256. data/tracks/erlang/exercises/grains/README.md +0 -1
  257. data/tracks/erlang/exercises/isogram/README.md +5 -7
  258. data/tracks/erlang/exercises/leap/README.md +1 -1
  259. data/tracks/erlang/exercises/luhn/README.md +7 -7
  260. data/tracks/erlang/exercises/meetup/README.md +16 -13
  261. data/tracks/erlang/exercises/nucleotide-count/README.md +8 -22
  262. data/tracks/erlang/exercises/pangram/README.md +7 -9
  263. data/tracks/erlang/exercises/parallel-letter-frequency/README.md +0 -1
  264. data/tracks/erlang/exercises/phone-number/README.md +4 -3
  265. data/tracks/erlang/exercises/raindrops/README.md +1 -1
  266. data/tracks/erlang/exercises/rna-transcription/README.md +2 -2
  267. data/tracks/erlang/exercises/roman-numerals/README.md +1 -1
  268. data/tracks/erlang/exercises/rotational-cipher/README.md +2 -1
  269. data/tracks/erlang/exercises/scrabble-score/README.md +3 -1
  270. data/tracks/erlang/exercises/sieve/README.md +26 -37
  271. data/tracks/erlang/exercises/space-age/README.md +1 -1
  272. data/tracks/erlang/exercises/spiral-matrix/README.md +2 -2
  273. data/tracks/erlang/exercises/sum-of-multiples/README.md +3 -6
  274. data/tracks/erlang/exercises/triangle/README.md +9 -6
  275. data/tracks/erlang/exercises/two-fer/README.md +48 -5
  276. data/tracks/erlang/exercises/word-count/README.md +1 -2
  277. data/tracks/erlang/exercises/zipper/README.md +1 -2
  278. data/tracks/go/config.json +11 -0
  279. data/tracks/go/exercises/bowling/cases_test.go +17 -2
  280. data/tracks/go/exercises/grep/.meta/gen.go +9 -7
  281. data/tracks/go/exercises/grep/cases_test.go +2 -2
  282. data/tracks/go/exercises/scale-generator/.meta/gen.go +59 -0
  283. data/tracks/go/exercises/scale-generator/README.md +76 -0
  284. data/tracks/go/exercises/scale-generator/cases_test.go +117 -0
  285. data/tracks/go/exercises/scale-generator/example.go +62 -0
  286. data/tracks/go/exercises/scale-generator/scale_generator_test.go +24 -0
  287. data/tracks/haskell/.travis.yml +16 -0
  288. data/tracks/haskell/config.json +9 -0
  289. data/tracks/haskell/config/exercise_readme.go.tmpl +53 -4
  290. data/tracks/haskell/exercises/all-your-base/README.md +0 -1
  291. data/tracks/haskell/exercises/alphametics/README.md +0 -1
  292. data/tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs +2 -2
  293. data/tracks/haskell/exercises/bank-account/README.md +0 -1
  294. data/tracks/haskell/exercises/bank-account/examples/success-standard/src/BankAccount.hs +1 -1
  295. data/tracks/haskell/exercises/connect/README.md +0 -1
  296. data/tracks/haskell/exercises/custom-set/README.md +0 -1
  297. data/tracks/haskell/exercises/dominoes/README.md +0 -1
  298. data/tracks/haskell/exercises/forth/README.md +0 -1
  299. data/tracks/haskell/exercises/go-counting/README.md +0 -1
  300. data/tracks/haskell/exercises/lens-person/README.md +0 -1
  301. data/tracks/haskell/exercises/list-ops/README.md +0 -1
  302. data/tracks/haskell/exercises/minesweeper/README.md +0 -1
  303. data/tracks/haskell/exercises/parallel-letter-frequency/README.md +0 -1
  304. data/tracks/haskell/exercises/sgf-parsing/README.md +0 -1
  305. data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs +2 -3
  306. data/tracks/haskell/exercises/sublist/README.md +0 -1
  307. data/tracks/haskell/exercises/transpose/README.md +119 -0
  308. data/tracks/haskell/exercises/transpose/examples/success-standard/package.yaml +16 -0
  309. data/tracks/haskell/exercises/transpose/examples/success-standard/src/Transpose.hs +16 -0
  310. data/tracks/haskell/exercises/transpose/package.yaml +20 -0
  311. data/tracks/haskell/exercises/transpose/src/Transpose.hs +4 -0
  312. data/tracks/haskell/exercises/transpose/stack.yaml +1 -0
  313. data/tracks/haskell/exercises/transpose/test/Tests.hs +181 -0
  314. data/tracks/haskell/exercises/zipper/README.md +0 -1
  315. data/tracks/java/config.json +38 -0
  316. data/tracks/java/exercises/atbash-cipher/.meta/version +1 -1
  317. data/tracks/java/exercises/collatz-conjecture/.meta/version +1 -1
  318. data/tracks/java/exercises/diffie-hellman/.meta/hints.md +3 -0
  319. data/tracks/java/exercises/diffie-hellman/.meta/src/reference/java/DiffieHellman.java +24 -0
  320. data/tracks/java/exercises/diffie-hellman/README.md +63 -0
  321. data/tracks/java/exercises/diffie-hellman/build.gradle +19 -0
  322. data/tracks/java/exercises/diffie-hellman/src/main/java/.keep +0 -0
  323. data/tracks/java/exercises/diffie-hellman/src/test/java/DiffieHellmanTest.java +98 -0
  324. data/tracks/java/exercises/error-handling/.meta/hints.md +35 -0
  325. data/tracks/java/exercises/error-handling/.meta/src/reference/java/CustomCheckedException.java +11 -0
  326. data/tracks/java/exercises/error-handling/.meta/src/reference/java/CustomUncheckedException.java +11 -0
  327. data/tracks/java/exercises/error-handling/.meta/src/reference/java/ErrorHandling.java +63 -0
  328. data/tracks/java/exercises/error-handling/README.md +24 -0
  329. data/tracks/java/exercises/error-handling/build.gradle +18 -0
  330. data/tracks/java/exercises/error-handling/src/main/java/CustomCheckedException.java +11 -0
  331. data/tracks/java/exercises/error-handling/src/main/java/CustomUncheckedException.java +11 -0
  332. data/tracks/java/exercises/error-handling/src/main/java/ErrorHandling.java +49 -0
  333. data/tracks/java/exercises/error-handling/src/test/java/ErrorHandlingTest.java +116 -0
  334. data/tracks/java/exercises/flatten-array/.meta/version +1 -1
  335. data/tracks/java/exercises/nth-prime/.meta/version +1 -1
  336. data/tracks/java/exercises/pig-latin/README.md +4 -4
  337. data/tracks/java/exercises/protein-translation/.meta/version +1 -1
  338. data/tracks/java/exercises/saddle-points/.meta/version +1 -1
  339. data/tracks/java/exercises/settings.gradle +3 -0
  340. data/tracks/java/exercises/variable-length-quantity/.meta/src/reference/java/VariableLengthQuantity.java +53 -0
  341. data/tracks/java/exercises/variable-length-quantity/.meta/version +1 -0
  342. data/tracks/java/exercises/variable-length-quantity/README.md +50 -0
  343. data/tracks/java/exercises/variable-length-quantity/build.gradle +18 -0
  344. data/tracks/java/exercises/variable-length-quantity/src/main/java/VariableLengthQuantity.java +12 -0
  345. data/tracks/java/exercises/variable-length-quantity/src/test/java/VariableLengthQuantityTest.java +265 -0
  346. data/tracks/java/exercises/word-count/.meta/version +1 -1
  347. data/tracks/javascript/.eslintignore +0 -6
  348. data/tracks/javascript/config.json +47 -0
  349. data/tracks/javascript/exercises/bowling/bowling.spec.js +105 -41
  350. data/tracks/javascript/exercises/bowling/example.js +112 -59
  351. data/tracks/javascript/exercises/custom-set/example-gen.js +4 -4
  352. data/tracks/javascript/exercises/flatten-array/example.js +6 -5
  353. data/tracks/javascript/exercises/flatten-array/flatten-array.spec.js +15 -15
  354. data/tracks/javascript/exercises/grade-school/example.js +6 -6
  355. data/tracks/javascript/exercises/kindergarten-garden/example.js +9 -9
  356. data/tracks/javascript/exercises/nth-prime/example.js +6 -6
  357. data/tracks/javascript/exercises/perfect-numbers/example.js +6 -2
  358. data/tracks/javascript/exercises/queen-attack/example.js +5 -5
  359. data/tracks/javascript/exercises/queen-attack/queen-attack.spec.js +11 -9
  360. data/tracks/javascript/exercises/rational-numbers/README.md +62 -0
  361. data/tracks/javascript/exercises/rational-numbers/example.js +69 -0
  362. data/tracks/javascript/exercises/rational-numbers/rational-numbers.spec.js +197 -0
  363. data/tracks/javascript/exercises/rectangles/README.md +91 -0
  364. data/tracks/javascript/exercises/rectangles/example.js +66 -0
  365. data/tracks/javascript/exercises/rectangles/rectangles.spec.js +108 -0
  366. data/tracks/javascript/exercises/rotational-cipher/README.md +64 -0
  367. data/tracks/javascript/exercises/rotational-cipher/example.js +24 -0
  368. data/tracks/javascript/exercises/rotational-cipher/rotational-cipher.spec.js +55 -0
  369. data/tracks/javascript/exercises/secret-handshake/example.js +1 -2
  370. data/tracks/javascript/exercises/secret-handshake/secret-handshake.spec.js +2 -1
  371. data/tracks/javascript/exercises/simple-linked-list/example.js +10 -6
  372. data/tracks/javascript/exercises/simple-linked-list/simple-linked-list.spec.js +6 -3
  373. data/tracks/javascript/exercises/variable-length-quantity/README.md +62 -0
  374. data/tracks/javascript/exercises/variable-length-quantity/example.js +51 -0
  375. data/tracks/javascript/exercises/variable-length-quantity/variable-length-quantity.spec.js +115 -0
  376. data/tracks/javascript/package.json +4 -2
  377. data/tracks/lfe/config/exercise_readme.go.tmpl +15 -4
  378. data/tracks/lfe/exercises/accumulate/README.md +0 -3
  379. data/tracks/lfe/exercises/allergies/README.md +0 -1
  380. data/tracks/lfe/exercises/atbash-cipher/README.md +2 -1
  381. data/tracks/lfe/exercises/bank-account/README.md +0 -1
  382. data/tracks/lfe/exercises/beer-song/README.md +2 -2
  383. data/tracks/lfe/exercises/binary/README.md +2 -0
  384. data/tracks/lfe/exercises/circular-buffer/README.md +13 -6
  385. data/tracks/lfe/exercises/etl/README.md +3 -1
  386. data/tracks/lfe/exercises/grade-school/README.md +0 -1
  387. data/tracks/lfe/exercises/grains/README.md +0 -1
  388. data/tracks/lfe/exercises/leap/README.md +1 -1
  389. data/tracks/lfe/exercises/luhn/README.md +7 -7
  390. data/tracks/lfe/exercises/meetup/README.md +16 -13
  391. data/tracks/lfe/exercises/nucleotide-count/README.md +8 -22
  392. data/tracks/lfe/exercises/parallel-letter-frequency/README.md +0 -1
  393. data/tracks/lfe/exercises/phone-number/README.md +4 -3
  394. data/tracks/lfe/exercises/rna-transcription/README.md +2 -2
  395. data/tracks/lfe/exercises/space-age/README.md +1 -1
  396. data/tracks/lfe/exercises/sum-of-multiples/README.md +3 -6
  397. data/tracks/lfe/exercises/trinary/README.md +1 -1
  398. data/tracks/lfe/exercises/word-count/README.md +1 -2
  399. data/tracks/objective-c/config.json +11 -0
  400. data/tracks/objective-c/exercises/prime-factors/PrimeFactorsExample.h +9 -0
  401. data/tracks/objective-c/exercises/prime-factors/PrimeFactorsExample.m +24 -0
  402. data/tracks/objective-c/exercises/prime-factors/PrimeFactorsTest.m +67 -0
  403. data/tracks/objective-c/exercises/prime-factors/README.md +58 -0
  404. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  405. data/tracks/ocaml/README.md +11 -2
  406. data/tracks/ocaml/docs/INSTALLATION.md +4 -4
  407. data/tracks/ocaml/docs/LEARNING.md +4 -2
  408. data/tracks/ocaml/docs/TESTS.md +7 -14
  409. data/tracks/ocaml/exercises/acronym/Makefile +4 -6
  410. data/tracks/ocaml/exercises/acronym/example.ml +2 -2
  411. data/tracks/ocaml/exercises/acronym/jbuild +11 -0
  412. data/tracks/ocaml/exercises/acronym/test.ml +1 -2
  413. data/tracks/ocaml/exercises/all-your-base/Makefile +4 -6
  414. data/tracks/ocaml/exercises/all-your-base/example.ml +1 -1
  415. data/tracks/ocaml/exercises/all-your-base/jbuild +11 -0
  416. data/tracks/ocaml/exercises/all-your-base/test.ml +1 -2
  417. data/tracks/ocaml/exercises/anagram/Makefile +4 -6
  418. data/tracks/ocaml/exercises/anagram/example.ml +2 -2
  419. data/tracks/ocaml/exercises/anagram/jbuild +11 -0
  420. data/tracks/ocaml/exercises/anagram/test.ml +2 -2
  421. data/tracks/ocaml/exercises/atbash-cipher/Makefile +4 -6
  422. data/tracks/ocaml/exercises/atbash-cipher/example.ml +1 -1
  423. data/tracks/ocaml/exercises/atbash-cipher/jbuild +11 -0
  424. data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -2
  425. data/tracks/ocaml/exercises/beer-song/Makefile +4 -6
  426. data/tracks/ocaml/exercises/beer-song/example.ml +3 -3
  427. data/tracks/ocaml/exercises/beer-song/jbuild +11 -0
  428. data/tracks/ocaml/exercises/beer-song/test.ml +3 -3
  429. data/tracks/ocaml/exercises/binary-search/Makefile +4 -6
  430. data/tracks/ocaml/exercises/binary-search/example.ml +1 -1
  431. data/tracks/ocaml/exercises/binary-search/jbuild +11 -0
  432. data/tracks/ocaml/exercises/binary-search/test.ml +1 -2
  433. data/tracks/ocaml/exercises/bob/Makefile +4 -6
  434. data/tracks/ocaml/exercises/bob/example.ml +2 -2
  435. data/tracks/ocaml/exercises/bob/jbuild +11 -0
  436. data/tracks/ocaml/exercises/bowling/Makefile +4 -6
  437. data/tracks/ocaml/exercises/bowling/bowling.mli +1 -1
  438. data/tracks/ocaml/exercises/bowling/example.ml +1 -1
  439. data/tracks/ocaml/exercises/bowling/jbuild +11 -0
  440. data/tracks/ocaml/exercises/bowling/test.ml +1 -1
  441. data/tracks/ocaml/exercises/bracket-push/Makefile +4 -6
  442. data/tracks/ocaml/exercises/bracket-push/example.ml +2 -2
  443. data/tracks/ocaml/exercises/bracket-push/jbuild +11 -0
  444. data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
  445. data/tracks/ocaml/exercises/change/Makefile +4 -6
  446. data/tracks/ocaml/exercises/change/example.ml +1 -1
  447. data/tracks/ocaml/exercises/change/jbuild +11 -0
  448. data/tracks/ocaml/exercises/change/test.ml +2 -2
  449. data/tracks/ocaml/exercises/connect/Makefile +4 -10
  450. data/tracks/ocaml/exercises/connect/example.ml +23 -17
  451. data/tracks/ocaml/exercises/connect/jbuild +11 -0
  452. data/tracks/ocaml/exercises/connect/test.ml +1 -1
  453. data/tracks/ocaml/exercises/custom-set/Makefile +4 -6
  454. data/tracks/ocaml/exercises/custom-set/jbuild +11 -0
  455. data/tracks/ocaml/exercises/difference-of-squares/Makefile +4 -6
  456. data/tracks/ocaml/exercises/difference-of-squares/example.ml +1 -1
  457. data/tracks/ocaml/exercises/difference-of-squares/jbuild +11 -0
  458. data/tracks/ocaml/exercises/difference-of-squares/test.ml +0 -1
  459. data/tracks/ocaml/exercises/dominoes/Makefile +4 -6
  460. data/tracks/ocaml/exercises/dominoes/example.ml +1 -1
  461. data/tracks/ocaml/exercises/dominoes/jbuild +11 -0
  462. data/tracks/ocaml/exercises/dominoes/test.ml +9 -4
  463. data/tracks/ocaml/exercises/etl/Makefile +4 -6
  464. data/tracks/ocaml/exercises/etl/example.ml +1 -1
  465. data/tracks/ocaml/exercises/etl/jbuild +11 -0
  466. data/tracks/ocaml/exercises/etl/test.ml +1 -3
  467. data/tracks/ocaml/exercises/forth/Makefile +4 -6
  468. data/tracks/ocaml/exercises/forth/example.ml +7 -4
  469. data/tracks/ocaml/exercises/forth/jbuild +11 -0
  470. data/tracks/ocaml/exercises/forth/test.ml +1 -1
  471. data/tracks/ocaml/exercises/grade-school/Makefile +4 -6
  472. data/tracks/ocaml/exercises/grade-school/example.ml +5 -6
  473. data/tracks/ocaml/exercises/grade-school/grade_school.mli +1 -6
  474. data/tracks/ocaml/exercises/grade-school/jbuild +11 -0
  475. data/tracks/ocaml/exercises/grade-school/test.ml +24 -56
  476. data/tracks/ocaml/exercises/hamming/Makefile +4 -6
  477. data/tracks/ocaml/exercises/hamming/example.ml +9 -2
  478. data/tracks/ocaml/exercises/hamming/jbuild +11 -0
  479. data/tracks/ocaml/exercises/hamming/test.ml +6 -6
  480. data/tracks/ocaml/exercises/hangman/Makefile +4 -6
  481. data/tracks/ocaml/exercises/hangman/example.ml +1 -1
  482. data/tracks/ocaml/exercises/hangman/jbuild +11 -0
  483. data/tracks/ocaml/exercises/hangman/test.ml +0 -1
  484. data/tracks/ocaml/exercises/hello-world/Makefile +4 -6
  485. data/tracks/ocaml/exercises/hello-world/jbuild +11 -0
  486. data/tracks/ocaml/exercises/hello-world/test.ml +1 -2
  487. data/tracks/ocaml/exercises/hexadecimal/Makefile +4 -6
  488. data/tracks/ocaml/exercises/hexadecimal/example.ml +2 -2
  489. data/tracks/ocaml/exercises/hexadecimal/jbuild +11 -0
  490. data/tracks/ocaml/exercises/hexadecimal/test.ml +1 -1
  491. data/tracks/ocaml/exercises/leap/Makefile +4 -6
  492. data/tracks/ocaml/exercises/leap/jbuild +11 -0
  493. data/tracks/ocaml/exercises/leap/test.ml +1 -2
  494. data/tracks/ocaml/exercises/list-ops/Makefile +4 -6
  495. data/tracks/ocaml/exercises/list-ops/jbuild +11 -0
  496. data/tracks/ocaml/exercises/list-ops/test.ml +2 -2
  497. data/tracks/ocaml/exercises/luhn/Makefile +4 -6
  498. data/tracks/ocaml/exercises/luhn/example.ml +2 -2
  499. data/tracks/ocaml/exercises/luhn/jbuild +11 -0
  500. data/tracks/ocaml/exercises/luhn/test.ml +1 -1
  501. data/tracks/ocaml/exercises/meetup/Makefile +4 -6
  502. data/tracks/ocaml/exercises/meetup/example.ml +1 -1
  503. data/tracks/ocaml/exercises/meetup/jbuild +11 -0
  504. data/tracks/ocaml/exercises/meetup/test.ml +1 -1
  505. data/tracks/ocaml/exercises/minesweeper/Makefile +4 -6
  506. data/tracks/ocaml/exercises/minesweeper/example.ml +2 -2
  507. data/tracks/ocaml/exercises/minesweeper/jbuild +11 -0
  508. data/tracks/ocaml/exercises/minesweeper/test.ml +1 -1
  509. data/tracks/ocaml/exercises/nucleotide-count/Makefile +4 -6
  510. data/tracks/ocaml/exercises/nucleotide-count/example.ml +1 -1
  511. data/tracks/ocaml/exercises/nucleotide-count/jbuild +11 -0
  512. data/tracks/ocaml/exercises/nucleotide-count/nucleotide_count.mli +1 -1
  513. data/tracks/ocaml/exercises/nucleotide-count/test.ml +1 -1
  514. data/tracks/ocaml/exercises/palindrome-products/Makefile +4 -6
  515. data/tracks/ocaml/exercises/palindrome-products/example.ml +5 -5
  516. data/tracks/ocaml/exercises/palindrome-products/jbuild +12 -0
  517. data/tracks/ocaml/exercises/pangram/Makefile +4 -6
  518. data/tracks/ocaml/exercises/pangram/example.ml +15 -6
  519. data/tracks/ocaml/exercises/pangram/jbuild +11 -0
  520. data/tracks/ocaml/exercises/pangram/test.ml +1 -2
  521. data/tracks/ocaml/exercises/phone-number/Makefile +4 -6
  522. data/tracks/ocaml/exercises/phone-number/example.ml +5 -5
  523. data/tracks/ocaml/exercises/phone-number/jbuild +11 -0
  524. data/tracks/ocaml/exercises/phone-number/test.ml +2 -2
  525. data/tracks/ocaml/exercises/prime-factors/Makefile +4 -6
  526. data/tracks/ocaml/exercises/prime-factors/example.ml +2 -2
  527. data/tracks/ocaml/exercises/prime-factors/jbuild +11 -0
  528. data/tracks/ocaml/exercises/prime-factors/test.ml +2 -2
  529. data/tracks/ocaml/exercises/raindrops/Makefile +4 -6
  530. data/tracks/ocaml/exercises/raindrops/example.ml +0 -2
  531. data/tracks/ocaml/exercises/raindrops/jbuild +11 -0
  532. data/tracks/ocaml/exercises/raindrops/test.ml +1 -2
  533. data/tracks/ocaml/exercises/react/Makefile +4 -6
  534. data/tracks/ocaml/exercises/react/example.ml +1 -1
  535. data/tracks/ocaml/exercises/react/jbuild +11 -0
  536. data/tracks/ocaml/exercises/react/test.ml +1 -1
  537. data/tracks/ocaml/exercises/rectangles/Makefile +4 -6
  538. data/tracks/ocaml/exercises/rectangles/jbuild +11 -0
  539. data/tracks/ocaml/exercises/rectangles/test.ml +1 -2
  540. data/tracks/ocaml/exercises/rna-transcription/Makefile +4 -6
  541. data/tracks/ocaml/exercises/rna-transcription/example.ml +1 -3
  542. data/tracks/ocaml/exercises/rna-transcription/jbuild +11 -0
  543. data/tracks/ocaml/exercises/rna-transcription/test.ml +1 -1
  544. data/tracks/ocaml/exercises/robot-name/Makefile +4 -6
  545. data/tracks/ocaml/exercises/robot-name/example.ml +2 -2
  546. data/tracks/ocaml/exercises/robot-name/jbuild +11 -0
  547. data/tracks/ocaml/exercises/robot-name/test.ml +6 -5
  548. data/tracks/ocaml/exercises/roman-numerals/Makefile +4 -6
  549. data/tracks/ocaml/exercises/roman-numerals/jbuild +11 -0
  550. data/tracks/ocaml/exercises/roman-numerals/test.ml +1 -2
  551. data/tracks/ocaml/exercises/run-length-encoding/Makefile +4 -6
  552. data/tracks/ocaml/exercises/run-length-encoding/example.ml +3 -3
  553. data/tracks/ocaml/exercises/run-length-encoding/jbuild +11 -0
  554. data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
  555. data/tracks/ocaml/exercises/say/Makefile +4 -6
  556. data/tracks/ocaml/exercises/say/example.ml +2 -2
  557. data/tracks/ocaml/exercises/say/jbuild +11 -0
  558. data/tracks/ocaml/exercises/say/test.ml +1 -1
  559. data/tracks/ocaml/exercises/space-age/Makefile +4 -6
  560. data/tracks/ocaml/exercises/space-age/example.ml +1 -1
  561. data/tracks/ocaml/exercises/space-age/jbuild +11 -0
  562. data/tracks/ocaml/exercises/space-age/test.ml +2 -2
  563. data/tracks/ocaml/exercises/triangle/Makefile +4 -6
  564. data/tracks/ocaml/exercises/triangle/example.ml +1 -1
  565. data/tracks/ocaml/exercises/triangle/jbuild +11 -0
  566. data/tracks/ocaml/exercises/triangle/test.ml +1 -1
  567. data/tracks/ocaml/exercises/word-count/Makefile +4 -6
  568. data/tracks/ocaml/exercises/word-count/example.ml +1 -1
  569. data/tracks/ocaml/exercises/word-count/jbuild +11 -0
  570. data/tracks/ocaml/exercises/word-count/test.ml +1 -1
  571. data/tracks/ocaml/exercises/word-count/word_count.mli +1 -1
  572. data/tracks/ocaml/exercises/zipper/Makefile +4 -6
  573. data/tracks/ocaml/exercises/zipper/example.ml +1 -1
  574. data/tracks/ocaml/exercises/zipper/jbuild +12 -0
  575. data/tracks/ocaml/exercises/zipper/test.ml +1 -1
  576. data/tracks/ocaml/exercises/zipper/tree.ml +1 -1
  577. data/tracks/ocaml/exercises/zipper/tree.mli +1 -1
  578. data/tracks/ocaml/exercises/zipper/zipper.mli +1 -1
  579. data/tracks/ocaml/tools/test-generator/Makefile +4 -13
  580. data/tracks/ocaml/tools/test-generator/jbuild +11 -0
  581. data/tracks/perl5/exercises/bob/.meta/exercise-data.yaml +9 -10
  582. data/tracks/perl5/exercises/bob/.meta/solutions/Bob.pm +7 -7
  583. data/tracks/perl5/exercises/bob/Bob.pm +1 -1
  584. data/tracks/perl5/exercises/bob/bob.t +81 -44
  585. data/tracks/perl5/exercises/clock/.meta/exercise-data.yaml +82 -0
  586. data/tracks/perl5/exercises/clock/.meta/solutions/Clock.pm +25 -52
  587. data/tracks/perl5/exercises/clock/Clock.pm +22 -0
  588. data/tracks/perl5/exercises/clock/clock.t +628 -92
  589. data/tracks/perl5/exercises/hello-world/.meta/exercise-data.yaml +1 -2
  590. data/tracks/perl5/exercises/hello-world/hello-world.t +4 -16
  591. data/tracks/perl5/exercises/leap/.meta/exercise-data.yaml +2 -3
  592. data/tracks/perl5/exercises/leap/leap.t +16 -21
  593. data/tracks/perl5/exercises/luhn/.meta/exercise-data.yaml +2 -2
  594. data/tracks/perl5/exercises/luhn/luhn.t +44 -30
  595. data/tracks/perl5/exercises/phone-number/.meta/exercise-data.yaml +3 -3
  596. data/tracks/perl5/exercises/phone-number/.meta/solutions/PhoneNumber.pm +1 -1
  597. data/tracks/perl5/exercises/phone-number/PhoneNumber.pm +1 -1
  598. data/tracks/perl5/exercises/phone-number/phone-number.t +59 -31
  599. data/tracks/perl6/exercises/all-your-base/.meta/exercise-data.yaml +1 -1
  600. data/tracks/perl6/exercises/all-your-base/all-your-base.t +45 -45
  601. data/tracks/plsql/config/exercise_readme.go.tmpl +19 -4
  602. data/tracks/plsql/exercises/binary/README.md +2 -0
  603. data/tracks/plsql/exercises/grains/README.md +0 -1
  604. data/tracks/plsql/exercises/leap/README.md +1 -1
  605. data/tracks/plsql/exercises/rna-transcription/README.md +2 -2
  606. data/tracks/plsql/exercises/roman-numerals/README.md +1 -1
  607. data/tracks/prolog/config.json +30 -0
  608. data/tracks/prolog/config/maintainers.json +10 -0
  609. data/tracks/prolog/docs/INSTALLATION.md +4 -4
  610. data/tracks/prolog/docs/LEARNING.md +1 -0
  611. data/tracks/prolog/docs/TESTS.md +1 -1
  612. data/tracks/prolog/exercises/complex-numbers/README.md +38 -0
  613. data/tracks/prolog/exercises/complex-numbers/complex_numbers.example +14 -0
  614. data/tracks/prolog/exercises/complex-numbers/complex_numbers.pl +11 -0
  615. data/tracks/prolog/exercises/complex-numbers/complex_numbers_tests.plt +123 -0
  616. data/tracks/prolog/exercises/hello-world/README.md +1 -1
  617. data/tracks/prolog/exercises/hello-world/hello_world.pl +1 -1
  618. data/tracks/prolog/exercises/hello-world/hello_world_tests.plt +1 -1
  619. data/tracks/prolog/exercises/isogram/README.md +19 -0
  620. data/tracks/prolog/exercises/isogram/isogram.example +10 -0
  621. data/tracks/prolog/exercises/isogram/isogram.pl +1 -0
  622. data/tracks/prolog/exercises/isogram/isogram_tests.plt +39 -0
  623. data/tracks/prolog/exercises/queen-attack/README.md +32 -0
  624. data/tracks/prolog/exercises/queen-attack/queen_attack.example +12 -0
  625. data/tracks/prolog/exercises/queen-attack/queen_attack.pl +11 -0
  626. data/tracks/prolog/exercises/queen-attack/queen_attack_tests.plt +62 -0
  627. data/tracks/python/config/exercise_readme.go.tmpl +20 -1
  628. data/tracks/python/exercises/accumulate/README.md +20 -1
  629. data/tracks/python/exercises/acronym/README.md +20 -1
  630. data/tracks/python/exercises/all-your-base/README.md +20 -1
  631. data/tracks/python/exercises/allergies/README.md +20 -1
  632. data/tracks/python/exercises/alphametics/README.md +20 -1
  633. data/tracks/python/exercises/anagram/README.md +20 -1
  634. data/tracks/python/exercises/armstrong-numbers/README.md +20 -1
  635. data/tracks/python/exercises/atbash-cipher/README.md +20 -1
  636. data/tracks/python/exercises/beer-song/README.md +20 -1
  637. data/tracks/python/exercises/binary-search-tree/README.md +20 -1
  638. data/tracks/python/exercises/binary-search/README.md +20 -1
  639. data/tracks/python/exercises/binary/README.md +20 -1
  640. data/tracks/python/exercises/bob/README.md +20 -1
  641. data/tracks/python/exercises/book-store/README.md +20 -1
  642. data/tracks/python/exercises/bowling/README.md +20 -1
  643. data/tracks/python/exercises/bracket-push/README.md +20 -1
  644. data/tracks/python/exercises/change/README.md +20 -1
  645. data/tracks/python/exercises/circular-buffer/README.md +20 -1
  646. data/tracks/python/exercises/clock/README.md +20 -1
  647. data/tracks/python/exercises/collatz-conjecture/README.md +20 -1
  648. data/tracks/python/exercises/complex-numbers/README.md +20 -1
  649. data/tracks/python/exercises/connect/README.md +20 -1
  650. data/tracks/python/exercises/crypto-square/README.md +20 -1
  651. data/tracks/python/exercises/custom-set/README.md +20 -1
  652. data/tracks/python/exercises/diamond/README.md +20 -1
  653. data/tracks/python/exercises/difference-of-squares/README.md +20 -1
  654. data/tracks/python/exercises/diffie-hellman/README.md +20 -1
  655. data/tracks/python/exercises/dominoes/README.md +20 -1
  656. data/tracks/python/exercises/dot-dsl/README.md +20 -1
  657. data/tracks/python/exercises/error-handling/README.md +20 -1
  658. data/tracks/python/exercises/etl/README.md +20 -1
  659. data/tracks/python/exercises/flatten-array/README.md +20 -1
  660. data/tracks/python/exercises/food-chain/README.md +20 -1
  661. data/tracks/python/exercises/food-chain/example.py +9 -0
  662. data/tracks/python/exercises/food-chain/food_chain.py +1 -1
  663. data/tracks/python/exercises/food-chain/food_chain_test.py +79 -80
  664. data/tracks/python/exercises/forth/README.md +20 -1
  665. data/tracks/python/exercises/gigasecond/README.md +20 -1
  666. data/tracks/python/exercises/go-counting/README.md +20 -1
  667. data/tracks/python/exercises/grade-school/README.md +20 -1
  668. data/tracks/python/exercises/grains/README.md +20 -1
  669. data/tracks/python/exercises/grains/grains_test.py +1 -1
  670. data/tracks/python/exercises/grep/README.md +20 -1
  671. data/tracks/python/exercises/hamming/README.md +20 -1
  672. data/tracks/python/exercises/hello-world/README.md +20 -1
  673. data/tracks/python/exercises/hexadecimal/README.md +20 -1
  674. data/tracks/python/exercises/house/README.md +20 -1
  675. data/tracks/python/exercises/isbn-verifier/README.md +20 -1
  676. data/tracks/python/exercises/isogram/README.md +20 -1
  677. data/tracks/python/exercises/kindergarten-garden/README.md +20 -1
  678. data/tracks/python/exercises/largest-series-product/README.md +20 -1
  679. data/tracks/python/exercises/leap/README.md +20 -1
  680. data/tracks/python/exercises/linked-list/README.md +20 -1
  681. data/tracks/python/exercises/list-ops/README.md +20 -1
  682. data/tracks/python/exercises/luhn/README.md +20 -1
  683. data/tracks/python/exercises/markdown/README.md +20 -1
  684. data/tracks/python/exercises/matrix/README.md +20 -1
  685. data/tracks/python/exercises/meetup/README.md +20 -1
  686. data/tracks/python/exercises/minesweeper/README.md +20 -1
  687. data/tracks/python/exercises/nth-prime/README.md +20 -1
  688. data/tracks/python/exercises/nucleotide-count/README.md +20 -1
  689. data/tracks/python/exercises/ocr-numbers/README.md +20 -1
  690. data/tracks/python/exercises/octal/README.md +20 -1
  691. data/tracks/python/exercises/palindrome-products/README.md +20 -1
  692. data/tracks/python/exercises/pangram/README.md +20 -1
  693. data/tracks/python/exercises/parallel-letter-frequency/README.md +20 -1
  694. data/tracks/python/exercises/pascals-triangle/README.md +20 -1
  695. data/tracks/python/exercises/perfect-numbers/README.md +20 -1
  696. data/tracks/python/exercises/phone-number/README.md +20 -1
  697. data/tracks/python/exercises/pig-latin/README.md +24 -5
  698. data/tracks/python/exercises/point-mutations/README.md +20 -1
  699. data/tracks/python/exercises/poker/README.md +20 -1
  700. data/tracks/python/exercises/pov/README.md +20 -1
  701. data/tracks/python/exercises/prime-factors/README.md +20 -1
  702. data/tracks/python/exercises/protein-translation/README.md +20 -1
  703. data/tracks/python/exercises/proverb/README.md +20 -1
  704. data/tracks/python/exercises/pythagorean-triplet/README.md +20 -1
  705. data/tracks/python/exercises/queen-attack/README.md +20 -1
  706. data/tracks/python/exercises/queen-attack/example.py +16 -26
  707. data/tracks/python/exercises/queen-attack/queen_attack.py +5 -5
  708. data/tracks/python/exercises/queen-attack/queen_attack_test.py +18 -49
  709. data/tracks/python/exercises/rail-fence-cipher/README.md +20 -1
  710. data/tracks/python/exercises/raindrops/README.md +20 -1
  711. data/tracks/python/exercises/rational-numbers/README.md +20 -1
  712. data/tracks/python/exercises/react/README.md +20 -1
  713. data/tracks/python/exercises/rectangles/README.md +20 -1
  714. data/tracks/python/exercises/reverse-string/README.md +20 -1
  715. data/tracks/python/exercises/rna-transcription/README.md +20 -1
  716. data/tracks/python/exercises/robot-name/README.md +20 -1
  717. data/tracks/python/exercises/robot-simulator/README.md +20 -1
  718. data/tracks/python/exercises/roman-numerals/README.md +20 -1
  719. data/tracks/python/exercises/rotational-cipher/README.md +20 -1
  720. data/tracks/python/exercises/run-length-encoding/README.md +20 -1
  721. data/tracks/python/exercises/saddle-points/README.md +20 -1
  722. data/tracks/python/exercises/say/README.md +20 -1
  723. data/tracks/python/exercises/scale-generator/README.md +20 -1
  724. data/tracks/python/exercises/scrabble-score/README.md +20 -1
  725. data/tracks/python/exercises/secret-handshake/README.md +20 -1
  726. data/tracks/python/exercises/series/README.md +20 -1
  727. data/tracks/python/exercises/sieve/README.md +20 -1
  728. data/tracks/python/exercises/simple-cipher/README.md +20 -1
  729. data/tracks/python/exercises/simple-linked-list/README.md +20 -1
  730. data/tracks/python/exercises/space-age/README.md +20 -1
  731. data/tracks/python/exercises/spiral-matrix/README.md +20 -1
  732. data/tracks/python/exercises/strain/README.md +20 -1
  733. data/tracks/python/exercises/sublist/README.md +20 -1
  734. data/tracks/python/exercises/sum-of-multiples/README.md +20 -1
  735. data/tracks/python/exercises/tournament/README.md +20 -1
  736. data/tracks/python/exercises/transpose/README.md +20 -1
  737. data/tracks/python/exercises/tree-building/README.md +20 -1
  738. data/tracks/python/exercises/triangle/README.md +20 -1
  739. data/tracks/python/exercises/trinary/README.md +20 -1
  740. data/tracks/python/exercises/twelve-days/README.md +20 -1
  741. data/tracks/python/exercises/two-bucket/README.md +21 -2
  742. data/tracks/python/exercises/two-fer/README.md +20 -1
  743. data/tracks/python/exercises/variable-length-quantity/README.md +20 -1
  744. data/tracks/python/exercises/word-count/README.md +20 -1
  745. data/tracks/python/exercises/word-search/README.md +20 -1
  746. data/tracks/python/exercises/wordy/README.md +20 -1
  747. data/tracks/python/exercises/zebra-puzzle/README.md +20 -1
  748. data/tracks/python/exercises/zipper/README.md +20 -1
  749. data/tracks/rust/_test/check-exercises.sh +3 -0
  750. data/tracks/rust/config.json +1 -1
  751. data/tracks/rust/exercises/collatz-conjecture/example.rs +3 -3
  752. data/tracks/rust/exercises/collatz-conjecture/src/lib.rs +2 -2
  753. data/tracks/rust/exercises/collatz-conjecture/tests/collatz-conjecture.rs +5 -5
  754. data/tracks/rust/exercises/nth-prime/example.rs +4 -4
  755. data/tracks/rust/exercises/nth-prime/src/lib.rs +3 -0
  756. data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +5 -5
  757. data/tracks/rust/exercises/perfect-numbers/example.rs +5 -5
  758. data/tracks/rust/exercises/perfect-numbers/src/lib.rs +1 -1
  759. data/tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs +2 -2
  760. data/tracks/rust/exercises/reverse-string/src/lib.rs +2 -2
  761. data/tracks/scala/exercises/nth-prime/src/test/scala/NthPrimeTest.scala +2 -2
  762. data/tracks/scala/exercises/nucleotide-count/src/test/scala/NucleotideCountTest.scala +16 -16
  763. data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrNumbersTest.scala +6 -5
  764. data/tracks/scala/exercises/palindrome-products/src/test/scala/PalindromeProductsTest.scala +15 -19
  765. data/tracks/scala/exercises/pangram/src/test/scala/PangramTest.scala +10 -5
  766. data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +47 -8
  767. data/tracks/scala/exercises/perfect-numbers/src/main/scala/.keep +0 -0
  768. data/tracks/scala/exercises/perfect-numbers/src/test/scala/PerfectNumbersTest.scala +17 -15
  769. data/tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala +26 -16
  770. data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +24 -24
  771. data/tracks/scala/exercises/prime-factors/src/test/scala/PrimefactorsTest.scala +9 -9
  772. data/tracks/scala/exercises/protein-translation/example.scala +5 -5
  773. data/tracks/scala/exercises/protein-translation/src/test/scala/ProteinTranslationTest.scala +91 -29
  774. data/tracks/scala/exercises/queen-attack/src/test/scala/QueenAttackTest.scala +20 -20
  775. data/tracks/scala/exercises/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala +15 -9
  776. data/tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala +2 -2
  777. data/tracks/scala/exercises/rna-transcription/src/test/scala/RnaTranscriptionTest.scala +8 -23
  778. data/tracks/scala/exercises/roman-numerals/src/test/scala/RomanNumeralsTest.scala +6 -1
  779. data/tracks/scala/testgen/src/main/scala/KindergartenGardenTestGenerator.scala +0 -6
  780. data/tracks/scala/testgen/src/main/scala/NthPrimeTestGenerator.scala +3 -3
  781. data/tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala +3 -3
  782. data/tracks/scala/testgen/src/main/scala/OcrNumbersTestGenerator.scala +3 -3
  783. data/tracks/scala/testgen/src/main/scala/PalindromeProductsTestGenerator.scala +3 -3
  784. data/tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala +3 -3
  785. data/tracks/scala/testgen/src/main/scala/PascalsTriangleTestGenerator.scala +1 -1
  786. data/tracks/scala/testgen/src/main/scala/PerfectNumbersTestGenerator.scala +3 -3
  787. data/tracks/scala/testgen/src/main/scala/PhoneNumberTestGenerator.scala +1 -1
  788. data/tracks/scala/testgen/src/main/scala/PigLatinTestGenerator.scala +1 -1
  789. data/tracks/scala/testgen/src/main/scala/PrimeFactorsTestGenerator.scala +6 -8
  790. data/tracks/scala/testgen/src/main/scala/QueenAttackTestGenerator.scala +24 -22
  791. data/tracks/scala/testgen/src/main/scala/RailFenceCipherTestGenerator.scala +1 -1
  792. data/tracks/scala/testgen/src/main/scala/RaindropsTestGenerator.scala +2 -2
  793. data/tracks/scala/testgen/src/main/scala/RnaTranscriptionTestGenerator.scala +3 -3
  794. data/tracks/scala/testgen/src/main/scala/RomanNumeralsTestGenerator.scala +2 -2
  795. data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +5 -0
  796. data/tracks/scheme/docs/RESOURCES.md +1 -0
  797. data/tracks/swift/.travis.yml +5 -0
  798. data/tracks/typescript/config.json +154 -1
  799. data/tracks/typescript/config/maintainers.json +10 -0
  800. data/tracks/typescript/exercises/allergies/README.md +62 -0
  801. data/tracks/typescript/exercises/allergies/allergies.example.ts +48 -0
  802. data/tracks/typescript/exercises/allergies/allergies.test.ts +113 -0
  803. data/tracks/typescript/exercises/allergies/allergies.ts +0 -0
  804. data/tracks/typescript/exercises/allergies/package.json +36 -0
  805. data/tracks/typescript/exercises/allergies/tsconfig.json +22 -0
  806. data/tracks/typescript/exercises/allergies/tslint.json +127 -0
  807. data/tracks/typescript/exercises/allergies/yarn.lock +2624 -0
  808. data/tracks/typescript/exercises/collatz-conjecture/README.md +59 -0
  809. data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.example.ts +20 -0
  810. data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.test.ts +33 -0
  811. data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.ts +7 -0
  812. data/tracks/typescript/exercises/collatz-conjecture/package.json +36 -0
  813. data/tracks/typescript/exercises/collatz-conjecture/tsconfig.json +22 -0
  814. data/tracks/typescript/exercises/collatz-conjecture/tslint.json +127 -0
  815. data/tracks/typescript/exercises/collatz-conjecture/yarn.lock +2624 -0
  816. data/tracks/typescript/exercises/isogram/README.md +46 -0
  817. data/tracks/typescript/exercises/isogram/isogram.example.ts +31 -0
  818. data/tracks/typescript/exercises/isogram/isogram.test.ts +48 -0
  819. data/tracks/typescript/exercises/isogram/isogram.ts +7 -0
  820. data/tracks/typescript/exercises/isogram/package.json +36 -0
  821. data/tracks/typescript/exercises/isogram/tsconfig.json +22 -0
  822. data/tracks/typescript/exercises/isogram/tslint.json +127 -0
  823. data/tracks/typescript/exercises/isogram/yarn.lock +2624 -0
  824. data/tracks/typescript/exercises/matrix/README.md +73 -0
  825. data/tracks/typescript/exercises/matrix/matrix.example.ts +36 -0
  826. data/tracks/typescript/exercises/matrix/matrix.test.ts +43 -0
  827. data/tracks/typescript/exercises/matrix/matrix.ts +7 -0
  828. data/tracks/typescript/exercises/matrix/package.json +36 -0
  829. data/tracks/typescript/exercises/matrix/tsconfig.json +22 -0
  830. data/tracks/typescript/exercises/matrix/tslint.json +127 -0
  831. data/tracks/typescript/exercises/matrix/yarn.lock +2624 -0
  832. data/tracks/typescript/exercises/nucleotide-count/README.md +45 -0
  833. data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.example.ts +25 -0
  834. data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.test.ts +48 -0
  835. data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.ts +7 -0
  836. data/tracks/typescript/exercises/nucleotide-count/package.json +36 -0
  837. data/tracks/typescript/exercises/nucleotide-count/tsconfig.json +22 -0
  838. data/tracks/typescript/exercises/nucleotide-count/tslint.json +127 -0
  839. data/tracks/typescript/exercises/nucleotide-count/yarn.lock +2624 -0
  840. data/tracks/typescript/exercises/protein-translation/README.md +74 -0
  841. data/tracks/typescript/exercises/protein-translation/package.json +36 -0
  842. data/tracks/typescript/exercises/protein-translation/protein-translation.example.ts +61 -0
  843. data/tracks/typescript/exercises/protein-translation/protein-translation.test.ts +118 -0
  844. data/tracks/typescript/exercises/protein-translation/protein-translation.ts +7 -0
  845. data/tracks/typescript/exercises/protein-translation/tsconfig.json +22 -0
  846. data/tracks/typescript/exercises/protein-translation/tslint.json +127 -0
  847. data/tracks/typescript/exercises/protein-translation/yarn.lock +2624 -0
  848. data/tracks/typescript/exercises/reverse-string/README.md +39 -0
  849. data/tracks/typescript/exercises/reverse-string/package.json +36 -0
  850. data/tracks/typescript/exercises/reverse-string/reverse-string.example.ts +7 -0
  851. data/tracks/typescript/exercises/reverse-string/reverse-string.test.ts +28 -0
  852. data/tracks/typescript/exercises/reverse-string/reverse-string.ts +7 -0
  853. data/tracks/typescript/exercises/reverse-string/tsconfig.json +22 -0
  854. data/tracks/typescript/exercises/reverse-string/tslint.json +127 -0
  855. data/tracks/typescript/exercises/reverse-string/yarn.lock +2624 -0
  856. data/tracks/typescript/exercises/roman-numerals/README.md +75 -0
  857. data/tracks/typescript/exercises/roman-numerals/package.json +36 -0
  858. data/tracks/typescript/exercises/roman-numerals/roman-numerals.example.ts +32 -0
  859. data/tracks/typescript/exercises/roman-numerals/roman-numerals.test.ts +98 -0
  860. data/tracks/typescript/exercises/roman-numerals/roman-numerals.ts +7 -0
  861. data/tracks/typescript/exercises/roman-numerals/tsconfig.json +22 -0
  862. data/tracks/typescript/exercises/roman-numerals/tslint.json +127 -0
  863. data/tracks/typescript/exercises/roman-numerals/yarn.lock +2624 -0
  864. data/tracks/typescript/exercises/saddle-points/README.md +59 -0
  865. data/tracks/typescript/exercises/saddle-points/package.json +36 -0
  866. data/tracks/typescript/exercises/saddle-points/saddle-points.example.ts +35 -0
  867. data/tracks/typescript/exercises/saddle-points/saddle-points.test.ts +54 -0
  868. data/tracks/typescript/exercises/saddle-points/saddle-points.ts +7 -0
  869. data/tracks/typescript/exercises/saddle-points/tsconfig.json +22 -0
  870. data/tracks/typescript/exercises/saddle-points/tslint.json +127 -0
  871. data/tracks/typescript/exercises/saddle-points/yarn.lock +2624 -0
  872. data/tracks/typescript/exercises/twelve-days/README.md +61 -0
  873. data/tracks/typescript/exercises/twelve-days/package.json +36 -0
  874. data/tracks/typescript/exercises/twelve-days/tsconfig.json +22 -0
  875. data/tracks/typescript/exercises/twelve-days/tslint.json +127 -0
  876. data/tracks/typescript/exercises/twelve-days/twelve-days.example.ts +53 -0
  877. data/tracks/typescript/exercises/twelve-days/twelve-days.test.ts +80 -0
  878. data/tracks/typescript/exercises/twelve-days/twelve-days.ts +7 -0
  879. data/tracks/typescript/exercises/twelve-days/yarn.lock +2624 -0
  880. data/tracks/typescript/exercises/two-fer/README.md +45 -0
  881. data/tracks/typescript/exercises/two-fer/package.json +36 -0
  882. data/tracks/typescript/exercises/two-fer/tsconfig.json +22 -0
  883. data/tracks/typescript/exercises/two-fer/tslint.json +127 -0
  884. data/tracks/typescript/exercises/two-fer/two-fer.example.ts +7 -0
  885. data/tracks/typescript/exercises/two-fer/two-fer.test.ts +18 -0
  886. data/tracks/typescript/exercises/two-fer/two-fer.ts +7 -0
  887. data/tracks/typescript/exercises/two-fer/yarn.lock +2624 -0
  888. data/tracks/vbnet/config/exercise_readme.go.tmpl +5 -4
  889. data/tracks/vbnet/exercises/accumulate/README.md +0 -3
  890. data/tracks/vbnet/exercises/allergies/README.md +0 -1
  891. data/tracks/vbnet/exercises/atbash-cipher/README.md +2 -1
  892. data/tracks/vbnet/exercises/binary/README.md +2 -0
  893. data/tracks/vbnet/exercises/crypto-square/README.md +10 -8
  894. metadata +251 -47
  895. data/tracks/coffeescript/docs/EXERCISE_README_INSERT.md +0 -6
  896. data/tracks/coq/docs/EXERCISE_README_INSERT.md +0 -22
  897. data/tracks/cpp/docs/EXERCISE_README_INSERT.md +0 -30
  898. data/tracks/d/docs/EXERCISE_README_INSERT.md +0 -29
  899. data/tracks/ecmascript/docs/EXERCISE_README_INSERT.md +0 -28
  900. data/tracks/elm/exercises/accumulate/package.json +0 -14
  901. data/tracks/elm/exercises/allergies/package.json +0 -14
  902. data/tracks/elm/exercises/anagram/package.json +0 -14
  903. data/tracks/elm/exercises/atbash-cipher/package.json +0 -14
  904. data/tracks/elm/exercises/bob/package.json +0 -14
  905. data/tracks/elm/exercises/collatz-conjecture/package.json +0 -14
  906. data/tracks/elm/exercises/difference-of-squares/package.json +0 -14
  907. data/tracks/elm/exercises/etl/package.json +0 -14
  908. data/tracks/elm/exercises/gigasecond/package.json +0 -14
  909. data/tracks/elm/exercises/grade-school/package.json +0 -14
  910. data/tracks/elm/exercises/grains/package.json +0 -14
  911. data/tracks/elm/exercises/hamming/package.json +0 -14
  912. data/tracks/elm/exercises/hello-world/package.json +0 -14
  913. data/tracks/elm/exercises/isogram/package.json +0 -14
  914. data/tracks/elm/exercises/largest-series-product/package.json +0 -14
  915. data/tracks/elm/exercises/leap/package.json +0 -14
  916. data/tracks/elm/exercises/list-ops/package.json +0 -14
  917. data/tracks/elm/exercises/nucleotide-count/package.json +0 -14
  918. data/tracks/elm/exercises/pangram/package.json +0 -14
  919. data/tracks/elm/exercises/pascals-triangle/package.json +0 -14
  920. data/tracks/elm/exercises/phone-number/package.json +0 -14
  921. data/tracks/elm/exercises/raindrops/package.json +0 -14
  922. data/tracks/elm/exercises/rna-transcription/package.json +0 -14
  923. data/tracks/elm/exercises/robot-simulator/package.json +0 -14
  924. data/tracks/elm/exercises/roman-numerals/package.json +0 -14
  925. data/tracks/elm/exercises/run-length-encoding/package.json +0 -14
  926. data/tracks/elm/exercises/say/package.json +0 -14
  927. data/tracks/elm/exercises/scrabble-score/package.json +0 -14
  928. data/tracks/elm/exercises/series/package.json +0 -14
  929. data/tracks/elm/exercises/space-age/package.json +0 -14
  930. data/tracks/elm/exercises/strain/package.json +0 -14
  931. data/tracks/elm/exercises/sublist/package.json +0 -14
  932. data/tracks/elm/exercises/sum-of-multiples/package.json +0 -14
  933. data/tracks/elm/exercises/triangle/package.json +0 -14
  934. data/tracks/elm/exercises/word-count/package.json +0 -14
  935. data/tracks/erlang/docs/EXERCISE_README_INSERT.md +0 -41
  936. data/tracks/haskell/docs/EXERCISE_README_INSERT.md +0 -52
  937. data/tracks/lfe/docs/EXERCISE_README_INSERT.md +0 -14
  938. data/tracks/plsql/docs/EXERCISE_README_INSERT.md +0 -18
  939. data/tracks/vbnet/docs/EXERCISE_README_INSERT.md +0 -5
@@ -5,13 +5,15 @@ that matrix.
5
5
 
6
6
  So given a string with embedded newlines like:
7
7
 
8
- > 9 8 7
9
- > 5 3 2
10
- > 6 6 7
8
+ ```text
9
+ 9 8 7
10
+ 5 3 2
11
+ 6 6 7
12
+ ```
11
13
 
12
14
  representing this matrix:
13
15
 
14
- ```plain
16
+ ```text
15
17
  0 1 2
16
18
  |---------
17
19
  0 | 9 8 7
@@ -43,7 +45,7 @@ And its columns:
43
45
  Go through the setup instructions for ECMAScript to
44
46
  install the necessary dependencies:
45
47
 
46
- http://exercism.io/languages/ecmascript/installation
48
+ http://exercism.io/languages/ecmascript
47
49
 
48
50
  ## Requirements
49
51
 
@@ -2,33 +2,36 @@
2
2
 
3
3
  Calculate the date of meetups.
4
4
 
5
- Typically meetups happen on the same day of the week. In this exercise, you will take
6
- a description of a meetup date, and return the actual meetup date.
5
+ Typically meetups happen on the same day of the week. In this exercise, you
6
+ will take a description of a meetup date, and return the actual meetup date.
7
7
 
8
8
  Examples of general descriptions are:
9
9
 
10
- - the first Monday of January 2017
11
- - the third Tuesday of January 2017
12
- - the Wednesteenth of January 2017
13
- - the last Thursday of January 2017
10
+ - The first Monday of January 2017
11
+ - The third Tuesday of January 2017
12
+ - The wednesteenth of January 2017
13
+ - The last Thursday of January 2017
14
14
 
15
- Note that "Monteenth", "Tuesteenth", etc are all made up words. There
16
- was a meetup whose members realized that there are exactly 7 numbered days in a month that
17
- end in '-teenth'. Therefore, one is guaranteed that each day of the week
15
+ The descriptors you are expected to parse are:
16
+ first, second, third, fourth, fifth, last, monteenth, tuesteenth, wednesteenth,
17
+ thursteenth, friteenth, saturteenth, sunteenth
18
+
19
+ Note that "monteenth", "tuesteenth", etc are all made up words. There was a
20
+ meetup whose members realized that there are exactly 7 numbered days in a month
21
+ that end in '-teenth'. Therefore, one is guaranteed that each day of the week
18
22
  (Monday, Tuesday, ...) will have exactly one date that is named with '-teenth'
19
23
  in every month.
20
24
 
21
- Given examples of a meetup dates, each containing a month, day, year, and descriptor
22
- (first, second, teenth, etc), calculate the date of the actual meetup.
23
- For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2
24
-
25
+ Given examples of a meetup dates, each containing a month, day, year, and
26
+ descriptor calculate the date of the actual meetup. For example, if given
27
+ "The first Monday of January 2017", the correct meetup date is 2017/1/2.
25
28
 
26
29
  ## Setup
27
30
 
28
31
  Go through the setup instructions for ECMAScript to
29
32
  install the necessary dependencies:
30
33
 
31
- http://exercism.io/languages/ecmascript/installation
34
+ http://exercism.io/languages/ecmascript
32
35
 
33
36
  ## Requirements
34
37
 
@@ -31,7 +31,7 @@ into this:
31
31
  Go through the setup instructions for ECMAScript to
32
32
  install the necessary dependencies:
33
33
 
34
- http://exercism.io/languages/ecmascript/installation
34
+ http://exercism.io/languages/ecmascript
35
35
 
36
36
  ## Requirements
37
37
 
@@ -55,6 +55,5 @@ Once you get a test passing, you can enable the next one by
55
55
  changing `xtest` to `test`.
56
56
 
57
57
 
58
-
59
58
  ## Submitting Incomplete Solutions
60
59
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -13,7 +13,7 @@ numbers, pretend they don't exist and implement them yourself.
13
13
  Go through the setup instructions for ECMAScript to
14
14
  install the necessary dependencies:
15
15
 
16
- http://exercism.io/languages/ecmascript/installation
16
+ http://exercism.io/languages/ecmascript
17
17
 
18
18
  ## Requirements
19
19
 
@@ -1,4 +1,4 @@
1
- # Ocr Numbers
1
+ # OCR Numbers
2
2
 
3
3
  Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is
4
4
  represented, or whether it is garbled.
@@ -9,7 +9,7 @@ To begin with, convert a simple binary font to a string containing 0 or 1.
9
9
 
10
10
  The binary font uses pipes and underscores, four rows high and three columns wide.
11
11
 
12
- ```
12
+ ```text
13
13
  _ #
14
14
  | | # zero.
15
15
  |_| #
@@ -18,7 +18,7 @@ The binary font uses pipes and underscores, four rows high and three columns wid
18
18
 
19
19
  Is converted to "0"
20
20
 
21
- ```
21
+ ```text
22
22
  #
23
23
  | # one.
24
24
  | #
@@ -39,7 +39,7 @@ Update your program to recognize multi-character binary strings, replacing garbl
39
39
 
40
40
  Update your program to recognize all numbers 0 through 9, both individually and as part of a larger string.
41
41
 
42
- ```
42
+ ```text
43
43
  _
44
44
  _|
45
45
  |_
@@ -48,7 +48,7 @@ Update your program to recognize all numbers 0 through 9, both individually and
48
48
 
49
49
  Is converted to "2"
50
50
 
51
- ```
51
+ ```text
52
52
  _ _ _ _ _ _ _ _ #
53
53
  | _| _||_||_ |_ ||_||_|| | # decimal numbers.
54
54
  ||_ _| | _||_| ||_| _||_| #
@@ -61,7 +61,7 @@ Is converted to "1234567890"
61
61
 
62
62
  Update your program to handle multiple numbers, one per line. When converting several lines, join the lines with commas.
63
63
 
64
- ```
64
+ ```text
65
65
  _ _
66
66
  | _| _|
67
67
  ||_ _|
@@ -83,7 +83,7 @@ Is converted to "123,456,789"
83
83
  Go through the setup instructions for ECMAScript to
84
84
  install the necessary dependencies:
85
85
 
86
- http://exercism.io/languages/ecmascript/installation
86
+ http://exercism.io/languages/ecmascript
87
87
 
88
88
  ## Requirements
89
89
 
@@ -8,11 +8,13 @@ Implement octal to decimal conversion. Given an octal input
8
8
  string, your program should produce a decimal output.
9
9
 
10
10
  ## Note
11
+
11
12
  - Implement the conversion yourself.
12
13
  Do not use something else to perform the conversion for you.
13
14
  - Treat invalid input as octal 0.
14
15
 
15
16
  ## About Octal (Base-8)
17
+
16
18
  Decimal is a base-10 system.
17
19
 
18
20
  A number 233 in base 10 notation can be understood
@@ -25,7 +27,8 @@ as a linear combination of powers of 10:
25
27
  - All these values are summed.
26
28
 
27
29
  So:
28
- ```
30
+
31
+ ```text
29
32
  233 # decimal
30
33
  = 2*10^2 + 3*10^1 + 3*10^0
31
34
  = 2*100 + 3*10 + 3*1
@@ -34,7 +37,8 @@ So:
34
37
  Octal is similar, but uses powers of 8 rather than powers of 10.
35
38
 
36
39
  So:
37
- ```
40
+
41
+ ```text
38
42
  233 # octal
39
43
  = 2*8^2 + 3*8^1 + 3*8^0
40
44
  = 2*64 + 3*8 + 3*1
@@ -47,7 +51,7 @@ So:
47
51
  Go through the setup instructions for ECMAScript to
48
52
  install the necessary dependencies:
49
53
 
50
- http://exercism.io/languages/ecmascript/installation
54
+ http://exercism.io/languages/ecmascript
51
55
 
52
56
  ## Requirements
53
57
 
@@ -5,40 +5,39 @@ Detect palindrome products in a given range.
5
5
  A palindromic number is a number that remains the same when its digits are
6
6
  reversed. For example, `121` is a palindromic number but `112` is not.
7
7
 
8
- Given the definition of a palindromic number, we define a palindrome _product_
9
- to be the product `c`, such that `a * b = c`, where `c` is a palindromic number and
10
- `a` and `b` are integers (possibly, but _not_ necessarily palindromic numbers).
8
+ Given a range of numbers, find the largest and smallest palindromes which
9
+ are products of numbers within that range.
11
10
 
12
- For example, the palindromic number 9009 can be written as the palindrome
13
- product: `91 * 99 = 9009`.
14
-
15
- It's possible (and indeed common) for a palindrome product to be the product
16
- of multiple combinations of numbers. For example, the palindrome product `9` has
17
- the factors `(1, 9)`, `(3, 3)`, and `(9, 1)`.
18
-
19
- Write a program that given a range of integers, returns the smallest and largest
20
- palindromic product within that range, along with all of it's factors.
11
+ Your solution should return the largest and smallest palindromes, along with the
12
+ factors of each within the range. If the largest or smallest palindrome has more
13
+ than one pair of factors within the range, then return all the pairs.
21
14
 
22
15
  ## Example 1
23
16
 
24
17
  Given the range `[1, 9]` (both inclusive)...
25
18
 
26
- The smallest product is `1`. It's factors are `(1, 1)`.
27
- The largest product is `9`. It's factors are `(1, 9)`, `(3, 3)`, and `(9, 1)`.
19
+ And given the list of all possible products within this range:
20
+ `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]`
21
+
22
+ The palindrome products are all single digit numbers (in this case):
23
+ `[1, 2, 3, 4, 5, 6, 7, 8, 9]`
24
+
25
+ The smallest palindrome product is `1`. Its factors are `(1, 1)`.
26
+ The largest palindrome product is `9`. Its factors are `(1, 9)` and `(3, 3)`.
28
27
 
29
28
  ## Example 2
30
29
 
31
30
  Given the range `[10, 99]` (both inclusive)...
32
31
 
33
- The smallest palindrome product is `121`. It's factors are `(11, 11)`.
34
- The largest palindrome product is `9009`. It's factors are `(91, 99)` and `(99, 91)`.
32
+ The smallest palindrome product is `121`. Its factors are `(11, 11)`.
33
+ The largest palindrome product is `9009`. Its factors are `(91, 99)`.
35
34
 
36
35
  ## Setup
37
36
 
38
37
  Go through the setup instructions for ECMAScript to
39
38
  install the necessary dependencies:
40
39
 
41
- http://exercism.io/languages/ecmascript/installation
40
+ http://exercism.io/languages/ecmascript
42
41
 
43
42
  ## Requirements
44
43
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
4
4
  "every letter") is a sentence using every letter of the alphabet at least once.
5
- The best known English pangram is:
5
+ The best known English pangram is:
6
6
  > The quick brown fox jumps over the lazy dog.
7
7
 
8
8
  The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
@@ -13,7 +13,7 @@ insensitive. Input will not contain non-ASCII symbols.
13
13
  Go through the setup instructions for ECMAScript to
14
14
  install the necessary dependencies:
15
15
 
16
- http://exercism.io/languages/ecmascript/installation
16
+ http://exercism.io/languages/ecmascript
17
17
 
18
18
  ## Requirements
19
19
 
@@ -1,11 +1,11 @@
1
- # Pascals Triangle
1
+ # Pascal's Triangle
2
2
 
3
3
  Compute Pascal's triangle up to a given number of rows.
4
4
 
5
5
  In Pascal's Triangle each number is computed by adding the numbers to
6
6
  the right and left of the current position in the previous row.
7
7
 
8
- ```plain
8
+ ```text
9
9
  1
10
10
  1 1
11
11
  1 2 1
@@ -19,7 +19,7 @@ the right and left of the current position in the previous row.
19
19
  Go through the setup instructions for ECMAScript to
20
20
  install the necessary dependencies:
21
21
 
22
- http://exercism.io/languages/ecmascript/installation
22
+ http://exercism.io/languages/ecmascript
23
23
 
24
24
  ## Requirements
25
25
 
@@ -5,7 +5,7 @@ Nicomachus' (60 - 120 CE) classification scheme for natural numbers.
5
5
 
6
6
  The Greek mathematician [Nicomachus](https://en.wikipedia.org/wiki/Nicomachus) devised a classification scheme for natural numbers, identifying each as belonging uniquely to the categories of **perfect**, **abundant**, or **deficient** based on their [aliquot sum](https://en.wikipedia.org/wiki/Aliquot_sum). The aliquot sum is defined as the sum of the factors of a number not including the number itself. For example, the aliquot sum of 15 is (1 + 3 + 5) = 9
7
7
 
8
- - **Perfect**: aliquot sum = number
8
+ - **Perfect**: aliquot sum = number
9
9
  - 6 is a perfect number because (1 + 2 + 3) = 6
10
10
  - 28 is a perfect number because (1 + 2 + 4 + 7 + 14) = 28
11
11
  - **Abundant**: aliquot sum > number
@@ -14,7 +14,7 @@ The Greek mathematician [Nicomachus](https://en.wikipedia.org/wiki/Nicomachus) d
14
14
  - **Deficient**: aliquot sum < number
15
15
  - 8 is a deficient number because (1 + 2 + 4) = 7
16
16
  - Prime numbers are deficient
17
-
17
+
18
18
  Implement a way to determine whether a given number is **perfect**. Depending on your language track, you may also need to implement a way to determine whether a given number is **abundant** or **deficient**.
19
19
 
20
20
  ## Setup
@@ -22,7 +22,7 @@ Implement a way to determine whether a given number is **perfect**. Depending on
22
22
  Go through the setup instructions for ECMAScript to
23
23
  install the necessary dependencies:
24
24
 
25
- http://exercism.io/languages/ecmascript/installation
25
+ http://exercism.io/languages/ecmascript
26
26
 
27
27
  ## Requirements
28
28
 
@@ -6,14 +6,15 @@ The **North American Numbering Plan (NANP)** is a telephone numbering system use
6
6
 
7
7
  NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
8
8
 
9
-
10
9
  The format is usually represented as
11
- ```
10
+
11
+ ```text
12
12
  (NXX)-NXX-XXXX
13
13
  ```
14
+
14
15
  where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
15
16
 
16
- Your task is to clean up differently formated telephone numbers by removing punctuation and the country code (1) if present.
17
+ Your task is to clean up differently formatted telephone numbers by removing punctuation and the country code (1) if present.
17
18
 
18
19
  For example, the inputs
19
20
  - `+1 (613)-995-0253`
@@ -32,7 +33,7 @@ should all produce the output
32
33
  Go through the setup instructions for ECMAScript to
33
34
  install the necessary dependencies:
34
35
 
35
- http://exercism.io/languages/ecmascript/installation
36
+ http://exercism.io/languages/ecmascript
36
37
 
37
38
  ## Requirements
38
39
 
@@ -22,7 +22,7 @@ See <http://en.wikipedia.org/wiki/Pig_latin> for more details.
22
22
  Go through the setup instructions for ECMAScript to
23
23
  install the necessary dependencies:
24
24
 
25
- http://exercism.io/languages/ecmascript/installation
25
+ http://exercism.io/languages/ecmascript
26
26
 
27
27
  ## Requirements
28
28
 
@@ -34,7 +34,7 @@ You can check this yourself:
34
34
  Go through the setup instructions for ECMAScript to
35
35
  install the necessary dependencies:
36
36
 
37
- http://exercism.io/languages/ecmascript/installation
37
+ http://exercism.io/languages/ecmascript
38
38
 
39
39
  ## Requirements
40
40
 
@@ -12,19 +12,19 @@ Codons: `"AUG", "UUU", "UCU"`
12
12
  Protein: `"Methionine", "Phenylalanine", "Serine"`
13
13
 
14
14
  There are 64 codons which in turn correspond to 20 amino acids; however, all of the codon sequences and resulting amino acids are not important in this exercise. If it works for one codon, the program should work for all of them.
15
- However, feel free to expand the list in the test suite to include them all.
15
+ However, feel free to expand the list in the test suite to include them all.
16
16
 
17
- There are also four terminating codons (also known as 'STOP' codons); if any of these codons are encountered (by the ribosome), all translation ends and the protein is terminated.
17
+ There are also three terminating codons (also known as 'STOP' codons); if any of these codons are encountered (by the ribosome), all translation ends and the protein is terminated.
18
18
 
19
19
  All subsequent codons after are ignored, like this:
20
20
 
21
21
  RNA: `"AUGUUUUCUUAAAUG"` =>
22
22
 
23
- Codons: `"AUG", "UUU", "UCU", "UAG", "AUG"` =>
23
+ Codons: `"AUG", "UUU", "UCU", "UAA", "AUG"` =>
24
24
 
25
25
  Protein: `"Methionine", "Phenylalanine", "Serine"`
26
26
 
27
- Note the stop codon terminates the translation and the final methionine is not translated into the protein sequence.
27
+ Note the stop codon `"UAA"` terminates the translation and the final methionine is not translated into the protein sequence.
28
28
 
29
29
  Below are the codons and resulting Amino Acids needed for the exercise.
30
30
 
@@ -39,7 +39,6 @@ UGU, UGC | Cysteine
39
39
  UGG | Tryptophan
40
40
  UAA, UAG, UGA | STOP
41
41
 
42
-
43
42
  Learn more about [protein translation on Wikipedia](http://en.wikipedia.org/wiki/Translation_(biology))
44
43
 
45
44
  ## Setup
@@ -47,7 +46,7 @@ Learn more about [protein translation on Wikipedia](http://en.wikipedia.org/wiki
47
46
  Go through the setup instructions for ECMAScript to
48
47
  install the necessary dependencies:
49
48
 
50
- http://exercism.io/languages/ecmascript/installation
49
+ http://exercism.io/languages/ecmascript
51
50
 
52
51
  ## Requirements
53
52
 
@@ -57,7 +56,7 @@ Install assignment dependencies:
57
56
  $ npm install
58
57
  ```
59
58
 
60
- ## Making the Test Suite Pass
59
+ ## Making the test suite pass
61
60
 
62
61
  Execute the tests with:
63
62
 
@@ -65,11 +64,12 @@ Execute the tests with:
65
64
  $ npm test
66
65
  ```
67
66
 
68
- In the test suite, all tests but the first have been skipped.
67
+ In the test suites all tests but the first have been skipped.
69
68
 
70
69
  Once you get a test passing, you can enable the next one by
71
70
  changing `xtest` to `test`.
72
71
 
72
+
73
73
  ## Source
74
74
 
75
75
  Tyler Long
@@ -1,38 +1,27 @@
1
1
  # Proverb
2
2
 
3
- "For want of a horseshoe nail, a kingdom was lost" is a popular proverb. There are may variations
4
- of this proverb and these variations can be chained together. For example:
5
-
6
- > For want of a nail the shoe was lost.
7
- > For want of a shoe the horse was lost.
8
- > For want of a horse the rider was lost.
9
- > For want of a rider the message was lost.
10
- > For want of a message the battle was lost.
11
- > For want of a battle the kingdom was lost.
12
- > And all for the want of a horseshoe nail.
13
-
14
- Given two or more nouns, construct the full chain of events for the above proverb.
15
- For example, given the nouns "nail", "shoe" and "horse", your program should output the text:
16
-
17
- >For want of a nail the shoe was lost.
18
- >For want of a shoe the horse was lost.
19
- >And all for the want of a nail.
20
-
21
- Given the nouns, "nail", "shoe", "horse", "rider", "message", and a qualifier "horseshoe", your program should output:
22
-
23
- > For want of a nail the shoe was lost.
24
- > For want of a shoe the horse was lost.
25
- > For want of a horse the rider was lost.
26
- > For want of a rider the message was lost.
27
- > And all for the want of a horseshoe nail.
3
+ For want of a horseshoe nail, a kingdom was lost, or so the saying goes.
4
+
5
+ Given a list of inputs, generate the relevant proverb. For example, given the list `["nail", "shoe", "horse", "rider", "message", "battle", "kingdom"]`, you will output the full text of this proverbial rhyme:
6
+
7
+ ```text
8
+ For want of a nail the shoe was lost.
9
+ For want of a shoe the horse was lost.
10
+ For want of a horse the rider was lost.
11
+ For want of a rider the message was lost.
12
+ For want of a message the battle was lost.
13
+ For want of a battle the kingdom was lost.
14
+ And all for the want of a nail.
15
+ ```
28
16
 
17
+ Note that the list of inputs may vary; your solution should be able to handle lists of arbitrary length and content. No line of the output text should be a static, unchanging string; all should vary according to the input given.
29
18
 
30
19
  ## Setup
31
20
 
32
- Go through the setup instructions for EcmaScript to
21
+ Go through the setup instructions for ECMAScript to
33
22
  install the necessary dependencies:
34
23
 
35
- http://exercism.io/languages/ecmascript/installation
24
+ http://exercism.io/languages/ecmascript
36
25
 
37
26
  ## Requirements
38
27
 
@@ -55,6 +44,7 @@ In the test suites all tests but the first have been skipped.
55
44
  Once you get a test passing, you can enable the next one by
56
45
  changing `xtest` to `test`.
57
46
 
47
+
58
48
  ## Source
59
49
 
60
50
  Wikipedia [http://en.wikipedia.org/wiki/For_Want_of_a_Nail](http://en.wikipedia.org/wiki/For_Want_of_a_Nail)