trackler 2.1.0.48 → 2.1.0.49

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1053) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +88 -82
  3. data/CONTRIBUTING.md +5 -5
  4. data/fixtures/{common → problem-specifications}/exercises/apple/canonical-data.json +0 -0
  5. data/fixtures/{common → problem-specifications}/exercises/apple/description.md +0 -0
  6. data/fixtures/{common → problem-specifications}/exercises/apple/metadata.yml +0 -0
  7. data/fixtures/{common → problem-specifications}/exercises/banana/description.md +0 -0
  8. data/fixtures/{common → problem-specifications}/exercises/banana/metadata.yml +0 -0
  9. data/fixtures/{common → problem-specifications}/exercises/cherry/description.md +0 -0
  10. data/fixtures/{common → problem-specifications}/exercises/cherry/metadata.yml +0 -0
  11. data/fixtures/{common → problem-specifications}/exercises/dog/description.md +0 -0
  12. data/fixtures/{common → problem-specifications}/exercises/dog/metadata.yml +0 -0
  13. data/fixtures/{common → problem-specifications}/exercises/fish/.deprecated +0 -0
  14. data/fixtures/{common → problem-specifications}/exercises/fish/canonical-data.json +0 -0
  15. data/fixtures/{common → problem-specifications}/exercises/fish/description.md +0 -0
  16. data/fixtures/{common → problem-specifications}/exercises/fish/metadata.yml +0 -0
  17. data/fixtures/{common → problem-specifications}/exercises/hello-world/description.md +0 -0
  18. data/fixtures/{common → problem-specifications}/exercises/hello-world/metadata.yml +0 -0
  19. data/fixtures/{common → problem-specifications}/exercises/imbe/description.md +0 -0
  20. data/fixtures/{common → problem-specifications}/exercises/imbe/metadata.yml +0 -0
  21. data/fixtures/{common → problem-specifications}/exercises/mango/canonical-data.json +0 -0
  22. data/fixtures/{common → problem-specifications}/exercises/mango/description.md +0 -0
  23. data/fixtures/{common → problem-specifications}/exercises/mango/metadata.yml +0 -0
  24. data/fixtures/{common → problem-specifications}/exercises/no-metadata/description.md +0 -0
  25. data/fixtures/{common → problem-specifications}/exercises/one/description.md +0 -0
  26. data/fixtures/{common → problem-specifications}/exercises/one/metadata.yml +0 -0
  27. data/fixtures/{common → problem-specifications}/exercises/three/description.md +0 -0
  28. data/fixtures/{common → problem-specifications}/exercises/three/metadata.yml +0 -0
  29. data/fixtures/{common → problem-specifications}/exercises/two/description.md +0 -0
  30. data/fixtures/{common → problem-specifications}/exercises/two/metadata.yml +0 -0
  31. data/fixtures/tracks/animal/exercises/fish/included-via-symlink.txt +1 -0
  32. data/lib/trackler/guaranteed_file.rb +3 -3
  33. data/lib/trackler/specification.rb +4 -4
  34. data/lib/trackler/specifications.rb +1 -1
  35. data/lib/trackler/version.rb +1 -1
  36. data/{common → problem-specifications}/.gitignore +0 -0
  37. data/{common → problem-specifications}/.travis.yml +0 -0
  38. data/{common → problem-specifications}/CONTRIBUTING.md +11 -51
  39. data/{common → problem-specifications}/LICENSE +0 -0
  40. data/{common → problem-specifications}/README.md +2 -9
  41. data/{common → problem-specifications}/TOPICS.txt +0 -0
  42. data/{common → problem-specifications}/bin/check_required_files_present +0 -0
  43. data/{common → problem-specifications}/bin/transfer_blurb_to_description.rb +2 -2
  44. data/{common → problem-specifications}/canonical-schema.json +0 -0
  45. data/{common → problem-specifications}/exercises/accumulate/description.md +0 -0
  46. data/{common → problem-specifications}/exercises/accumulate/metadata.yml +0 -0
  47. data/{common → problem-specifications}/exercises/acronym/canonical-data.json +0 -0
  48. data/{common → problem-specifications}/exercises/acronym/description.md +0 -0
  49. data/{common → problem-specifications}/exercises/acronym/metadata.yml +0 -0
  50. data/{common → problem-specifications}/exercises/all-your-base/canonical-data.json +0 -0
  51. data/{common → problem-specifications}/exercises/all-your-base/description.md +0 -0
  52. data/{common → problem-specifications}/exercises/all-your-base/metadata.yml +0 -0
  53. data/{common → problem-specifications}/exercises/allergies/canonical-data.json +0 -0
  54. data/{common → problem-specifications}/exercises/allergies/description.md +0 -0
  55. data/{common → problem-specifications}/exercises/allergies/metadata.yml +0 -0
  56. data/{common → problem-specifications}/exercises/alphametics/canonical-data.json +0 -0
  57. data/{common → problem-specifications}/exercises/alphametics/description.md +0 -0
  58. data/{common → problem-specifications}/exercises/alphametics/metadata.yml +0 -0
  59. data/{common → problem-specifications}/exercises/anagram/canonical-data.json +0 -0
  60. data/{common → problem-specifications}/exercises/anagram/description.md +0 -0
  61. data/{common → problem-specifications}/exercises/anagram/metadata.yml +0 -0
  62. data/{common → problem-specifications}/exercises/atbash-cipher/canonical-data.json +0 -0
  63. data/{common → problem-specifications}/exercises/atbash-cipher/description.md +0 -0
  64. data/{common → problem-specifications}/exercises/atbash-cipher/metadata.yml +0 -0
  65. data/{common → problem-specifications}/exercises/bank-account/description.md +0 -0
  66. data/{common → problem-specifications}/exercises/bank-account/metadata.yml +0 -0
  67. data/{common → problem-specifications}/exercises/beer-song/canonical-data.json +0 -0
  68. data/{common → problem-specifications}/exercises/beer-song/description.md +0 -0
  69. data/{common → problem-specifications}/exercises/beer-song/metadata.yml +0 -0
  70. data/{common → problem-specifications}/exercises/binary-search-tree/description.md +0 -0
  71. data/{common → problem-specifications}/exercises/binary-search-tree/metadata.yml +0 -0
  72. data/{common → problem-specifications}/exercises/binary-search/canonical-data.json +2 -2
  73. data/{common → problem-specifications}/exercises/binary-search/description.md +0 -0
  74. data/{common → problem-specifications}/exercises/binary-search/metadata.yml +0 -0
  75. data/{common → problem-specifications}/exercises/binary/.deprecated +1 -1
  76. data/{common → problem-specifications}/exercises/binary/canonical-data.json +0 -0
  77. data/{common → problem-specifications}/exercises/binary/description.md +0 -0
  78. data/{common → problem-specifications}/exercises/binary/metadata.yml +0 -0
  79. data/{common → problem-specifications}/exercises/bob/canonical-data.json +0 -0
  80. data/{common → problem-specifications}/exercises/bob/description.md +0 -0
  81. data/{common → problem-specifications}/exercises/bob/metadata.yml +0 -0
  82. data/{common → problem-specifications}/exercises/book-store/canonical-data.json +0 -0
  83. data/{common → problem-specifications}/exercises/book-store/description.md +0 -0
  84. data/{common → problem-specifications}/exercises/book-store/metadata.yml +0 -0
  85. data/{common → problem-specifications}/exercises/bowling/canonical-data.json +0 -0
  86. data/{common → problem-specifications}/exercises/bowling/description.md +0 -0
  87. data/{common → problem-specifications}/exercises/bowling/metadata.yml +0 -0
  88. data/{common → problem-specifications}/exercises/bracket-push/canonical-data.json +0 -0
  89. data/{common → problem-specifications}/exercises/bracket-push/description.md +0 -0
  90. data/{common → problem-specifications}/exercises/bracket-push/metadata.yml +0 -0
  91. data/{common → problem-specifications}/exercises/change/canonical-data.json +0 -0
  92. data/{common → problem-specifications}/exercises/change/description.md +0 -0
  93. data/{common → problem-specifications}/exercises/change/metadata.yml +0 -0
  94. data/{common → problem-specifications}/exercises/circular-buffer/canonical-data.json +0 -0
  95. data/{common → problem-specifications}/exercises/circular-buffer/description.md +0 -0
  96. data/{common → problem-specifications}/exercises/circular-buffer/metadata.yml +0 -0
  97. data/{common → problem-specifications}/exercises/clock/canonical-data.json +0 -0
  98. data/{common → problem-specifications}/exercises/clock/description.md +0 -0
  99. data/{common → problem-specifications}/exercises/clock/metadata.yml +0 -0
  100. data/{common → problem-specifications}/exercises/collatz-conjecture/canonical-data.json +2 -2
  101. data/{common → problem-specifications}/exercises/collatz-conjecture/description.md +0 -0
  102. data/{common → problem-specifications}/exercises/collatz-conjecture/metadata.yml +0 -0
  103. data/problem-specifications/exercises/complex-numbers/canonical-data.json +270 -0
  104. data/problem-specifications/exercises/complex-numbers/description.md +3 -0
  105. data/problem-specifications/exercises/complex-numbers/metadata.yml +4 -0
  106. data/{common → problem-specifications}/exercises/connect/canonical-data.json +0 -0
  107. data/{common → problem-specifications}/exercises/connect/description.md +0 -0
  108. data/{common → problem-specifications}/exercises/connect/metadata.yml +0 -0
  109. data/{common → problem-specifications}/exercises/counter/.deprecated +1 -1
  110. data/{common → problem-specifications}/exercises/counter/description.md +1 -1
  111. data/{common → problem-specifications}/exercises/counter/metadata.yml +0 -0
  112. data/{common → problem-specifications}/exercises/crypto-square/canonical-data.json +0 -0
  113. data/{common → problem-specifications}/exercises/crypto-square/description.md +0 -0
  114. data/{common → problem-specifications}/exercises/crypto-square/metadata.yml +0 -0
  115. data/{common → problem-specifications}/exercises/custom-set/canonical-data.json +0 -0
  116. data/{common → problem-specifications}/exercises/custom-set/description.md +0 -0
  117. data/{common → problem-specifications}/exercises/custom-set/metadata.yml +0 -0
  118. data/{common → problem-specifications}/exercises/diamond/canonical-data.json +0 -0
  119. data/{common → problem-specifications}/exercises/diamond/description.md +0 -0
  120. data/{common → problem-specifications}/exercises/diamond/metadata.yml +0 -0
  121. data/{common → problem-specifications}/exercises/difference-of-squares/canonical-data.json +0 -0
  122. data/{common → problem-specifications}/exercises/difference-of-squares/description.md +0 -0
  123. data/{common → problem-specifications}/exercises/difference-of-squares/metadata.yml +0 -0
  124. data/{common → problem-specifications}/exercises/diffie-hellman/description.md +0 -0
  125. data/{common → problem-specifications}/exercises/diffie-hellman/metadata.yml +0 -0
  126. data/{common → problem-specifications}/exercises/dominoes/canonical-data.json +0 -0
  127. data/{common → problem-specifications}/exercises/dominoes/description.md +0 -0
  128. data/{common → problem-specifications}/exercises/dominoes/metadata.yml +0 -0
  129. data/{common → problem-specifications}/exercises/dot-dsl/description.md +0 -0
  130. data/{common → problem-specifications}/exercises/dot-dsl/metadata.yml +0 -0
  131. data/{common → problem-specifications}/exercises/error-handling/description.md +0 -0
  132. data/{common → problem-specifications}/exercises/error-handling/metadata.yml +0 -0
  133. data/{common → problem-specifications}/exercises/etl/canonical-data.json +0 -0
  134. data/{common → problem-specifications}/exercises/etl/description.md +0 -0
  135. data/{common → problem-specifications}/exercises/etl/metadata.yml +0 -0
  136. data/{common → problem-specifications}/exercises/flatten-array/canonical-data.json +0 -0
  137. data/{common → problem-specifications}/exercises/flatten-array/description.md +0 -0
  138. data/{common → problem-specifications}/exercises/flatten-array/metadata.yml +0 -0
  139. data/{common → problem-specifications}/exercises/food-chain/canonical-data.json +0 -0
  140. data/{common → problem-specifications}/exercises/food-chain/description.md +0 -0
  141. data/{common → problem-specifications}/exercises/food-chain/metadata.yml +0 -0
  142. data/{common → problem-specifications}/exercises/forth/canonical-data.json +10 -1
  143. data/{common → problem-specifications}/exercises/forth/description.md +0 -0
  144. data/{common → problem-specifications}/exercises/forth/metadata.yml +0 -0
  145. data/{common → problem-specifications}/exercises/gigasecond/canonical-data.json +0 -0
  146. data/{common → problem-specifications}/exercises/gigasecond/description.md +0 -0
  147. data/{common → problem-specifications}/exercises/gigasecond/metadata.yml +0 -0
  148. data/{common → problem-specifications}/exercises/go-counting/description.md +0 -0
  149. data/{common → problem-specifications}/exercises/go-counting/metadata.yml +0 -0
  150. data/{common → problem-specifications}/exercises/grade-school/description.md +0 -0
  151. data/{common → problem-specifications}/exercises/grade-school/metadata.yml +0 -0
  152. data/{common → problem-specifications}/exercises/grains/canonical-data.json +0 -0
  153. data/{common → problem-specifications}/exercises/grains/description.md +0 -0
  154. data/{common → problem-specifications}/exercises/grains/metadata.yml +0 -0
  155. data/{common → problem-specifications}/exercises/grep/canonical-data.json +0 -0
  156. data/{common → problem-specifications}/exercises/grep/description.md +0 -0
  157. data/{common → problem-specifications}/exercises/grep/metadata.yml +0 -0
  158. data/{common → problem-specifications}/exercises/hamming/canonical-data.json +8 -8
  159. data/{common → problem-specifications}/exercises/hamming/description.md +0 -0
  160. data/{common → problem-specifications}/exercises/hamming/metadata.yml +0 -0
  161. data/{common → problem-specifications}/exercises/hangman/description.md +0 -0
  162. data/{common → problem-specifications}/exercises/hangman/metadata.yml +0 -0
  163. data/{common → problem-specifications}/exercises/hello-world/canonical-data.json +0 -0
  164. data/{common → problem-specifications}/exercises/hello-world/description.md +0 -0
  165. data/{common → problem-specifications}/exercises/hello-world/metadata.yml +0 -0
  166. data/{common/exercises/octal → problem-specifications/exercises/hexadecimal}/.deprecated +1 -1
  167. data/{common → problem-specifications}/exercises/hexadecimal/description.md +0 -0
  168. data/{common → problem-specifications}/exercises/hexadecimal/metadata.yml +0 -0
  169. data/{common → problem-specifications}/exercises/house/description.md +0 -0
  170. data/{common → problem-specifications}/exercises/house/metadata.yml +0 -0
  171. data/{common → problem-specifications}/exercises/isogram/canonical-data.json +0 -0
  172. data/{common → problem-specifications}/exercises/isogram/description.md +0 -0
  173. data/{common → problem-specifications}/exercises/isogram/metadata.yml +0 -0
  174. data/{common → problem-specifications}/exercises/kindergarten-garden/canonical-data.json +0 -0
  175. data/{common → problem-specifications}/exercises/kindergarten-garden/description.md +0 -0
  176. data/{common → problem-specifications}/exercises/kindergarten-garden/metadata.yml +0 -0
  177. data/{common → problem-specifications}/exercises/largest-series-product/canonical-data.json +0 -0
  178. data/{common → problem-specifications}/exercises/largest-series-product/description.md +0 -0
  179. data/{common → problem-specifications}/exercises/largest-series-product/metadata.yml +0 -0
  180. data/{common → problem-specifications}/exercises/leap/canonical-data.json +0 -0
  181. data/{common → problem-specifications}/exercises/leap/description.md +0 -0
  182. data/{common → problem-specifications}/exercises/leap/metadata.yml +0 -0
  183. data/{common → problem-specifications}/exercises/ledger/description.md +0 -0
  184. data/{common → problem-specifications}/exercises/ledger/metadata.yml +0 -0
  185. data/{common → problem-specifications}/exercises/lens-person/description.md +0 -0
  186. data/{common → problem-specifications}/exercises/lens-person/metadata.yml +0 -0
  187. data/{common → problem-specifications}/exercises/linked-list/description.md +0 -0
  188. data/{common → problem-specifications}/exercises/linked-list/metadata.yml +0 -0
  189. data/{common → problem-specifications}/exercises/list-ops/canonical-data.json +0 -0
  190. data/{common → problem-specifications}/exercises/list-ops/description.md +0 -0
  191. data/{common → problem-specifications}/exercises/list-ops/metadata.yml +0 -0
  192. data/{common → problem-specifications}/exercises/luhn/canonical-data.json +0 -0
  193. data/{common → problem-specifications}/exercises/luhn/description.md +0 -0
  194. data/{common → problem-specifications}/exercises/luhn/metadata.yml +0 -0
  195. data/{common → problem-specifications}/exercises/markdown/canonical-data.json +0 -0
  196. data/{common → problem-specifications}/exercises/markdown/description.md +0 -0
  197. data/{common → problem-specifications}/exercises/markdown/metadata.yml +0 -0
  198. data/{common → problem-specifications}/exercises/matrix/description.md +0 -0
  199. data/{common → problem-specifications}/exercises/matrix/metadata.yml +0 -0
  200. data/{common → problem-specifications}/exercises/meetup/canonical-data.json +0 -0
  201. data/{common → problem-specifications}/exercises/meetup/description.md +0 -0
  202. data/{common → problem-specifications}/exercises/meetup/metadata.yml +0 -0
  203. data/{common → problem-specifications}/exercises/minesweeper/canonical-data.json +0 -0
  204. data/{common → problem-specifications}/exercises/minesweeper/description.md +0 -0
  205. data/{common → problem-specifications}/exercises/minesweeper/metadata.yml +0 -0
  206. data/{common → problem-specifications}/exercises/nth-prime/canonical-data.json +0 -0
  207. data/{common → problem-specifications}/exercises/nth-prime/description.md +0 -0
  208. data/{common → problem-specifications}/exercises/nth-prime/metadata.yml +0 -0
  209. data/{common → problem-specifications}/exercises/nucleotide-codons/.deprecated +1 -1
  210. data/{common → problem-specifications}/exercises/nucleotide-codons/description.md +0 -0
  211. data/{common → problem-specifications}/exercises/nucleotide-codons/metadata.yml +0 -0
  212. data/{common → problem-specifications}/exercises/nucleotide-count/canonical-data.json +0 -0
  213. data/{common → problem-specifications}/exercises/nucleotide-count/description.md +0 -0
  214. data/{common → problem-specifications}/exercises/nucleotide-count/metadata.yml +0 -0
  215. data/{common → problem-specifications}/exercises/ocr-numbers/canonical-data.json +0 -0
  216. data/{common → problem-specifications}/exercises/ocr-numbers/description.md +0 -0
  217. data/{common → problem-specifications}/exercises/ocr-numbers/metadata.yml +0 -0
  218. data/{common/exercises/hexadecimal → problem-specifications/exercises/octal}/.deprecated +1 -1
  219. data/{common → problem-specifications}/exercises/octal/description.md +0 -0
  220. data/{common → problem-specifications}/exercises/octal/metadata.yml +0 -0
  221. data/{common → problem-specifications}/exercises/paasio/description.md +0 -0
  222. data/{common → problem-specifications}/exercises/paasio/metadata.yml +0 -0
  223. data/{common → problem-specifications}/exercises/palindrome-products/description.md +0 -0
  224. data/{common → problem-specifications}/exercises/palindrome-products/metadata.yml +0 -0
  225. data/{common → problem-specifications}/exercises/pangram/canonical-data.json +2 -2
  226. data/{common → problem-specifications}/exercises/pangram/description.md +2 -2
  227. data/{common → problem-specifications}/exercises/pangram/metadata.yml +0 -0
  228. data/{common → problem-specifications}/exercises/parallel-letter-frequency/description.md +0 -0
  229. data/{common → problem-specifications}/exercises/parallel-letter-frequency/metadata.yml +0 -0
  230. data/{common → problem-specifications}/exercises/pascals-triangle/canonical-data.json +0 -0
  231. data/{common → problem-specifications}/exercises/pascals-triangle/description.md +0 -0
  232. data/{common → problem-specifications}/exercises/pascals-triangle/metadata.yml +0 -0
  233. data/{common → problem-specifications}/exercises/perfect-numbers/canonical-data.json +0 -0
  234. data/{common → problem-specifications}/exercises/perfect-numbers/description.md +0 -0
  235. data/{common → problem-specifications}/exercises/perfect-numbers/metadata.yml +0 -0
  236. data/{common → problem-specifications}/exercises/phone-number/canonical-data.json +0 -0
  237. data/{common → problem-specifications}/exercises/phone-number/description.md +12 -10
  238. data/{common → problem-specifications}/exercises/phone-number/metadata.yml +0 -0
  239. data/{common → problem-specifications}/exercises/pig-latin/canonical-data.json +0 -0
  240. data/{common → problem-specifications}/exercises/pig-latin/description.md +0 -0
  241. data/{common → problem-specifications}/exercises/pig-latin/metadata.yml +0 -0
  242. data/{common → problem-specifications}/exercises/point-mutations/.deprecated +1 -1
  243. data/{common → problem-specifications}/exercises/point-mutations/description.md +0 -0
  244. data/{common → problem-specifications}/exercises/point-mutations/metadata.yml +0 -0
  245. data/{common → problem-specifications}/exercises/poker/canonical-data.json +0 -0
  246. data/{common → problem-specifications}/exercises/poker/description.md +0 -0
  247. data/{common → problem-specifications}/exercises/poker/metadata.yml +0 -0
  248. data/{common → problem-specifications}/exercises/pov/canonical-data.json +0 -0
  249. data/{common → problem-specifications}/exercises/pov/description.md +0 -0
  250. data/{common → problem-specifications}/exercises/pov/metadata.yml +0 -0
  251. data/{common → problem-specifications}/exercises/prime-factors/canonical-data.json +0 -0
  252. data/{common → problem-specifications}/exercises/prime-factors/description.md +0 -0
  253. data/{common → problem-specifications}/exercises/prime-factors/metadata.yml +0 -0
  254. data/{common → problem-specifications}/exercises/protein-translation/description.md +0 -0
  255. data/{common → problem-specifications}/exercises/protein-translation/metadata.yml +0 -0
  256. data/{common → problem-specifications}/exercises/proverb/description.md +0 -0
  257. data/{common → problem-specifications}/exercises/proverb/metadata.yml +0 -0
  258. data/{common → problem-specifications}/exercises/pythagorean-triplet/description.md +0 -0
  259. data/{common → problem-specifications}/exercises/pythagorean-triplet/metadata.yml +0 -0
  260. data/{common → problem-specifications}/exercises/queen-attack/canonical-data.json +0 -0
  261. data/{common → problem-specifications}/exercises/queen-attack/description.md +0 -0
  262. data/{common → problem-specifications}/exercises/queen-attack/metadata.yml +0 -0
  263. data/{common → problem-specifications}/exercises/rail-fence-cipher/canonical-data.json +0 -0
  264. data/{common → problem-specifications}/exercises/rail-fence-cipher/description.md +0 -0
  265. data/{common → problem-specifications}/exercises/rail-fence-cipher/metadata.yml +0 -0
  266. data/{common → problem-specifications}/exercises/raindrops/canonical-data.json +0 -0
  267. data/{common → problem-specifications}/exercises/raindrops/description.md +0 -0
  268. data/{common → problem-specifications}/exercises/raindrops/metadata.yml +0 -0
  269. data/{common → problem-specifications}/exercises/react/canonical-data.json +0 -0
  270. data/{common → problem-specifications}/exercises/react/description.md +0 -0
  271. data/{common → problem-specifications}/exercises/react/metadata.yml +0 -0
  272. data/{common → problem-specifications}/exercises/rectangles/canonical-data.json +0 -0
  273. data/{common → problem-specifications}/exercises/rectangles/description.md +0 -0
  274. data/{common → problem-specifications}/exercises/rectangles/metadata.yml +0 -0
  275. data/{common → problem-specifications}/exercises/rna-transcription/canonical-data.json +0 -0
  276. data/{common → problem-specifications}/exercises/rna-transcription/description.md +0 -0
  277. data/{common → problem-specifications}/exercises/rna-transcription/metadata.yml +0 -0
  278. data/{common → problem-specifications}/exercises/robot-name/description.md +0 -0
  279. data/{common → problem-specifications}/exercises/robot-name/metadata.yml +0 -0
  280. data/{common → problem-specifications}/exercises/robot-simulator/canonical-data.json +0 -0
  281. data/{common → problem-specifications}/exercises/robot-simulator/description.md +0 -0
  282. data/{common → problem-specifications}/exercises/robot-simulator/metadata.yml +0 -0
  283. data/{common → problem-specifications}/exercises/roman-numerals/canonical-data.json +0 -0
  284. data/{common → problem-specifications}/exercises/roman-numerals/description.md +0 -0
  285. data/{common → problem-specifications}/exercises/roman-numerals/metadata.yml +0 -0
  286. data/{common → problem-specifications}/exercises/rotational-cipher/canonical-data.json +0 -0
  287. data/{common → problem-specifications}/exercises/rotational-cipher/description.md +0 -0
  288. data/{common → problem-specifications}/exercises/rotational-cipher/metadata.yml +0 -0
  289. data/{common → problem-specifications}/exercises/run-length-encoding/canonical-data.json +0 -0
  290. data/{common → problem-specifications}/exercises/run-length-encoding/description.md +0 -0
  291. data/{common → problem-specifications}/exercises/run-length-encoding/metadata.yml +0 -0
  292. data/{common → problem-specifications}/exercises/saddle-points/canonical-data.json +0 -0
  293. data/{common → problem-specifications}/exercises/saddle-points/description.md +0 -0
  294. data/{common → problem-specifications}/exercises/saddle-points/metadata.yml +0 -0
  295. data/{common → problem-specifications}/exercises/say/canonical-data.json +0 -0
  296. data/{common → problem-specifications}/exercises/say/description.md +0 -0
  297. data/{common → problem-specifications}/exercises/say/metadata.yml +0 -0
  298. data/{common → problem-specifications}/exercises/scale-generator/description.md +0 -0
  299. data/{common → problem-specifications}/exercises/scale-generator/metadata.yml +0 -0
  300. data/{common → problem-specifications}/exercises/scrabble-score/canonical-data.json +0 -0
  301. data/{common → problem-specifications}/exercises/scrabble-score/description.md +0 -0
  302. data/{common → problem-specifications}/exercises/scrabble-score/metadata.yml +0 -0
  303. data/{common → problem-specifications}/exercises/secret-handshake/canonical-data.json +2 -2
  304. data/{common → problem-specifications}/exercises/secret-handshake/description.md +0 -0
  305. data/{common → problem-specifications}/exercises/secret-handshake/metadata.yml +0 -0
  306. data/{common → problem-specifications}/exercises/series/description.md +0 -0
  307. data/{common → problem-specifications}/exercises/series/metadata.yml +0 -0
  308. data/{common → problem-specifications}/exercises/sgf-parsing/description.md +0 -0
  309. data/{common → problem-specifications}/exercises/sgf-parsing/metadata.yml +0 -0
  310. data/{common → problem-specifications}/exercises/sieve/canonical-data.json +0 -0
  311. data/{common → problem-specifications}/exercises/sieve/description.md +0 -0
  312. data/{common → problem-specifications}/exercises/sieve/metadata.yml +0 -0
  313. data/{common → problem-specifications}/exercises/simple-cipher/description.md +0 -0
  314. data/{common → problem-specifications}/exercises/simple-cipher/metadata.yml +0 -0
  315. data/{common → problem-specifications}/exercises/simple-linked-list/description.md +0 -0
  316. data/{common → problem-specifications}/exercises/simple-linked-list/metadata.yml +0 -0
  317. data/{common → problem-specifications}/exercises/space-age/canonical-data.json +0 -0
  318. data/{common → problem-specifications}/exercises/space-age/description.md +0 -0
  319. data/{common → problem-specifications}/exercises/space-age/metadata.yml +0 -0
  320. data/problem-specifications/exercises/spiral-matrix/canonical-data.json +52 -0
  321. data/problem-specifications/exercises/spiral-matrix/description.md +22 -0
  322. data/problem-specifications/exercises/spiral-matrix/metadata.yml +4 -0
  323. data/{common → problem-specifications}/exercises/strain/description.md +0 -0
  324. data/{common → problem-specifications}/exercises/strain/metadata.yml +0 -0
  325. data/{common → problem-specifications}/exercises/sublist/canonical-data.json +0 -0
  326. data/{common → problem-specifications}/exercises/sublist/description.md +0 -0
  327. data/{common → problem-specifications}/exercises/sublist/metadata.yml +0 -0
  328. data/{common → problem-specifications}/exercises/sum-of-multiples/canonical-data.json +0 -0
  329. data/{common → problem-specifications}/exercises/sum-of-multiples/description.md +0 -0
  330. data/{common → problem-specifications}/exercises/sum-of-multiples/metadata.yml +0 -0
  331. data/{common → problem-specifications}/exercises/tournament/canonical-data.json +0 -0
  332. data/{common → problem-specifications}/exercises/tournament/description.md +0 -0
  333. data/{common → problem-specifications}/exercises/tournament/metadata.yml +0 -0
  334. data/{common → problem-specifications}/exercises/transpose/canonical-data.json +0 -0
  335. data/{common → problem-specifications}/exercises/transpose/description.md +0 -0
  336. data/{common → problem-specifications}/exercises/transpose/metadata.yml +0 -0
  337. data/{common → problem-specifications}/exercises/tree-building/description.md +0 -0
  338. data/{common → problem-specifications}/exercises/tree-building/metadata.yml +0 -0
  339. data/{common → problem-specifications}/exercises/triangle/canonical-data.json +1 -1
  340. data/{common → problem-specifications}/exercises/triangle/description.md +0 -0
  341. data/{common → problem-specifications}/exercises/triangle/metadata.yml +0 -0
  342. data/{common → problem-specifications}/exercises/trinary/.deprecated +1 -1
  343. data/{common → problem-specifications}/exercises/trinary/canonical-data.json +0 -0
  344. data/{common → problem-specifications}/exercises/trinary/description.md +0 -0
  345. data/{common → problem-specifications}/exercises/trinary/metadata.yml +0 -0
  346. data/{common → problem-specifications}/exercises/twelve-days/description.md +0 -0
  347. data/{common → problem-specifications}/exercises/twelve-days/metadata.yml +0 -0
  348. data/{common → problem-specifications}/exercises/two-bucket/canonical-data.json +0 -0
  349. data/{common → problem-specifications}/exercises/two-bucket/description.md +0 -0
  350. data/{common → problem-specifications}/exercises/two-bucket/metadata.yml +0 -0
  351. data/{common → problem-specifications}/exercises/two-fer/canonical-data.json +0 -0
  352. data/{common → problem-specifications}/exercises/two-fer/description.md +0 -0
  353. data/{common → problem-specifications}/exercises/two-fer/metadata.yml +0 -0
  354. data/{common → problem-specifications}/exercises/variable-length-quantity/canonical-data.json +0 -0
  355. data/{common → problem-specifications}/exercises/variable-length-quantity/description.md +0 -0
  356. data/{common → problem-specifications}/exercises/variable-length-quantity/metadata.yml +0 -0
  357. data/{common → problem-specifications}/exercises/word-count/canonical-data.json +0 -0
  358. data/{common → problem-specifications}/exercises/word-count/description.md +0 -0
  359. data/{common → problem-specifications}/exercises/word-count/metadata.yml +0 -0
  360. data/{common → problem-specifications}/exercises/word-search/canonical-data.json +0 -0
  361. data/{common → problem-specifications}/exercises/word-search/description.md +0 -0
  362. data/{common → problem-specifications}/exercises/word-search/metadata.yml +0 -0
  363. data/{common → problem-specifications}/exercises/wordy/canonical-data.json +0 -0
  364. data/{common → problem-specifications}/exercises/wordy/description.md +0 -0
  365. data/{common → problem-specifications}/exercises/wordy/metadata.yml +0 -0
  366. data/{common → problem-specifications}/exercises/zebra-puzzle/description.md +0 -0
  367. data/{common → problem-specifications}/exercises/zebra-puzzle/metadata.yml +0 -0
  368. data/{common → problem-specifications}/exercises/zipper/description.md +0 -0
  369. data/{common → problem-specifications}/exercises/zipper/metadata.yml +0 -0
  370. data/{common → problem-specifications}/package.json +2 -2
  371. data/{common → problem-specifications}/yarn.lock +0 -0
  372. data/trackler.gemspec +1 -1
  373. data/tracks/bash/config.json +7 -0
  374. data/tracks/bash/exercises/pangram/example.sh +7 -0
  375. data/tracks/bash/exercises/pangram/pangram_tests.sh +47 -0
  376. data/tracks/c/config.json +19 -0
  377. data/tracks/c/exercises/acronym/makefile +15 -0
  378. data/tracks/c/exercises/acronym/src/example.c +44 -0
  379. data/tracks/c/exercises/acronym/src/example.h +6 -0
  380. data/tracks/c/exercises/acronym/test/test_acronym.c +68 -0
  381. data/tracks/c/exercises/acronym/test/vendor/unity.c +1300 -0
  382. data/tracks/c/exercises/acronym/test/vendor/unity.h +274 -0
  383. data/tracks/c/exercises/acronym/test/vendor/unity_internals.h +701 -0
  384. data/tracks/c/exercises/isogram/makefile +15 -0
  385. data/tracks/c/exercises/isogram/src/example.c +26 -0
  386. data/tracks/c/exercises/isogram/src/example.h +8 -0
  387. data/tracks/c/exercises/isogram/test/test_isogram.c +66 -0
  388. data/tracks/c/exercises/isogram/test/vendor/unity.c +1300 -0
  389. data/tracks/c/exercises/isogram/test/vendor/unity.h +274 -0
  390. data/tracks/c/exercises/isogram/test/vendor/unity_internals.h +701 -0
  391. data/tracks/{dartlang → chapel}/.gitignore +0 -0
  392. data/tracks/{dartlang → chapel}/.travis.yml +0 -0
  393. data/tracks/{dartlang → chapel}/LICENSE +0 -0
  394. data/tracks/chapel/README.md +11 -0
  395. data/tracks/{dartlang → chapel}/bin/fetch-configlet +0 -0
  396. data/tracks/{dartlang → chapel}/config.json +3 -3
  397. data/tracks/{dartlang → chapel}/docs/ABOUT.md +0 -0
  398. data/tracks/{dartlang → chapel}/docs/EXERCISE_README_INSERT.md +0 -0
  399. data/tracks/{dartlang → chapel}/docs/INSTALLATION.md +0 -0
  400. data/tracks/{dartlang → chapel}/docs/LEARNING.md +0 -0
  401. data/tracks/{dartlang → chapel}/docs/RESOURCES.md +0 -0
  402. data/tracks/{dartlang → chapel}/docs/TESTS.md +0 -0
  403. data/tracks/{dartlang/img → chapel/exercises}/.keep +0 -0
  404. data/tracks/chapel/img/.keep +0 -0
  405. data/tracks/clojurescript/README.md +1 -1
  406. data/tracks/clojurescript/config.json +1 -1
  407. data/tracks/coffeescript/config.json +1 -1
  408. data/tracks/coldfusion/config.json +1 -1
  409. data/tracks/coq/README.md +1 -1
  410. data/tracks/coq/config.json +1 -1
  411. data/tracks/coq/docs/EXERCISE_README_INSERT.md +1 -1
  412. data/tracks/cpp/CMakeLists.txt +1 -0
  413. data/tracks/cpp/config.json +8 -0
  414. data/tracks/cpp/exercises/allergies/CMakeLists.txt +52 -0
  415. data/tracks/cpp/exercises/allergies/allergies_test.cpp +148 -0
  416. data/tracks/cpp/exercises/allergies/example.cpp +30 -0
  417. data/tracks/cpp/exercises/allergies/example.h +36 -0
  418. data/tracks/csharp/build.ps1 +2 -2
  419. data/tracks/csharp/build.sh +2 -2
  420. data/tracks/csharp/exercises/all-your-base/AllYourBase.cs +1 -1
  421. data/tracks/csharp/exercises/all-your-base/AllYourBaseTest.cs +103 -102
  422. data/tracks/csharp/exercises/all-your-base/Example.cs +1 -1
  423. data/tracks/csharp/exercises/beer-song/BeerSongTest.cs +322 -322
  424. data/tracks/csharp/exercises/bob/BobTest.cs +2 -0
  425. data/tracks/csharp/exercises/book-store/BookStore.cs +1 -1
  426. data/tracks/csharp/exercises/book-store/BookStoreTest.cs +42 -28
  427. data/tracks/csharp/exercises/book-store/Example.cs +5 -5
  428. data/tracks/csharp/exercises/food-chain/FoodChainTest.cs +96 -96
  429. data/tracks/csharp/exercises/nth-prime/NthPrimeTest.cs +1 -2
  430. data/tracks/csharp/exercises/perfect-numbers/PerfectNumbersTest.cs +2 -3
  431. data/tracks/csharp/exercises/transpose/Example.cs +14 -14
  432. data/tracks/csharp/exercises/transpose/TransposeTest.cs +34 -44
  433. data/tracks/csharp/exercises/wordy/WordyTest.cs +2 -3
  434. data/tracks/csharp/generators/Exercise.cs +23 -0
  435. data/tracks/csharp/generators/ExerciseCollection.cs +33 -0
  436. data/tracks/csharp/generators/Exercises/Acronym.cs +6 -0
  437. data/tracks/csharp/generators/Exercises/AllYourBase.cs +22 -0
  438. data/tracks/csharp/generators/Exercises/AtbashCipher.cs +6 -0
  439. data/tracks/csharp/generators/Exercises/BeerSong.cs +11 -0
  440. data/tracks/csharp/generators/Exercises/Bob.cs +2 -16
  441. data/tracks/csharp/generators/Exercises/BookStore.cs +16 -0
  442. data/tracks/csharp/generators/Exercises/FoodChain.cs +16 -0
  443. data/tracks/csharp/generators/Exercises/HelloWorld.cs +6 -0
  444. data/tracks/csharp/generators/Exercises/Isogram.cs +6 -0
  445. data/tracks/csharp/generators/Exercises/Leap.cs +11 -0
  446. data/tracks/csharp/generators/Exercises/Luhn.cs +11 -0
  447. data/tracks/csharp/generators/Exercises/NthPrime.cs +13 -0
  448. data/tracks/csharp/generators/Exercises/PerfectNumbers.cs +21 -0
  449. data/tracks/csharp/generators/Exercises/PigLatin.cs +6 -0
  450. data/tracks/csharp/generators/Exercises/Raindrops.cs +6 -0
  451. data/tracks/csharp/generators/Exercises/RomanNumerals.cs +15 -0
  452. data/tracks/csharp/generators/Exercises/RotationalCipher.cs +6 -0
  453. data/tracks/csharp/generators/Exercises/Transpose.cs +19 -0
  454. data/tracks/csharp/generators/Exercises/Wordy.cs +13 -0
  455. data/tracks/csharp/generators/Generators.csproj +8 -2
  456. data/tracks/csharp/generators/{Data → Input}/CanonicalData.cs +1 -3
  457. data/tracks/csharp/generators/Input/CanonicalDataCase.cs +37 -0
  458. data/tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs +43 -0
  459. data/tracks/csharp/generators/{Data → Input}/CanonicalDataCasesJsonConverter.cs +6 -11
  460. data/tracks/csharp/generators/{Data → Input}/CanonicalDataParser.cs +1 -1
  461. data/tracks/csharp/generators/Output/BooleanTestMethodGenerator.cs +13 -0
  462. data/tracks/csharp/generators/Output/EqualityTestMethodGenerator.cs +10 -0
  463. data/tracks/csharp/generators/Output/ExceptionTestMethodGenerator.cs +12 -0
  464. data/tracks/csharp/generators/Output/NameExtensions.cs +35 -0
  465. data/tracks/csharp/generators/Output/TestClass.cs +12 -0
  466. data/tracks/csharp/generators/Output/TestClass.liquid +20 -0
  467. data/tracks/csharp/generators/Output/TestClassFile.cs +22 -0
  468. data/tracks/csharp/generators/Output/TestClassGenerator.cs +30 -0
  469. data/tracks/csharp/generators/Output/TestClassRenderer.cs +26 -0
  470. data/tracks/csharp/generators/Output/TestMethod.cs +10 -0
  471. data/tracks/csharp/generators/Output/TestMethodGenerator.cs +95 -0
  472. data/tracks/csharp/generators/Output/UnescapedValue.cs +11 -0
  473. data/tracks/csharp/generators/Output/ValueFormatter.cs +100 -0
  474. data/tracks/csharp/generators/Program.cs +10 -42
  475. data/tracks/csharp/generators/Properties/launchSettings.json +7 -0
  476. data/tracks/csharp/generators/{Methods/TestedMethodType.cs → TestedMethodType.cs} +1 -1
  477. data/tracks/{dlang → d}/.gitignore +0 -0
  478. data/tracks/{dlang → d}/.travis.yml +0 -0
  479. data/tracks/{dlang → d}/LICENSE +0 -0
  480. data/tracks/{dlang → d}/README.md +1 -1
  481. data/tracks/{dlang → d}/bin/fetch-configlet +0 -0
  482. data/tracks/{dlang → d}/bin/test-all-exercises +0 -0
  483. data/tracks/{dlang → d}/bin/test-exercise +0 -0
  484. data/tracks/{dlang → d}/config.json +2 -2
  485. data/tracks/{dlang → d}/docs/ABOUT.md +0 -0
  486. data/tracks/{dlang → d}/docs/EXERCISE_README_INSERT.md +0 -0
  487. data/tracks/{dlang → d}/docs/INSTALLATION.md +0 -0
  488. data/tracks/{dlang → d}/docs/LEARNING.md +0 -0
  489. data/tracks/{dlang → d}/docs/RESOURCES.md +0 -0
  490. data/tracks/{dlang → d}/docs/TESTS.md +0 -0
  491. data/tracks/{dlang → d}/exercises/bob/dub.sdl +0 -0
  492. data/tracks/{dlang → d}/exercises/bob/example/bob.d +0 -0
  493. data/tracks/{dlang → d}/exercises/bob/source/bob.d +0 -0
  494. data/tracks/{dlang → d}/exercises/circular-buffer/dub.sdl +0 -0
  495. data/tracks/{dlang → d}/exercises/circular-buffer/example/circular_buffer.d +1 -1
  496. data/tracks/{dlang → d}/exercises/circular-buffer/source/circular_buffer.d +2 -2
  497. data/tracks/{dlang → d}/exercises/crypto-square/dub.sdl +0 -0
  498. data/tracks/{dlang → d}/exercises/crypto-square/example/crypto_square.d +0 -0
  499. data/tracks/{dlang → d}/exercises/crypto-square/source/crypto_square.d +0 -0
  500. data/tracks/{dlang → d}/exercises/difference-of-squares/dub.sdl +0 -0
  501. data/tracks/{dlang → d}/exercises/difference-of-squares/example/difference_of_squares.d +0 -0
  502. data/tracks/{dlang → d}/exercises/difference-of-squares/source/difference_of_squares.d +0 -0
  503. data/tracks/{dlang → d}/exercises/etl/dub.sdl +0 -0
  504. data/tracks/{dlang → d}/exercises/etl/example/etl.d +2 -1
  505. data/tracks/{dlang → d}/exercises/etl/source/etl.d +0 -0
  506. data/tracks/{dlang → d}/exercises/gigasecond/dub.sdl +0 -0
  507. data/tracks/{dlang → d}/exercises/gigasecond/example/gigasecond.d +0 -0
  508. data/tracks/{dlang → d}/exercises/gigasecond/source/gigasecond.d +0 -0
  509. data/tracks/{dlang → d}/exercises/hamming/dub.sdl +0 -0
  510. data/tracks/{dlang → d}/exercises/hamming/example/hamming.d +2 -1
  511. data/tracks/{dlang → d}/exercises/hamming/source/hamming.d +2 -0
  512. data/tracks/{dlang → d}/exercises/hello-world/dub.sdl +0 -0
  513. data/tracks/{dlang → d}/exercises/hello-world/example/hello_world.d +0 -0
  514. data/tracks/{dlang → d}/exercises/hello-world/source/hello_world.d +0 -0
  515. data/tracks/{dlang → d}/exercises/leap/dub.sdl +0 -0
  516. data/tracks/{dlang → d}/exercises/leap/example/leap.d +0 -0
  517. data/tracks/{dlang → d}/exercises/leap/source/leap.d +0 -0
  518. data/tracks/{dlang → d}/exercises/nucleotide-count/dub.sdl +0 -0
  519. data/tracks/{dlang → d}/exercises/nucleotide-count/example/nucleotide_count.d +2 -1
  520. data/tracks/{dlang → d}/exercises/nucleotide-count/source/nucleotide_count.d +2 -0
  521. data/tracks/{dlang → d}/exercises/pangram/dub.sdl +0 -0
  522. data/tracks/{dlang → d}/exercises/pangram/example/pangram.d +0 -0
  523. data/tracks/{dlang → d}/exercises/pangram/source/pangram.d +0 -0
  524. data/tracks/{dlang → d}/exercises/raindrops/dub.sdl +0 -0
  525. data/tracks/{dlang → d}/exercises/raindrops/example/raindrops.d +0 -0
  526. data/tracks/{dlang → d}/exercises/raindrops/source/raindrops.d +0 -0
  527. data/tracks/{dlang → d}/exercises/react/dub.sdl +0 -0
  528. data/tracks/{dlang → d}/exercises/react/example/react.d +0 -0
  529. data/tracks/{dlang → d}/exercises/react/source/react.d +0 -0
  530. data/tracks/{dlang → d}/exercises/rna-transcription/dub.sdl +0 -0
  531. data/tracks/{dlang → d}/exercises/rna-transcription/example/rna_transcription.d +4 -1
  532. data/tracks/{dlang → d}/exercises/rna-transcription/source/rna_transcription.d +1 -1
  533. data/tracks/{dlang → d}/exercises/robot-name/dub.sdl +0 -0
  534. data/tracks/{dlang → d}/exercises/robot-name/example/robot_name.d +0 -0
  535. data/tracks/{dlang → d}/exercises/robot-name/source/robot_name.d +0 -0
  536. data/tracks/{dlang → d}/exercises/roman-numerals/dub.sdl +0 -0
  537. data/tracks/{dlang → d}/exercises/roman-numerals/example/roman_numerals.d +0 -0
  538. data/tracks/{dlang → d}/exercises/roman-numerals/source/roman_numerals.d +0 -0
  539. data/tracks/{dlang → d}/exercises/series/dub.sdl +0 -0
  540. data/tracks/{dlang → d}/exercises/series/example/series.d +1 -1
  541. data/tracks/{dlang → d}/exercises/series/source/series.d +1 -1
  542. data/tracks/{dlang → d}/exercises/triangle/dub.sdl +0 -0
  543. data/tracks/{dlang → d}/exercises/triangle/example/triangle.d +1 -2
  544. data/tracks/{dlang → d}/exercises/triangle/source/triangle.d +1 -3
  545. data/tracks/{dlang → d}/img/icon.png +0 -0
  546. data/tracks/{dartlang → dart}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  547. data/tracks/dart/.gitignore +24 -0
  548. data/tracks/dart/.travis.yml +27 -0
  549. data/tracks/dart/LICENSE +21 -0
  550. data/tracks/{dartlang → dart}/README.md +1 -1
  551. data/tracks/dart/analysis_options.yaml +7 -0
  552. data/tracks/dart/bin/fetch-configlet +32 -0
  553. data/tracks/dart/config.json +79 -0
  554. data/tracks/dart/docs/ABOUT.md +0 -0
  555. data/tracks/dart/docs/EXERCISE_README_INSERT.md +0 -0
  556. data/tracks/dart/docs/INSTALLATION.md +0 -0
  557. data/tracks/dart/docs/LEARNING.md +0 -0
  558. data/tracks/dart/docs/RESOURCES.md +0 -0
  559. data/tracks/dart/docs/TESTS.md +0 -0
  560. data/tracks/dart/exercises/bob/lib/bob.dart +3 -0
  561. data/tracks/dart/exercises/bob/lib/example.dart +17 -0
  562. data/tracks/dart/exercises/bob/pubspec.lock +281 -0
  563. data/tracks/dart/exercises/bob/pubspec.yaml +3 -0
  564. data/tracks/dart/exercises/bob/test/bob_test.dart +118 -0
  565. data/tracks/dart/exercises/difference-of-squares/lib/difference_of_squares.dart +3 -0
  566. data/tracks/dart/exercises/difference-of-squares/lib/example.dart +13 -0
  567. data/tracks/dart/exercises/difference-of-squares/pubspec.lock +281 -0
  568. data/tracks/dart/exercises/difference-of-squares/pubspec.yaml +3 -0
  569. data/tracks/dart/exercises/difference-of-squares/test/difference_of_squares_test.dart +50 -0
  570. data/tracks/dart/exercises/gigasecond/lib/example.dart +7 -0
  571. data/tracks/dart/exercises/gigasecond/lib/gigasecond.dart +3 -0
  572. data/tracks/dart/exercises/gigasecond/pubspec.lock +281 -0
  573. data/tracks/dart/exercises/gigasecond/pubspec.yaml +3 -0
  574. data/tracks/dart/exercises/gigasecond/test/gigasecond_test.dart +39 -0
  575. data/tracks/dart/exercises/hamming/lib/example.dart +17 -0
  576. data/tracks/dart/exercises/hamming/lib/hamming.dart +3 -0
  577. data/tracks/dart/exercises/hamming/pubspec.lock +281 -0
  578. data/tracks/dart/exercises/hamming/pubspec.yaml +3 -0
  579. data/tracks/dart/exercises/hamming/test/hamming_test.dart +54 -0
  580. data/tracks/dart/exercises/hello-world/lib/example.dart +3 -0
  581. data/tracks/dart/exercises/hello-world/lib/hello_world.dart +5 -0
  582. data/tracks/dart/exercises/hello-world/pubspec.lock +281 -0
  583. data/tracks/dart/exercises/hello-world/pubspec.yaml +3 -0
  584. data/tracks/dart/exercises/hello-world/test/hello_world_test.dart +24 -0
  585. data/tracks/dart/exercises/leap/lib/example.dart +13 -0
  586. data/tracks/dart/exercises/leap/lib/leap.dart +3 -0
  587. data/tracks/dart/exercises/leap/pubspec.lock +281 -0
  588. data/tracks/dart/exercises/leap/pubspec.yaml +3 -0
  589. data/tracks/dart/exercises/leap/test/leap_test.dart +30 -0
  590. data/tracks/dart/exercises/rna-transcription/lib/example.dart +18 -0
  591. data/tracks/dart/exercises/rna-transcription/lib/rna_transcription.dart +3 -0
  592. data/tracks/dart/exercises/rna-transcription/pubspec.lock +281 -0
  593. data/tracks/dart/exercises/rna-transcription/pubspec.yaml +3 -0
  594. data/tracks/dart/exercises/rna-transcription/test/rna_transcription_test.dart +48 -0
  595. data/tracks/dart/img/.keep +0 -0
  596. data/tracks/dart/img/icon.png +0 -0
  597. data/tracks/dart/img/icon.svg +37 -0
  598. data/tracks/dart/pubspec.lock +287 -0
  599. data/tracks/dart/pubspec.yaml +8 -0
  600. data/tracks/dart/test/exercises_test.dart +90 -0
  601. data/tracks/dart/tool/create-exercise +124 -0
  602. data/tracks/delphi/README.md +1 -1
  603. data/tracks/delphi/exercises/bank-account/uBankAccountTests.pas +12 -10
  604. data/tracks/delphi/exercises/hamming/uHammingExample.pas +5 -5
  605. data/tracks/delphi/exercises/hamming/uHammingTests.pas +46 -48
  606. data/tracks/ecmascript/.babelrc +3 -0
  607. data/tracks/ecmascript/config.json +25 -1
  608. data/tracks/ecmascript/exercises/accumulate/package.json +59 -11
  609. data/tracks/ecmascript/exercises/acronym/package.json +59 -11
  610. data/tracks/ecmascript/exercises/all-your-base/package.json +59 -11
  611. data/tracks/ecmascript/exercises/allergies/package.json +59 -11
  612. data/tracks/ecmascript/exercises/alphametics/alphametics.spec.js +95 -0
  613. data/tracks/ecmascript/exercises/alphametics/example.js +99 -0
  614. data/tracks/ecmascript/exercises/alphametics/package.json +122 -0
  615. data/tracks/ecmascript/exercises/anagram/package.json +59 -11
  616. data/tracks/ecmascript/exercises/atbash-cipher/package.json +59 -11
  617. data/tracks/ecmascript/exercises/beer-song/package.json +59 -11
  618. data/tracks/ecmascript/exercises/binary-search-tree/package.json +59 -11
  619. data/tracks/ecmascript/exercises/binary-search/package.json +59 -11
  620. data/tracks/ecmascript/exercises/binary/package.json +59 -11
  621. data/tracks/ecmascript/exercises/bob/package.json +59 -11
  622. data/tracks/ecmascript/exercises/bracket-push/package.json +59 -11
  623. data/tracks/ecmascript/exercises/circular-buffer/package.json +59 -11
  624. data/tracks/ecmascript/exercises/clock/package.json +59 -11
  625. data/tracks/ecmascript/exercises/connect/package.json +59 -11
  626. data/tracks/ecmascript/exercises/crypto-square/package.json +59 -11
  627. data/tracks/ecmascript/exercises/custom-set/package.json +59 -11
  628. data/tracks/ecmascript/exercises/diamond/package.json +59 -11
  629. data/tracks/ecmascript/exercises/difference-of-squares/package.json +59 -11
  630. data/tracks/ecmascript/exercises/etl/package.json +59 -11
  631. data/tracks/ecmascript/exercises/flatten-array/example.js +11 -0
  632. data/tracks/ecmascript/exercises/flatten-array/flatten-array.spec.js +41 -0
  633. data/tracks/ecmascript/exercises/flatten-array/package.json +74 -0
  634. data/tracks/ecmascript/exercises/food-chain/package.json +59 -11
  635. data/tracks/ecmascript/exercises/gigasecond/package.json +59 -11
  636. data/tracks/ecmascript/exercises/grade-school/package.json +59 -11
  637. data/tracks/ecmascript/exercises/grains/package.json +59 -11
  638. data/tracks/ecmascript/exercises/hamming/package.json +59 -11
  639. data/tracks/ecmascript/exercises/hello-world/package.json +59 -11
  640. data/tracks/ecmascript/exercises/hexadecimal/package.json +59 -11
  641. data/tracks/ecmascript/exercises/isogram/package.json +59 -11
  642. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +59 -11
  643. data/tracks/ecmascript/exercises/largest-series-product/package.json +59 -11
  644. data/tracks/ecmascript/exercises/leap/package.json +59 -11
  645. data/tracks/ecmascript/exercises/linked-list/package.json +59 -11
  646. data/tracks/ecmascript/exercises/list-ops/example.js +77 -0
  647. data/tracks/ecmascript/exercises/list-ops/list-ops.spec.js +133 -0
  648. data/tracks/ecmascript/exercises/list-ops/package.json +74 -0
  649. data/tracks/ecmascript/exercises/luhn/package.json +59 -11
  650. data/tracks/ecmascript/exercises/matrix/package.json +59 -11
  651. data/tracks/ecmascript/exercises/meetup/package.json +59 -11
  652. data/tracks/ecmascript/exercises/nth-prime/package.json +59 -11
  653. data/tracks/ecmascript/exercises/ocr-numbers/package.json +59 -11
  654. data/tracks/ecmascript/exercises/octal/package.json +59 -11
  655. data/tracks/ecmascript/exercises/package.json +6 -8
  656. data/tracks/ecmascript/exercises/palindrome-products/package.json +59 -11
  657. data/tracks/ecmascript/exercises/pangram/package.json +59 -11
  658. data/tracks/ecmascript/exercises/pascals-triangle/package.json +59 -11
  659. data/tracks/ecmascript/exercises/perfect-numbers/package.json +59 -11
  660. data/tracks/ecmascript/exercises/phone-number/package.json +59 -11
  661. data/tracks/ecmascript/exercises/pig-latin/package.json +59 -11
  662. data/tracks/ecmascript/exercises/prime-factors/package.json +59 -11
  663. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +59 -11
  664. data/tracks/ecmascript/exercises/queen-attack/package.json +59 -11
  665. data/tracks/ecmascript/exercises/raindrops/package.json +59 -11
  666. data/tracks/ecmascript/exercises/rna-transcription/package.json +59 -11
  667. data/tracks/ecmascript/exercises/robot-name/package.json +59 -11
  668. data/tracks/ecmascript/exercises/robot-simulator/package.json +59 -11
  669. data/tracks/ecmascript/exercises/roman-numerals/package.json +59 -11
  670. data/tracks/ecmascript/exercises/saddle-points/package.json +59 -11
  671. data/tracks/ecmascript/exercises/say/package.json +59 -11
  672. data/tracks/ecmascript/exercises/scrabble-score/package.json +59 -11
  673. data/tracks/ecmascript/exercises/secret-handshake/package.json +59 -11
  674. data/tracks/ecmascript/exercises/series/package.json +59 -11
  675. data/tracks/ecmascript/exercises/sieve/package.json +59 -11
  676. data/tracks/ecmascript/exercises/simple-cipher/package.json +59 -11
  677. data/tracks/ecmascript/exercises/space-age/package.json +59 -11
  678. data/tracks/ecmascript/exercises/strain/package.json +59 -11
  679. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +59 -11
  680. data/tracks/ecmascript/exercises/triangle/package.json +59 -11
  681. data/tracks/ecmascript/exercises/trinary/package.json +59 -11
  682. data/tracks/ecmascript/exercises/two-bucket/package.json +59 -11
  683. data/tracks/ecmascript/exercises/word-count/package.json +59 -11
  684. data/tracks/ecmascript/exercises/wordy/package.json +59 -11
  685. data/tracks/ecmascript/package-lock.json +2835 -0
  686. data/tracks/ecmascript/package.json +59 -11
  687. data/tracks/elixir/config.json +7 -0
  688. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture.exs +12 -0
  689. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture_test.exs +54 -0
  690. data/tracks/elixir/exercises/collatz-conjecture/example.exs +20 -0
  691. data/tracks/erlang/.github/stale.yml +2 -0
  692. data/tracks/erlang/exercises/rna-transcription/test/rna_transcription_tests.erl +3 -3
  693. data/tracks/factor/docs/INSTALLATION.md +27 -18
  694. data/tracks/factor/docs/TESTS.md +10 -6
  695. data/tracks/fortran/README.md +1 -1
  696. data/tracks/fortran/config.json +1 -1
  697. data/tracks/go/exercises/clock/.meta/gen.go +58 -65
  698. data/tracks/go/exercises/clock/cases_test.go +0 -4
  699. data/tracks/go/gen/gen.go +4 -0
  700. data/tracks/go/gen/property.go +70 -0
  701. data/tracks/groovy/README.md +1 -1
  702. data/tracks/groovy/config.json +2 -4
  703. data/tracks/groovy/exercises/roman-numerals/Example.groovy +10 -10
  704. data/tracks/groovy/exercises/roman-numerals/Roman.groovy +33 -0
  705. data/tracks/groovy/exercises/roman-numerals/RomanSpec.groovy +35 -0
  706. data/tracks/haskell/bin/test-example +7 -3
  707. data/tracks/haskell/bin/test-stub +5 -1
  708. data/tracks/haskell/config.json +6 -0
  709. data/tracks/haskell/exercises/pangram/package.yaml +1 -1
  710. data/tracks/haskell/exercises/pangram/test/Tests.hs +1 -1
  711. data/tracks/haskell/exercises/simple-linked-list/test/Tests.hs +4 -4
  712. data/tracks/haskell/exercises/spiral-matrix/examples/success-standard/package.yaml +16 -0
  713. data/tracks/haskell/exercises/spiral-matrix/examples/success-standard/src/Spiral.hs +17 -0
  714. data/tracks/haskell/exercises/spiral-matrix/package.yaml +20 -0
  715. data/tracks/haskell/exercises/spiral-matrix/src/Spiral.hs +4 -0
  716. data/tracks/haskell/exercises/spiral-matrix/stack.yaml +1 -0
  717. data/tracks/haskell/exercises/spiral-matrix/test/Tests.hs +40 -0
  718. data/tracks/haxe/README.md +1 -1
  719. data/tracks/haxe/config.json +1 -1
  720. data/tracks/java/CONTRIBUTING.md +8 -0
  721. data/tracks/java/POLICIES.md +2 -2
  722. data/tracks/java/README.md +9 -9
  723. data/tracks/java/config.json +40 -5
  724. data/tracks/java/docs/ABOUT.md +1 -1
  725. data/tracks/java/docs/MAINTAINING.md +1 -1
  726. data/tracks/java/exercises/bank-account/HINTS.md +11 -0
  727. data/tracks/java/exercises/bank-account/build.gradle +18 -0
  728. data/tracks/java/exercises/bank-account/src/example/java/BankAccount.java +53 -0
  729. data/tracks/java/exercises/bank-account/src/example/java/BankAccountActionInvalidException.java +6 -0
  730. data/tracks/java/exercises/bank-account/src/main/java/BankAccountActionInvalidException.java +6 -0
  731. data/tracks/java/exercises/bank-account/src/test/java/BankAccountTest.java +201 -0
  732. data/tracks/java/exercises/clock/{HINT.md → HINTS.md} +0 -0
  733. data/tracks/java/exercises/food-chain/build.gradle +17 -0
  734. data/tracks/java/exercises/food-chain/src/example/java/FoodChain.java +77 -0
  735. data/tracks/java/exercises/food-chain/src/main/java/.keep +0 -0
  736. data/tracks/java/exercises/food-chain/src/test/java/FoodChainTest.java +204 -0
  737. data/tracks/java/exercises/hamming/src/test/java/HammingTest.java +68 -26
  738. data/tracks/java/exercises/hello-world/HINTS.md +4 -0
  739. data/tracks/java/exercises/hello-world/TUTORIAL.md +111 -395
  740. data/tracks/java/exercises/hello-world/src/example/java/Greeter.java +7 -0
  741. data/tracks/java/exercises/hello-world/src/main/java/{HelloWorld.java → Greeter.java} +4 -2
  742. data/tracks/java/exercises/hello-world/src/test/java/GreeterTest.java +12 -0
  743. data/tracks/java/exercises/isogram/{HINT.md → HINTS.md} +0 -0
  744. data/tracks/java/exercises/kindergarten-garden/src/test/java/KindergartenGardenTest.java +4 -4
  745. data/tracks/java/exercises/minesweeper/src/example/java/MinesweeperBoard.java +5 -41
  746. data/tracks/java/exercises/minesweeper/src/test/java/MinesweeperBoardTest.java +39 -90
  747. data/tracks/java/exercises/palindrome-products/src/test/java/PalindromeCalculatorTest.java +3 -1
  748. data/tracks/java/exercises/pangram/src/test/java/PangramCheckerTest.java +8 -18
  749. data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +0 -1
  750. data/tracks/java/exercises/poker/build.gradle +18 -0
  751. data/tracks/java/exercises/poker/src/example/java/Card.java +25 -0
  752. data/tracks/java/exercises/poker/src/example/java/Hand.java +104 -0
  753. data/tracks/java/exercises/poker/src/example/java/Poker.java +27 -0
  754. data/tracks/java/exercises/poker/src/main/java/Poker.java +2 -0
  755. data/tracks/java/exercises/poker/src/test/java/PokerTest.java +164 -0
  756. data/tracks/java/exercises/settings.gradle +5 -0
  757. data/tracks/java/exercises/simple-cipher/{HINT.md → HINTS.md} +0 -0
  758. data/tracks/java/exercises/transpose/build.gradle +17 -0
  759. data/tracks/java/exercises/transpose/src/example/java/Transpose.java +41 -0
  760. data/tracks/java/exercises/transpose/src/main/java/.keep +0 -0
  761. data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +264 -0
  762. data/tracks/java/exercises/two-fer/HINTS.md +38 -0
  763. data/tracks/java/exercises/two-fer/build.gradle +17 -0
  764. data/tracks/java/exercises/two-fer/src/example/java/Twofer.java +5 -0
  765. data/tracks/java/exercises/two-fer/src/main/java/Twofer.java +5 -0
  766. data/tracks/java/exercises/two-fer/src/test/java/TwoferTest.java +41 -0
  767. data/tracks/javascript/config.json +9 -0
  768. data/tracks/javascript/exercises/hello-world/HINTS.md +10 -27
  769. data/tracks/javascript/exercises/hello-world/hello-world.js +1 -1
  770. data/tracks/javascript/exercises/hello-world/hello-world.spec.js +2 -10
  771. data/tracks/javascript/exercises/phone-number/example.js +2 -2
  772. data/tracks/javascript/exercises/phone-number/phone-number.spec.js +51 -46
  773. data/tracks/javascript/exercises/simple-linked-list/example.js +119 -0
  774. data/tracks/javascript/exercises/simple-linked-list/simple-linked-list.spec.js +160 -0
  775. data/tracks/julia/config.json +11 -0
  776. data/tracks/julia/exercises/complex-numbers/HINTS.md +11 -0
  777. data/tracks/julia/exercises/complex-numbers/complex-numbers.jl +0 -0
  778. data/tracks/julia/exercises/complex-numbers/example.jl +41 -0
  779. data/tracks/julia/exercises/complex-numbers/runtests.jl +74 -0
  780. data/tracks/kotlin/README.md +8 -8
  781. data/tracks/kotlin/bin/journey-test.sh +1 -1
  782. data/tracks/kotlin/exercises/allergies/src/example/kotlin/Allergen.kt +1 -0
  783. data/tracks/kotlin/exercises/hamming/src/test/kotlin/HammingTest.kt +64 -14
  784. data/tracks/kotlin/exercises/hello-world/TUTORIAL.md +1 -2
  785. data/tracks/kotlin/exercises/pangram/src/test/kotlin/PangramTest.kt +5 -9
  786. data/tracks/kotlin/exercises/phone-number/src/example/kotlin/PhoneNumber.kt +1 -1
  787. data/tracks/kotlin/exercises/phone-number/src/test/kotlin/PhoneNumberTest.kt +21 -13
  788. data/tracks/kotlin/exercises/rna-transcription/src/test/kotlin/RnaTranscriptionTest.kt +15 -18
  789. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.jar +0 -0
  790. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.properties +2 -2
  791. data/tracks/nasm/config.json +1 -1
  792. data/tracks/nim/README.md +2 -2
  793. data/tracks/nim/config.json +1 -1
  794. data/tracks/ocaml/exercises/all-your-base/test.ml +8 -8
  795. data/tracks/ocaml/exercises/bowling/test.ml +14 -15
  796. data/tracks/ocaml/exercises/hamming/test.ml +3 -3
  797. data/tracks/ocaml/tools/test-generator/templates/ocaml/bowling/test.ml +1 -1
  798. data/tracks/perl5/.travis.yml +1 -1
  799. data/tracks/perl5/README.md +1 -1
  800. data/tracks/perl5/bin/README.md +35 -0
  801. data/tracks/perl5/bin/cpanfile +4 -0
  802. data/tracks/perl5/bin/exercise-gen.pl +60 -0
  803. data/tracks/perl5/config.json +7 -0
  804. data/tracks/perl5/docs/INSTALLATION.md +23 -3
  805. data/tracks/perl5/exercises/bob/Bob.pm +4 -17
  806. data/tracks/perl5/exercises/bob/Example.pm +10 -11
  807. data/tracks/perl5/exercises/bob/bob.t +198 -51
  808. data/tracks/perl5/exercises/bob/example.yaml +41 -0
  809. data/tracks/perl5/exercises/hello-world/Example.pm +10 -0
  810. data/tracks/perl5/exercises/hello-world/HelloWorld.pm +10 -0
  811. data/tracks/perl5/exercises/hello-world/example.yaml +33 -0
  812. data/tracks/perl5/exercises/hello-world/hello-world.t +64 -0
  813. data/tracks/perl5/exercises/leap/Example.pm +9 -8
  814. data/tracks/perl5/exercises/leap/Leap.pm +11 -0
  815. data/tracks/perl5/exercises/leap/example.yaml +41 -0
  816. data/tracks/perl5/exercises/leap/leap.t +74 -17
  817. data/tracks/perl5/templates/module.mustache +8 -0
  818. data/tracks/perl5/templates/test.mustache +58 -0
  819. data/tracks/perl6/.travis.yml +1 -1
  820. data/tracks/perl6/README.md +1 -1
  821. data/tracks/perl6/bin/README.md +3 -3
  822. data/tracks/perl6/bin/exercise-gen.pl6 +2 -2
  823. data/tracks/perl6/exercises/all-your-base/all-your-base.t +6 -4
  824. data/tracks/perl6/exercises/allergies/allergies.t +6 -4
  825. data/tracks/perl6/exercises/anagram/anagram.t +6 -4
  826. data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +6 -4
  827. data/tracks/perl6/exercises/bob/bob.t +6 -4
  828. data/tracks/perl6/exercises/clock/clock.t +6 -4
  829. data/tracks/perl6/exercises/flatten-array/flatten-array.t +6 -4
  830. data/tracks/perl6/exercises/grains/grains.t +6 -4
  831. data/tracks/perl6/exercises/hello-world/hello-world.t +6 -4
  832. data/tracks/perl6/exercises/leap/leap.t +6 -4
  833. data/tracks/perl6/exercises/luhn/luhn.t +6 -4
  834. data/tracks/perl6/exercises/phone-number/phone-number.t +6 -4
  835. data/tracks/perl6/exercises/raindrops/raindrops.t +6 -4
  836. data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +15 -13
  837. data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +6 -4
  838. data/tracks/perl6/exercises/space-age/space-age.t +6 -4
  839. data/tracks/perl6/exercises/word-count/word-count.t +6 -4
  840. data/tracks/perl6/exercises/wordy/wordy.t +6 -4
  841. data/tracks/perl6/templates/test.mustache +8 -7
  842. data/tracks/plsql/config.json +1 -1
  843. data/tracks/prolog/README.md +6 -6
  844. data/tracks/prolog/config.json +1 -1
  845. data/tracks/r/bin/run_tests.R +18 -10
  846. data/tracks/r/exercises/anagram/test_anagram.R +1 -1
  847. data/tracks/r/exercises/bob/test_bob.R +1 -1
  848. data/tracks/r/exercises/difference-of-squares/test_difference-of-squares.R +1 -1
  849. data/tracks/r/exercises/grains/test_grains.R +1 -1
  850. data/tracks/r/exercises/hamming/test_hamming.R +1 -1
  851. data/tracks/r/exercises/hello-world/test_hello-world.R +1 -1
  852. data/tracks/r/exercises/isogram/test_isogram.R +1 -1
  853. data/tracks/r/exercises/largest-series-product/test_largest-series-product.R +1 -1
  854. data/tracks/r/exercises/leap/test_leap.R +1 -1
  855. data/tracks/r/exercises/luhn/test_luhn.R +1 -1
  856. data/tracks/r/exercises/pascals-triangle/test_pascals-triangle.R +1 -1
  857. data/tracks/r/exercises/perfect-numbers/example.R +17 -1
  858. data/tracks/r/exercises/perfect-numbers/test_perfect-numbers.R +50 -33
  859. data/tracks/r/exercises/phone-number/test_phone-number.R +1 -1
  860. data/tracks/r/exercises/prime-factors/test_prime-factors.R +1 -1
  861. data/tracks/r/exercises/raindrops/test_raindrops.R +1 -1
  862. data/tracks/r/exercises/rna-transcription/test_rna-transcription.R +9 -9
  863. data/tracks/r/exercises/rotational-cipher/test_rotational-cipher.R +1 -1
  864. data/tracks/r/exercises/scrabble-score/test_scrabble-score.R +1 -1
  865. data/tracks/r/exercises/secret-handshake/test_secret-handshake.R +1 -1
  866. data/tracks/r/exercises/sieve/test_sieve.R +1 -1
  867. data/tracks/r/exercises/space-age/test_space-age.R +1 -1
  868. data/tracks/r/exercises/sum-of-multiples/test_sum-of-multiples.R +1 -1
  869. data/tracks/r/exercises/tournament/test_tournament.R +1 -1
  870. data/tracks/r/exercises/word-count/test_word-count.R +1 -1
  871. data/tracks/ruby/README.md +9 -9
  872. data/tracks/ruby/config.json +12 -0
  873. data/tracks/ruby/exercises/collatz-conjecture/.meta/.version +1 -0
  874. data/tracks/ruby/exercises/collatz-conjecture/.meta/generator/collatz_conjecture_case.rb +31 -0
  875. data/tracks/ruby/exercises/collatz-conjecture/.meta/solutions/collatz_conjecture.rb +22 -0
  876. data/tracks/ruby/exercises/collatz-conjecture/collatz_conjecture_test.rb +58 -0
  877. data/tracks/ruby/lib/generator/command_line.rb +6 -7
  878. data/tracks/ruby/lib/generator/command_line/generator_optparser.rb +2 -2
  879. data/tracks/ruby/lib/generator/files/metadata_files.rb +3 -3
  880. data/tracks/ruby/lib/generator/files/track_files.rb +22 -3
  881. data/tracks/ruby/lib/generator/implementation.rb +7 -5
  882. data/tracks/ruby/lib/generator/repository.rb +12 -0
  883. data/tracks/ruby/lib/generator/template_values.rb +1 -1
  884. data/tracks/ruby/lib/helper.rb +1 -1
  885. data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +2 -2
  886. data/tracks/ruby/test/generator/command_line_test.rb +2 -2
  887. data/tracks/ruby/test/generator/files/metadata_files_test.rb +2 -2
  888. data/tracks/ruby/test/generator/files/track_files_test.rb +9 -4
  889. data/tracks/ruby/test/generator/implementation_test.rb +11 -4
  890. data/tracks/ruby/test/generator/repository_test.rb +10 -0
  891. data/tracks/ruby/test/generator/template_values_test.rb +2 -4
  892. data/tracks/rust/exercises/bob/Cargo.toml +1 -1
  893. data/tracks/rust/exercises/bob/example.rs +4 -3
  894. data/tracks/rust/exercises/bob/tests/bob.rs +110 -9
  895. data/tracks/scala/config.json +0 -1
  896. data/tracks/scala/exercises/anagram/example.scala +7 -7
  897. data/tracks/scala/exercises/anagram/src/test/scala/AnagramTest.scala +73 -46
  898. data/tracks/scala/exercises/etl/example.scala +1 -1
  899. data/tracks/scala/exercises/etl/src/test/scala/EtlTest.scala +20 -34
  900. data/tracks/scala/exercises/grains/src/test/scala/GrainsTest.scala +21 -14
  901. data/tracks/scala/exercises/secret-handshake/example.scala +3 -3
  902. data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +28 -29
  903. data/tracks/scala/exercises/sieve/example.scala +1 -1
  904. data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +25 -23
  905. data/tracks/scala/exercises/triangle/example.scala +6 -22
  906. data/tracks/scala/exercises/triangle/src/test/scala/TriangleTest.scala +66 -19
  907. data/tracks/scala/testgen/src/main/scala/AnagramTestGenerator.scala +15 -0
  908. data/tracks/scala/testgen/src/main/scala/EtlTestGenerator.scala +52 -0
  909. data/tracks/scala/testgen/src/main/scala/GrainsTestGenerator.scala +50 -0
  910. data/tracks/scala/testgen/src/main/scala/SecretHandshakeTestGenerator.scala +15 -0
  911. data/tracks/scala/testgen/src/main/scala/SieveTestGenerator.scala +15 -0
  912. data/tracks/scala/testgen/src/main/scala/TriangleTestGenerator.scala +37 -0
  913. data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +3 -0
  914. data/tracks/scheme/README.org +2 -2
  915. data/tracks/scheme/config.json +1 -1
  916. data/tracks/smalltalk/.gitignore +4 -0
  917. data/tracks/smalltalk/.travis.yml +5 -0
  918. data/tracks/smalltalk/LICENSE +21 -0
  919. data/tracks/smalltalk/README.md +11 -0
  920. data/tracks/smalltalk/bin/fetch-configlet +32 -0
  921. data/tracks/smalltalk/config.json +16 -0
  922. data/tracks/smalltalk/docs/ABOUT.md +0 -0
  923. data/tracks/smalltalk/docs/EXERCISE_README_INSERT.md +0 -0
  924. data/tracks/smalltalk/docs/INSTALLATION.md +0 -0
  925. data/tracks/smalltalk/docs/LEARNING.md +0 -0
  926. data/tracks/smalltalk/docs/RESOURCES.md +0 -0
  927. data/tracks/smalltalk/docs/TESTS.md +0 -0
  928. data/tracks/smalltalk/exercises/.keep +0 -0
  929. data/tracks/smalltalk/img/.keep +0 -0
  930. data/tracks/sml/config.json +1 -8
  931. data/tracks/tcl/README.md +1 -1
  932. data/tracks/tcl/config.json +1 -1
  933. data/tracks/teco/config.json +1 -1
  934. data/tracks/typescript/Makefile +1 -1
  935. data/tracks/typescript/appveyor.yml +18 -0
  936. data/tracks/typescript/common/package.json +7 -7
  937. data/tracks/typescript/common/tsconfig.json +1 -0
  938. data/tracks/typescript/common/yarn.lock +718 -1152
  939. data/tracks/typescript/config.json +45 -42
  940. data/tracks/typescript/exercises/anagram/package.json +7 -7
  941. data/tracks/typescript/exercises/anagram/tsconfig.json +1 -0
  942. data/tracks/typescript/exercises/anagram/yarn.lock +718 -1152
  943. data/tracks/typescript/exercises/beer-song/package.json +7 -7
  944. data/tracks/typescript/exercises/beer-song/tsconfig.json +1 -0
  945. data/tracks/typescript/exercises/beer-song/yarn.lock +718 -1152
  946. data/tracks/typescript/exercises/bob/package.json +7 -7
  947. data/tracks/typescript/exercises/bob/tsconfig.json +1 -0
  948. data/tracks/typescript/exercises/bob/yarn.lock +718 -1152
  949. data/tracks/typescript/exercises/difference-of-squares/package.json +7 -7
  950. data/tracks/typescript/exercises/difference-of-squares/tsconfig.json +1 -0
  951. data/tracks/typescript/exercises/difference-of-squares/yarn.lock +718 -1152
  952. data/tracks/typescript/exercises/etl/package.json +7 -7
  953. data/tracks/typescript/exercises/etl/tsconfig.json +1 -0
  954. data/tracks/typescript/exercises/etl/yarn.lock +718 -1152
  955. data/tracks/typescript/exercises/food-chain/package.json +7 -7
  956. data/tracks/typescript/exercises/food-chain/tsconfig.json +1 -0
  957. data/tracks/typescript/exercises/food-chain/yarn.lock +718 -1152
  958. data/tracks/typescript/exercises/gigasecond/package.json +7 -7
  959. data/tracks/typescript/exercises/gigasecond/tsconfig.json +1 -0
  960. data/tracks/typescript/exercises/gigasecond/yarn.lock +718 -1152
  961. data/tracks/typescript/exercises/grade-school/package.json +7 -7
  962. data/tracks/typescript/exercises/grade-school/tsconfig.json +1 -0
  963. data/tracks/typescript/exercises/grade-school/yarn.lock +718 -1152
  964. data/tracks/typescript/exercises/hamming/package.json +7 -7
  965. data/tracks/typescript/exercises/hamming/tsconfig.json +1 -0
  966. data/tracks/typescript/exercises/hamming/yarn.lock +718 -1152
  967. data/tracks/typescript/exercises/hello-world/package.json +7 -7
  968. data/tracks/typescript/exercises/hello-world/tsconfig.json +1 -0
  969. data/tracks/typescript/exercises/hello-world/yarn.lock +718 -1152
  970. data/tracks/typescript/exercises/leap/package.json +7 -7
  971. data/tracks/typescript/exercises/leap/tsconfig.json +1 -0
  972. data/tracks/typescript/exercises/leap/yarn.lock +718 -1152
  973. data/tracks/typescript/exercises/pangram/package.json +7 -7
  974. data/tracks/typescript/exercises/pangram/tsconfig.json +1 -0
  975. data/tracks/typescript/exercises/pangram/yarn.lock +718 -1152
  976. data/tracks/typescript/exercises/phone-number/package.json +7 -7
  977. data/tracks/typescript/exercises/phone-number/tsconfig.json +1 -0
  978. data/tracks/typescript/exercises/phone-number/yarn.lock +718 -1152
  979. data/tracks/typescript/exercises/raindrops/package.json +7 -7
  980. data/tracks/typescript/exercises/raindrops/tsconfig.json +1 -0
  981. data/tracks/typescript/exercises/raindrops/yarn.lock +718 -1152
  982. data/tracks/typescript/exercises/rna-transcription/package.json +7 -7
  983. data/tracks/typescript/exercises/rna-transcription/tsconfig.json +1 -0
  984. data/tracks/typescript/exercises/rna-transcription/yarn.lock +718 -1152
  985. data/tracks/typescript/exercises/robot-name/package.json +7 -7
  986. data/tracks/typescript/exercises/robot-name/robot-name.test.ts +0 -5
  987. data/tracks/typescript/exercises/robot-name/tsconfig.json +1 -0
  988. data/tracks/typescript/exercises/robot-name/yarn.lock +718 -1152
  989. data/tracks/typescript/exercises/say/package.json +7 -7
  990. data/tracks/typescript/exercises/say/tsconfig.json +1 -0
  991. data/tracks/typescript/exercises/say/yarn.lock +718 -1152
  992. data/tracks/typescript/exercises/scrabble-score/package.json +7 -7
  993. data/tracks/typescript/exercises/scrabble-score/scrabble-score.example.ts +1 -1
  994. data/tracks/typescript/exercises/scrabble-score/tsconfig.json +1 -0
  995. data/tracks/typescript/exercises/scrabble-score/yarn.lock +718 -1152
  996. data/tracks/typescript/exercises/space-age/package.json +7 -7
  997. data/tracks/typescript/exercises/space-age/tsconfig.json +1 -0
  998. data/tracks/typescript/exercises/space-age/yarn.lock +718 -1152
  999. data/tracks/typescript/exercises/word-count/package.json +7 -7
  1000. data/tracks/typescript/exercises/word-count/tsconfig.json +1 -0
  1001. data/tracks/typescript/exercises/word-count/yarn.lock +718 -1152
  1002. data/tracks/typescript/exercises/wordy/package.json +7 -7
  1003. data/tracks/typescript/exercises/wordy/tsconfig.json +1 -0
  1004. data/tracks/typescript/exercises/wordy/yarn.lock +718 -1152
  1005. data/tracks/vimscript/exercises/rna-transcription/example.vim +1 -1
  1006. data/tracks/vimscript/exercises/rna-transcription/rna_transcription.vader +40 -16
  1007. data/tracks/vimscript/exercises/rna-transcription/rna_transcription.vim +2 -4
  1008. metadata +670 -497
  1009. data/fixtures/tracks/animal/exercises/fish/included-via-symlink.txt +0 -1
  1010. data/tracks/csharp/generators/Classes/TestClass.cs +0 -15
  1011. data/tracks/csharp/generators/Classes/TestClassNameTransformer.cs +0 -9
  1012. data/tracks/csharp/generators/Classes/TestClassRenderer.cs +0 -40
  1013. data/tracks/csharp/generators/Classes/TestedClassNameTransformer.cs +0 -9
  1014. data/tracks/csharp/generators/Data/CanonicalDataCase.cs +0 -24
  1015. data/tracks/csharp/generators/Data/CanonicalDataCaseJsonConverter.cs +0 -32
  1016. data/tracks/csharp/generators/Data/CanonicalDataValue.cs +0 -24
  1017. data/tracks/csharp/generators/Data/ExerciseCollection.cs +0 -23
  1018. data/tracks/csharp/generators/Exercises/AcronymExercise.cs +0 -20
  1019. data/tracks/csharp/generators/Exercises/AtbashCipherExercise.cs +0 -20
  1020. data/tracks/csharp/generators/Exercises/BeerSongExercise.cs +0 -33
  1021. data/tracks/csharp/generators/Exercises/BooleanExercise.cs +0 -14
  1022. data/tracks/csharp/generators/Exercises/EqualityExercise.cs +0 -19
  1023. data/tracks/csharp/generators/Exercises/Exercise.cs +0 -81
  1024. data/tracks/csharp/generators/Exercises/FoodChainExercise.cs +0 -27
  1025. data/tracks/csharp/generators/Exercises/HelloWorldExercise.cs +0 -9
  1026. data/tracks/csharp/generators/Exercises/IsogramExercise.cs +0 -9
  1027. data/tracks/csharp/generators/Exercises/LeapExercise.cs +0 -9
  1028. data/tracks/csharp/generators/Exercises/LuhnExercise.cs +0 -9
  1029. data/tracks/csharp/generators/Exercises/NthPrimeExercise.cs +0 -22
  1030. data/tracks/csharp/generators/Exercises/PerfectNumbersExercise.cs +0 -29
  1031. data/tracks/csharp/generators/Exercises/PigLatinExercise.cs +0 -9
  1032. data/tracks/csharp/generators/Exercises/RaindropsExercise.cs +0 -20
  1033. data/tracks/csharp/generators/Exercises/RomanNumeralsExercise.cs +0 -30
  1034. data/tracks/csharp/generators/Exercises/RotationalCipherExercise.cs +0 -23
  1035. data/tracks/csharp/generators/Exercises/WordyExercise.cs +0 -20
  1036. data/tracks/csharp/generators/Helpers/StringExtensions.cs +0 -8
  1037. data/tracks/csharp/generators/Helpers/To.cs +0 -13
  1038. data/tracks/csharp/generators/Methods/BooleanTestMethodGenerator.cs +0 -32
  1039. data/tracks/csharp/generators/Methods/EqualityTestMethodGenerator.cs +0 -49
  1040. data/tracks/csharp/generators/Methods/ExceptionTestMethodGenerator.cs +0 -30
  1041. data/tracks/csharp/generators/Methods/TestMethod.cs +0 -12
  1042. data/tracks/csharp/generators/Methods/TestMethodData.cs +0 -12
  1043. data/tracks/csharp/generators/Methods/TestMethodGenerator.cs +0 -80
  1044. data/tracks/csharp/generators/Methods/TestMethodNameTransformer.cs +0 -23
  1045. data/tracks/csharp/generators/Methods/TestMethodOptions.cs +0 -15
  1046. data/tracks/csharp/generators/Methods/TestMethodRenderer.cs +0 -26
  1047. data/tracks/csharp/generators/Methods/TestedMethodNameTransformer.cs +0 -9
  1048. data/tracks/groovy/exercises/roman-numerals/RomanTest.groovy +0 -96
  1049. data/tracks/java/exercises/hello-world/GETTING_STARTED.md +0 -54
  1050. data/tracks/java/exercises/hello-world/HINT.md +0 -7
  1051. data/tracks/java/exercises/hello-world/src/example/java/HelloWorld.java +0 -9
  1052. data/tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java +0 -32
  1053. data/tracks/kotlin/exercises/allergies/src/example/kotlin/Allergen.kt +0 -10
@@ -1,3 +1,3 @@
1
- function! OfDNA(strand) abort
1
+ function! ToRna(strand) abort
2
2
  return a:strand =~# '[^CGTA]' ? '' : tr(a:strand, 'CGTA', 'GCAU')
3
3
  endfunction
@@ -1,23 +1,47 @@
1
- Execute (complement of cytosine is guanine):
2
- AssertEqual 'G', OfDNA('C')
1
+ "
2
+ " Version: 1.0.1
3
+ "
3
4
 
4
- Execute (complement of guanine is cytosine):
5
- AssertEqual 'C', OfDNA('G')
5
+ Before:
6
+ unlet! input expected
6
7
 
7
- Execute (complement of thymine is adenine):
8
- AssertEqual 'A', OfDNA('T')
8
+ Execute (RNA complement of cytosine is guanine):
9
+ let input = "C"
10
+ let expected = "G"
11
+ AssertEqual expected, ToRna(input)
9
12
 
10
- Execute (complement of adenine is uracil):
11
- AssertEqual 'U', OfDNA('A')
13
+ Execute (RNA complement of guanine is cytosine):
14
+ let input = "G"
15
+ let expected = "C"
16
+ AssertEqual expected, ToRna(input)
12
17
 
13
- Execute (rna complement):
14
- AssertEqual 'UGCACCAGAAUU', OfDNA('ACGTGGTCTTAA')
18
+ Execute (RNA complement of thymine is adenine):
19
+ let input = "T"
20
+ let expected = "A"
21
+ AssertEqual expected, ToRna(input)
15
22
 
16
- Execute (dna correctly handles invalid input):
17
- AssertEqual '', OfDNA('U')
23
+ Execute (RNA complement of adenine is uracil):
24
+ let input = "A"
25
+ let expected = "U"
26
+ AssertEqual expected, ToRna(input)
18
27
 
19
- Execute (dna correctly handles completely invalid input):
20
- AssertEqual '', OfDNA('XXX')
28
+ Execute (RNA complement):
29
+ let input = "ACGTGGTCTTAA"
30
+ let expected = "UGCACCAGAAUU"
31
+ AssertEqual expected, ToRna(input)
32
+
33
+ Execute (correctly handles invalid input (RNA instead of DNA)):
34
+ let input = "U"
35
+ let expected = ''
36
+ AssertEqual expected, ToRna(input)
37
+
38
+ Execute (correctly handles completely invalid DNA input):
39
+ let input = "XXX"
40
+ let expected = ''
41
+ AssertEqual expected, ToRna(input)
42
+
43
+ Execute (correctly handles partially invalid DNA input):
44
+ let input = "ACGTXXXCTTAA"
45
+ let expected = ''
46
+ AssertEqual expected, ToRna(input)
21
47
 
22
- Execute (dna correctly handles partially invalid input):
23
- AssertEqual '', OfDNA('ACGTXXXCTAA')
@@ -10,11 +10,9 @@
10
10
  "
11
11
  " Example:
12
12
  "
13
- " :echo OfDNA('ACGTGGTCTTAA')
13
+ " :echo ToRna('ACGTGGTCTTAA')
14
14
  " UGCACCAGAAUU
15
15
  "
16
- function! OfDNA(strand) abort
17
-
16
+ function! ToRna(strand) abort
18
17
  " your solution goes here
19
-
20
18
  endfunction
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.48
4
+ version: 2.1.0.49
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
@@ -106,364 +106,33 @@ files:
106
106
  - bin/update
107
107
  - bin/verify-configs
108
108
  - bin/verify-metadata
109
- - common/.git
110
- - common/.gitignore
111
- - common/.travis.yml
112
- - common/CONTRIBUTING.md
113
- - common/LICENSE
114
- - common/README.md
115
- - common/TOPICS.txt
116
- - common/bin/check_required_files_present
117
- - common/bin/transfer_blurb_to_description.rb
118
- - common/canonical-schema.json
119
- - common/exercises/accumulate/description.md
120
- - common/exercises/accumulate/metadata.yml
121
- - common/exercises/acronym/canonical-data.json
122
- - common/exercises/acronym/description.md
123
- - common/exercises/acronym/metadata.yml
124
- - common/exercises/all-your-base/canonical-data.json
125
- - common/exercises/all-your-base/description.md
126
- - common/exercises/all-your-base/metadata.yml
127
- - common/exercises/allergies/canonical-data.json
128
- - common/exercises/allergies/description.md
129
- - common/exercises/allergies/metadata.yml
130
- - common/exercises/alphametics/canonical-data.json
131
- - common/exercises/alphametics/description.md
132
- - common/exercises/alphametics/metadata.yml
133
- - common/exercises/anagram/canonical-data.json
134
- - common/exercises/anagram/description.md
135
- - common/exercises/anagram/metadata.yml
136
- - common/exercises/atbash-cipher/canonical-data.json
137
- - common/exercises/atbash-cipher/description.md
138
- - common/exercises/atbash-cipher/metadata.yml
139
- - common/exercises/bank-account/description.md
140
- - common/exercises/bank-account/metadata.yml
141
- - common/exercises/beer-song/canonical-data.json
142
- - common/exercises/beer-song/description.md
143
- - common/exercises/beer-song/metadata.yml
144
- - common/exercises/binary-search-tree/description.md
145
- - common/exercises/binary-search-tree/metadata.yml
146
- - common/exercises/binary-search/canonical-data.json
147
- - common/exercises/binary-search/description.md
148
- - common/exercises/binary-search/metadata.yml
149
- - common/exercises/binary/.deprecated
150
- - common/exercises/binary/canonical-data.json
151
- - common/exercises/binary/description.md
152
- - common/exercises/binary/metadata.yml
153
- - common/exercises/bob/canonical-data.json
154
- - common/exercises/bob/description.md
155
- - common/exercises/bob/metadata.yml
156
- - common/exercises/book-store/canonical-data.json
157
- - common/exercises/book-store/description.md
158
- - common/exercises/book-store/metadata.yml
159
- - common/exercises/bowling/canonical-data.json
160
- - common/exercises/bowling/description.md
161
- - common/exercises/bowling/metadata.yml
162
- - common/exercises/bracket-push/canonical-data.json
163
- - common/exercises/bracket-push/description.md
164
- - common/exercises/bracket-push/metadata.yml
165
- - common/exercises/change/canonical-data.json
166
- - common/exercises/change/description.md
167
- - common/exercises/change/metadata.yml
168
- - common/exercises/circular-buffer/canonical-data.json
169
- - common/exercises/circular-buffer/description.md
170
- - common/exercises/circular-buffer/metadata.yml
171
- - common/exercises/clock/canonical-data.json
172
- - common/exercises/clock/description.md
173
- - common/exercises/clock/metadata.yml
174
- - common/exercises/collatz-conjecture/canonical-data.json
175
- - common/exercises/collatz-conjecture/description.md
176
- - common/exercises/collatz-conjecture/metadata.yml
177
- - common/exercises/connect/canonical-data.json
178
- - common/exercises/connect/description.md
179
- - common/exercises/connect/metadata.yml
180
- - common/exercises/counter/.deprecated
181
- - common/exercises/counter/description.md
182
- - common/exercises/counter/metadata.yml
183
- - common/exercises/crypto-square/canonical-data.json
184
- - common/exercises/crypto-square/description.md
185
- - common/exercises/crypto-square/metadata.yml
186
- - common/exercises/custom-set/canonical-data.json
187
- - common/exercises/custom-set/description.md
188
- - common/exercises/custom-set/metadata.yml
189
- - common/exercises/diamond/canonical-data.json
190
- - common/exercises/diamond/description.md
191
- - common/exercises/diamond/metadata.yml
192
- - common/exercises/difference-of-squares/canonical-data.json
193
- - common/exercises/difference-of-squares/description.md
194
- - common/exercises/difference-of-squares/metadata.yml
195
- - common/exercises/diffie-hellman/description.md
196
- - common/exercises/diffie-hellman/metadata.yml
197
- - common/exercises/dominoes/canonical-data.json
198
- - common/exercises/dominoes/description.md
199
- - common/exercises/dominoes/metadata.yml
200
- - common/exercises/dot-dsl/description.md
201
- - common/exercises/dot-dsl/metadata.yml
202
- - common/exercises/error-handling/description.md
203
- - common/exercises/error-handling/metadata.yml
204
- - common/exercises/etl/canonical-data.json
205
- - common/exercises/etl/description.md
206
- - common/exercises/etl/metadata.yml
207
- - common/exercises/flatten-array/canonical-data.json
208
- - common/exercises/flatten-array/description.md
209
- - common/exercises/flatten-array/metadata.yml
210
- - common/exercises/food-chain/canonical-data.json
211
- - common/exercises/food-chain/description.md
212
- - common/exercises/food-chain/metadata.yml
213
- - common/exercises/forth/canonical-data.json
214
- - common/exercises/forth/description.md
215
- - common/exercises/forth/metadata.yml
216
- - common/exercises/gigasecond/canonical-data.json
217
- - common/exercises/gigasecond/description.md
218
- - common/exercises/gigasecond/metadata.yml
219
- - common/exercises/go-counting/description.md
220
- - common/exercises/go-counting/metadata.yml
221
- - common/exercises/grade-school/description.md
222
- - common/exercises/grade-school/metadata.yml
223
- - common/exercises/grains/canonical-data.json
224
- - common/exercises/grains/description.md
225
- - common/exercises/grains/metadata.yml
226
- - common/exercises/grep/canonical-data.json
227
- - common/exercises/grep/description.md
228
- - common/exercises/grep/metadata.yml
229
- - common/exercises/hamming/canonical-data.json
230
- - common/exercises/hamming/description.md
231
- - common/exercises/hamming/metadata.yml
232
- - common/exercises/hangman/description.md
233
- - common/exercises/hangman/metadata.yml
234
- - common/exercises/hello-world/canonical-data.json
235
- - common/exercises/hello-world/description.md
236
- - common/exercises/hello-world/metadata.yml
237
- - common/exercises/hexadecimal/.deprecated
238
- - common/exercises/hexadecimal/description.md
239
- - common/exercises/hexadecimal/metadata.yml
240
- - common/exercises/house/description.md
241
- - common/exercises/house/metadata.yml
242
- - common/exercises/isogram/canonical-data.json
243
- - common/exercises/isogram/description.md
244
- - common/exercises/isogram/metadata.yml
245
- - common/exercises/kindergarten-garden/canonical-data.json
246
- - common/exercises/kindergarten-garden/description.md
247
- - common/exercises/kindergarten-garden/metadata.yml
248
- - common/exercises/largest-series-product/canonical-data.json
249
- - common/exercises/largest-series-product/description.md
250
- - common/exercises/largest-series-product/metadata.yml
251
- - common/exercises/leap/canonical-data.json
252
- - common/exercises/leap/description.md
253
- - common/exercises/leap/metadata.yml
254
- - common/exercises/ledger/description.md
255
- - common/exercises/ledger/metadata.yml
256
- - common/exercises/lens-person/description.md
257
- - common/exercises/lens-person/metadata.yml
258
- - common/exercises/linked-list/description.md
259
- - common/exercises/linked-list/metadata.yml
260
- - common/exercises/list-ops/canonical-data.json
261
- - common/exercises/list-ops/description.md
262
- - common/exercises/list-ops/metadata.yml
263
- - common/exercises/luhn/canonical-data.json
264
- - common/exercises/luhn/description.md
265
- - common/exercises/luhn/metadata.yml
266
- - common/exercises/markdown/canonical-data.json
267
- - common/exercises/markdown/description.md
268
- - common/exercises/markdown/metadata.yml
269
- - common/exercises/matrix/description.md
270
- - common/exercises/matrix/metadata.yml
271
- - common/exercises/meetup/canonical-data.json
272
- - common/exercises/meetup/description.md
273
- - common/exercises/meetup/metadata.yml
274
- - common/exercises/minesweeper/canonical-data.json
275
- - common/exercises/minesweeper/description.md
276
- - common/exercises/minesweeper/metadata.yml
277
- - common/exercises/nth-prime/canonical-data.json
278
- - common/exercises/nth-prime/description.md
279
- - common/exercises/nth-prime/metadata.yml
280
- - common/exercises/nucleotide-codons/.deprecated
281
- - common/exercises/nucleotide-codons/description.md
282
- - common/exercises/nucleotide-codons/metadata.yml
283
- - common/exercises/nucleotide-count/canonical-data.json
284
- - common/exercises/nucleotide-count/description.md
285
- - common/exercises/nucleotide-count/metadata.yml
286
- - common/exercises/ocr-numbers/canonical-data.json
287
- - common/exercises/ocr-numbers/description.md
288
- - common/exercises/ocr-numbers/metadata.yml
289
- - common/exercises/octal/.deprecated
290
- - common/exercises/octal/description.md
291
- - common/exercises/octal/metadata.yml
292
- - common/exercises/paasio/description.md
293
- - common/exercises/paasio/metadata.yml
294
- - common/exercises/palindrome-products/description.md
295
- - common/exercises/palindrome-products/metadata.yml
296
- - common/exercises/pangram/canonical-data.json
297
- - common/exercises/pangram/description.md
298
- - common/exercises/pangram/metadata.yml
299
- - common/exercises/parallel-letter-frequency/description.md
300
- - common/exercises/parallel-letter-frequency/metadata.yml
301
- - common/exercises/pascals-triangle/canonical-data.json
302
- - common/exercises/pascals-triangle/description.md
303
- - common/exercises/pascals-triangle/metadata.yml
304
- - common/exercises/perfect-numbers/canonical-data.json
305
- - common/exercises/perfect-numbers/description.md
306
- - common/exercises/perfect-numbers/metadata.yml
307
- - common/exercises/phone-number/canonical-data.json
308
- - common/exercises/phone-number/description.md
309
- - common/exercises/phone-number/metadata.yml
310
- - common/exercises/pig-latin/canonical-data.json
311
- - common/exercises/pig-latin/description.md
312
- - common/exercises/pig-latin/metadata.yml
313
- - common/exercises/point-mutations/.deprecated
314
- - common/exercises/point-mutations/description.md
315
- - common/exercises/point-mutations/metadata.yml
316
- - common/exercises/poker/canonical-data.json
317
- - common/exercises/poker/description.md
318
- - common/exercises/poker/metadata.yml
319
- - common/exercises/pov/canonical-data.json
320
- - common/exercises/pov/description.md
321
- - common/exercises/pov/metadata.yml
322
- - common/exercises/prime-factors/canonical-data.json
323
- - common/exercises/prime-factors/description.md
324
- - common/exercises/prime-factors/metadata.yml
325
- - common/exercises/protein-translation/description.md
326
- - common/exercises/protein-translation/metadata.yml
327
- - common/exercises/proverb/description.md
328
- - common/exercises/proverb/metadata.yml
329
- - common/exercises/pythagorean-triplet/description.md
330
- - common/exercises/pythagorean-triplet/metadata.yml
331
- - common/exercises/queen-attack/canonical-data.json
332
- - common/exercises/queen-attack/description.md
333
- - common/exercises/queen-attack/metadata.yml
334
- - common/exercises/rail-fence-cipher/canonical-data.json
335
- - common/exercises/rail-fence-cipher/description.md
336
- - common/exercises/rail-fence-cipher/metadata.yml
337
- - common/exercises/raindrops/canonical-data.json
338
- - common/exercises/raindrops/description.md
339
- - common/exercises/raindrops/metadata.yml
340
- - common/exercises/react/canonical-data.json
341
- - common/exercises/react/description.md
342
- - common/exercises/react/metadata.yml
343
- - common/exercises/rectangles/canonical-data.json
344
- - common/exercises/rectangles/description.md
345
- - common/exercises/rectangles/metadata.yml
346
- - common/exercises/rna-transcription/canonical-data.json
347
- - common/exercises/rna-transcription/description.md
348
- - common/exercises/rna-transcription/metadata.yml
349
- - common/exercises/robot-name/description.md
350
- - common/exercises/robot-name/metadata.yml
351
- - common/exercises/robot-simulator/canonical-data.json
352
- - common/exercises/robot-simulator/description.md
353
- - common/exercises/robot-simulator/metadata.yml
354
- - common/exercises/roman-numerals/canonical-data.json
355
- - common/exercises/roman-numerals/description.md
356
- - common/exercises/roman-numerals/metadata.yml
357
- - common/exercises/rotational-cipher/canonical-data.json
358
- - common/exercises/rotational-cipher/description.md
359
- - common/exercises/rotational-cipher/metadata.yml
360
- - common/exercises/run-length-encoding/canonical-data.json
361
- - common/exercises/run-length-encoding/description.md
362
- - common/exercises/run-length-encoding/metadata.yml
363
- - common/exercises/saddle-points/canonical-data.json
364
- - common/exercises/saddle-points/description.md
365
- - common/exercises/saddle-points/metadata.yml
366
- - common/exercises/say/canonical-data.json
367
- - common/exercises/say/description.md
368
- - common/exercises/say/metadata.yml
369
- - common/exercises/scale-generator/description.md
370
- - common/exercises/scale-generator/metadata.yml
371
- - common/exercises/scrabble-score/canonical-data.json
372
- - common/exercises/scrabble-score/description.md
373
- - common/exercises/scrabble-score/metadata.yml
374
- - common/exercises/secret-handshake/canonical-data.json
375
- - common/exercises/secret-handshake/description.md
376
- - common/exercises/secret-handshake/metadata.yml
377
- - common/exercises/series/description.md
378
- - common/exercises/series/metadata.yml
379
- - common/exercises/sgf-parsing/description.md
380
- - common/exercises/sgf-parsing/metadata.yml
381
- - common/exercises/sieve/canonical-data.json
382
- - common/exercises/sieve/description.md
383
- - common/exercises/sieve/metadata.yml
384
- - common/exercises/simple-cipher/description.md
385
- - common/exercises/simple-cipher/metadata.yml
386
- - common/exercises/simple-linked-list/description.md
387
- - common/exercises/simple-linked-list/metadata.yml
388
- - common/exercises/space-age/canonical-data.json
389
- - common/exercises/space-age/description.md
390
- - common/exercises/space-age/metadata.yml
391
- - common/exercises/strain/description.md
392
- - common/exercises/strain/metadata.yml
393
- - common/exercises/sublist/canonical-data.json
394
- - common/exercises/sublist/description.md
395
- - common/exercises/sublist/metadata.yml
396
- - common/exercises/sum-of-multiples/canonical-data.json
397
- - common/exercises/sum-of-multiples/description.md
398
- - common/exercises/sum-of-multiples/metadata.yml
399
- - common/exercises/tournament/canonical-data.json
400
- - common/exercises/tournament/description.md
401
- - common/exercises/tournament/metadata.yml
402
- - common/exercises/transpose/canonical-data.json
403
- - common/exercises/transpose/description.md
404
- - common/exercises/transpose/metadata.yml
405
- - common/exercises/tree-building/description.md
406
- - common/exercises/tree-building/metadata.yml
407
- - common/exercises/triangle/canonical-data.json
408
- - common/exercises/triangle/description.md
409
- - common/exercises/triangle/metadata.yml
410
- - common/exercises/trinary/.deprecated
411
- - common/exercises/trinary/canonical-data.json
412
- - common/exercises/trinary/description.md
413
- - common/exercises/trinary/metadata.yml
414
- - common/exercises/twelve-days/description.md
415
- - common/exercises/twelve-days/metadata.yml
416
- - common/exercises/two-bucket/canonical-data.json
417
- - common/exercises/two-bucket/description.md
418
- - common/exercises/two-bucket/metadata.yml
419
- - common/exercises/two-fer/canonical-data.json
420
- - common/exercises/two-fer/description.md
421
- - common/exercises/two-fer/metadata.yml
422
- - common/exercises/variable-length-quantity/canonical-data.json
423
- - common/exercises/variable-length-quantity/description.md
424
- - common/exercises/variable-length-quantity/metadata.yml
425
- - common/exercises/word-count/canonical-data.json
426
- - common/exercises/word-count/description.md
427
- - common/exercises/word-count/metadata.yml
428
- - common/exercises/word-search/canonical-data.json
429
- - common/exercises/word-search/description.md
430
- - common/exercises/word-search/metadata.yml
431
- - common/exercises/wordy/canonical-data.json
432
- - common/exercises/wordy/description.md
433
- - common/exercises/wordy/metadata.yml
434
- - common/exercises/zebra-puzzle/description.md
435
- - common/exercises/zebra-puzzle/metadata.yml
436
- - common/exercises/zipper/description.md
437
- - common/exercises/zipper/metadata.yml
438
- - common/package.json
439
- - common/yarn.lock
440
- - fixtures/common/exercises/apple/canonical-data.json
441
- - fixtures/common/exercises/apple/description.md
442
- - fixtures/common/exercises/apple/metadata.yml
443
- - fixtures/common/exercises/banana/description.md
444
- - fixtures/common/exercises/banana/metadata.yml
445
- - fixtures/common/exercises/cherry/description.md
446
- - fixtures/common/exercises/cherry/metadata.yml
447
- - fixtures/common/exercises/dog/description.md
448
- - fixtures/common/exercises/dog/metadata.yml
449
- - fixtures/common/exercises/fish/.deprecated
450
- - fixtures/common/exercises/fish/canonical-data.json
451
- - fixtures/common/exercises/fish/description.md
452
- - fixtures/common/exercises/fish/metadata.yml
453
- - fixtures/common/exercises/hello-world/description.md
454
- - fixtures/common/exercises/hello-world/metadata.yml
455
- - fixtures/common/exercises/imbe/description.md
456
- - fixtures/common/exercises/imbe/metadata.yml
457
- - fixtures/common/exercises/mango/canonical-data.json
458
- - fixtures/common/exercises/mango/description.md
459
- - fixtures/common/exercises/mango/metadata.yml
460
- - fixtures/common/exercises/no-metadata/description.md
461
- - fixtures/common/exercises/one/description.md
462
- - fixtures/common/exercises/one/metadata.yml
463
- - fixtures/common/exercises/three/description.md
464
- - fixtures/common/exercises/three/metadata.yml
465
- - fixtures/common/exercises/two/description.md
466
- - fixtures/common/exercises/two/metadata.yml
109
+ - fixtures/problem-specifications/exercises/apple/canonical-data.json
110
+ - fixtures/problem-specifications/exercises/apple/description.md
111
+ - fixtures/problem-specifications/exercises/apple/metadata.yml
112
+ - fixtures/problem-specifications/exercises/banana/description.md
113
+ - fixtures/problem-specifications/exercises/banana/metadata.yml
114
+ - fixtures/problem-specifications/exercises/cherry/description.md
115
+ - fixtures/problem-specifications/exercises/cherry/metadata.yml
116
+ - fixtures/problem-specifications/exercises/dog/description.md
117
+ - fixtures/problem-specifications/exercises/dog/metadata.yml
118
+ - fixtures/problem-specifications/exercises/fish/.deprecated
119
+ - fixtures/problem-specifications/exercises/fish/canonical-data.json
120
+ - fixtures/problem-specifications/exercises/fish/description.md
121
+ - fixtures/problem-specifications/exercises/fish/metadata.yml
122
+ - fixtures/problem-specifications/exercises/hello-world/description.md
123
+ - fixtures/problem-specifications/exercises/hello-world/metadata.yml
124
+ - fixtures/problem-specifications/exercises/imbe/description.md
125
+ - fixtures/problem-specifications/exercises/imbe/metadata.yml
126
+ - fixtures/problem-specifications/exercises/mango/canonical-data.json
127
+ - fixtures/problem-specifications/exercises/mango/description.md
128
+ - fixtures/problem-specifications/exercises/mango/metadata.yml
129
+ - fixtures/problem-specifications/exercises/no-metadata/description.md
130
+ - fixtures/problem-specifications/exercises/one/description.md
131
+ - fixtures/problem-specifications/exercises/one/metadata.yml
132
+ - fixtures/problem-specifications/exercises/three/description.md
133
+ - fixtures/problem-specifications/exercises/three/metadata.yml
134
+ - fixtures/problem-specifications/exercises/two/description.md
135
+ - fixtures/problem-specifications/exercises/two/metadata.yml
467
136
  - fixtures/tracks/animal/.meta/include-in-fish.txt
468
137
  - fixtures/tracks/animal/config.json
469
138
  - fixtures/tracks/animal/exercises/dog/a_dog.animal
@@ -542,6 +211,343 @@ files:
542
211
  - lib/trackler/track.rb
543
212
  - lib/trackler/tracks.rb
544
213
  - lib/trackler/version.rb
214
+ - problem-specifications/.git
215
+ - problem-specifications/.gitignore
216
+ - problem-specifications/.travis.yml
217
+ - problem-specifications/CONTRIBUTING.md
218
+ - problem-specifications/LICENSE
219
+ - problem-specifications/README.md
220
+ - problem-specifications/TOPICS.txt
221
+ - problem-specifications/bin/check_required_files_present
222
+ - problem-specifications/bin/transfer_blurb_to_description.rb
223
+ - problem-specifications/canonical-schema.json
224
+ - problem-specifications/exercises/accumulate/description.md
225
+ - problem-specifications/exercises/accumulate/metadata.yml
226
+ - problem-specifications/exercises/acronym/canonical-data.json
227
+ - problem-specifications/exercises/acronym/description.md
228
+ - problem-specifications/exercises/acronym/metadata.yml
229
+ - problem-specifications/exercises/all-your-base/canonical-data.json
230
+ - problem-specifications/exercises/all-your-base/description.md
231
+ - problem-specifications/exercises/all-your-base/metadata.yml
232
+ - problem-specifications/exercises/allergies/canonical-data.json
233
+ - problem-specifications/exercises/allergies/description.md
234
+ - problem-specifications/exercises/allergies/metadata.yml
235
+ - problem-specifications/exercises/alphametics/canonical-data.json
236
+ - problem-specifications/exercises/alphametics/description.md
237
+ - problem-specifications/exercises/alphametics/metadata.yml
238
+ - problem-specifications/exercises/anagram/canonical-data.json
239
+ - problem-specifications/exercises/anagram/description.md
240
+ - problem-specifications/exercises/anagram/metadata.yml
241
+ - problem-specifications/exercises/atbash-cipher/canonical-data.json
242
+ - problem-specifications/exercises/atbash-cipher/description.md
243
+ - problem-specifications/exercises/atbash-cipher/metadata.yml
244
+ - problem-specifications/exercises/bank-account/description.md
245
+ - problem-specifications/exercises/bank-account/metadata.yml
246
+ - problem-specifications/exercises/beer-song/canonical-data.json
247
+ - problem-specifications/exercises/beer-song/description.md
248
+ - problem-specifications/exercises/beer-song/metadata.yml
249
+ - problem-specifications/exercises/binary-search-tree/description.md
250
+ - problem-specifications/exercises/binary-search-tree/metadata.yml
251
+ - problem-specifications/exercises/binary-search/canonical-data.json
252
+ - problem-specifications/exercises/binary-search/description.md
253
+ - problem-specifications/exercises/binary-search/metadata.yml
254
+ - problem-specifications/exercises/binary/.deprecated
255
+ - problem-specifications/exercises/binary/canonical-data.json
256
+ - problem-specifications/exercises/binary/description.md
257
+ - problem-specifications/exercises/binary/metadata.yml
258
+ - problem-specifications/exercises/bob/canonical-data.json
259
+ - problem-specifications/exercises/bob/description.md
260
+ - problem-specifications/exercises/bob/metadata.yml
261
+ - problem-specifications/exercises/book-store/canonical-data.json
262
+ - problem-specifications/exercises/book-store/description.md
263
+ - problem-specifications/exercises/book-store/metadata.yml
264
+ - problem-specifications/exercises/bowling/canonical-data.json
265
+ - problem-specifications/exercises/bowling/description.md
266
+ - problem-specifications/exercises/bowling/metadata.yml
267
+ - problem-specifications/exercises/bracket-push/canonical-data.json
268
+ - problem-specifications/exercises/bracket-push/description.md
269
+ - problem-specifications/exercises/bracket-push/metadata.yml
270
+ - problem-specifications/exercises/change/canonical-data.json
271
+ - problem-specifications/exercises/change/description.md
272
+ - problem-specifications/exercises/change/metadata.yml
273
+ - problem-specifications/exercises/circular-buffer/canonical-data.json
274
+ - problem-specifications/exercises/circular-buffer/description.md
275
+ - problem-specifications/exercises/circular-buffer/metadata.yml
276
+ - problem-specifications/exercises/clock/canonical-data.json
277
+ - problem-specifications/exercises/clock/description.md
278
+ - problem-specifications/exercises/clock/metadata.yml
279
+ - problem-specifications/exercises/collatz-conjecture/canonical-data.json
280
+ - problem-specifications/exercises/collatz-conjecture/description.md
281
+ - problem-specifications/exercises/collatz-conjecture/metadata.yml
282
+ - problem-specifications/exercises/complex-numbers/canonical-data.json
283
+ - problem-specifications/exercises/complex-numbers/description.md
284
+ - problem-specifications/exercises/complex-numbers/metadata.yml
285
+ - problem-specifications/exercises/connect/canonical-data.json
286
+ - problem-specifications/exercises/connect/description.md
287
+ - problem-specifications/exercises/connect/metadata.yml
288
+ - problem-specifications/exercises/counter/.deprecated
289
+ - problem-specifications/exercises/counter/description.md
290
+ - problem-specifications/exercises/counter/metadata.yml
291
+ - problem-specifications/exercises/crypto-square/canonical-data.json
292
+ - problem-specifications/exercises/crypto-square/description.md
293
+ - problem-specifications/exercises/crypto-square/metadata.yml
294
+ - problem-specifications/exercises/custom-set/canonical-data.json
295
+ - problem-specifications/exercises/custom-set/description.md
296
+ - problem-specifications/exercises/custom-set/metadata.yml
297
+ - problem-specifications/exercises/diamond/canonical-data.json
298
+ - problem-specifications/exercises/diamond/description.md
299
+ - problem-specifications/exercises/diamond/metadata.yml
300
+ - problem-specifications/exercises/difference-of-squares/canonical-data.json
301
+ - problem-specifications/exercises/difference-of-squares/description.md
302
+ - problem-specifications/exercises/difference-of-squares/metadata.yml
303
+ - problem-specifications/exercises/diffie-hellman/description.md
304
+ - problem-specifications/exercises/diffie-hellman/metadata.yml
305
+ - problem-specifications/exercises/dominoes/canonical-data.json
306
+ - problem-specifications/exercises/dominoes/description.md
307
+ - problem-specifications/exercises/dominoes/metadata.yml
308
+ - problem-specifications/exercises/dot-dsl/description.md
309
+ - problem-specifications/exercises/dot-dsl/metadata.yml
310
+ - problem-specifications/exercises/error-handling/description.md
311
+ - problem-specifications/exercises/error-handling/metadata.yml
312
+ - problem-specifications/exercises/etl/canonical-data.json
313
+ - problem-specifications/exercises/etl/description.md
314
+ - problem-specifications/exercises/etl/metadata.yml
315
+ - problem-specifications/exercises/flatten-array/canonical-data.json
316
+ - problem-specifications/exercises/flatten-array/description.md
317
+ - problem-specifications/exercises/flatten-array/metadata.yml
318
+ - problem-specifications/exercises/food-chain/canonical-data.json
319
+ - problem-specifications/exercises/food-chain/description.md
320
+ - problem-specifications/exercises/food-chain/metadata.yml
321
+ - problem-specifications/exercises/forth/canonical-data.json
322
+ - problem-specifications/exercises/forth/description.md
323
+ - problem-specifications/exercises/forth/metadata.yml
324
+ - problem-specifications/exercises/gigasecond/canonical-data.json
325
+ - problem-specifications/exercises/gigasecond/description.md
326
+ - problem-specifications/exercises/gigasecond/metadata.yml
327
+ - problem-specifications/exercises/go-counting/description.md
328
+ - problem-specifications/exercises/go-counting/metadata.yml
329
+ - problem-specifications/exercises/grade-school/description.md
330
+ - problem-specifications/exercises/grade-school/metadata.yml
331
+ - problem-specifications/exercises/grains/canonical-data.json
332
+ - problem-specifications/exercises/grains/description.md
333
+ - problem-specifications/exercises/grains/metadata.yml
334
+ - problem-specifications/exercises/grep/canonical-data.json
335
+ - problem-specifications/exercises/grep/description.md
336
+ - problem-specifications/exercises/grep/metadata.yml
337
+ - problem-specifications/exercises/hamming/canonical-data.json
338
+ - problem-specifications/exercises/hamming/description.md
339
+ - problem-specifications/exercises/hamming/metadata.yml
340
+ - problem-specifications/exercises/hangman/description.md
341
+ - problem-specifications/exercises/hangman/metadata.yml
342
+ - problem-specifications/exercises/hello-world/canonical-data.json
343
+ - problem-specifications/exercises/hello-world/description.md
344
+ - problem-specifications/exercises/hello-world/metadata.yml
345
+ - problem-specifications/exercises/hexadecimal/.deprecated
346
+ - problem-specifications/exercises/hexadecimal/description.md
347
+ - problem-specifications/exercises/hexadecimal/metadata.yml
348
+ - problem-specifications/exercises/house/description.md
349
+ - problem-specifications/exercises/house/metadata.yml
350
+ - problem-specifications/exercises/isogram/canonical-data.json
351
+ - problem-specifications/exercises/isogram/description.md
352
+ - problem-specifications/exercises/isogram/metadata.yml
353
+ - problem-specifications/exercises/kindergarten-garden/canonical-data.json
354
+ - problem-specifications/exercises/kindergarten-garden/description.md
355
+ - problem-specifications/exercises/kindergarten-garden/metadata.yml
356
+ - problem-specifications/exercises/largest-series-product/canonical-data.json
357
+ - problem-specifications/exercises/largest-series-product/description.md
358
+ - problem-specifications/exercises/largest-series-product/metadata.yml
359
+ - problem-specifications/exercises/leap/canonical-data.json
360
+ - problem-specifications/exercises/leap/description.md
361
+ - problem-specifications/exercises/leap/metadata.yml
362
+ - problem-specifications/exercises/ledger/description.md
363
+ - problem-specifications/exercises/ledger/metadata.yml
364
+ - problem-specifications/exercises/lens-person/description.md
365
+ - problem-specifications/exercises/lens-person/metadata.yml
366
+ - problem-specifications/exercises/linked-list/description.md
367
+ - problem-specifications/exercises/linked-list/metadata.yml
368
+ - problem-specifications/exercises/list-ops/canonical-data.json
369
+ - problem-specifications/exercises/list-ops/description.md
370
+ - problem-specifications/exercises/list-ops/metadata.yml
371
+ - problem-specifications/exercises/luhn/canonical-data.json
372
+ - problem-specifications/exercises/luhn/description.md
373
+ - problem-specifications/exercises/luhn/metadata.yml
374
+ - problem-specifications/exercises/markdown/canonical-data.json
375
+ - problem-specifications/exercises/markdown/description.md
376
+ - problem-specifications/exercises/markdown/metadata.yml
377
+ - problem-specifications/exercises/matrix/description.md
378
+ - problem-specifications/exercises/matrix/metadata.yml
379
+ - problem-specifications/exercises/meetup/canonical-data.json
380
+ - problem-specifications/exercises/meetup/description.md
381
+ - problem-specifications/exercises/meetup/metadata.yml
382
+ - problem-specifications/exercises/minesweeper/canonical-data.json
383
+ - problem-specifications/exercises/minesweeper/description.md
384
+ - problem-specifications/exercises/minesweeper/metadata.yml
385
+ - problem-specifications/exercises/nth-prime/canonical-data.json
386
+ - problem-specifications/exercises/nth-prime/description.md
387
+ - problem-specifications/exercises/nth-prime/metadata.yml
388
+ - problem-specifications/exercises/nucleotide-codons/.deprecated
389
+ - problem-specifications/exercises/nucleotide-codons/description.md
390
+ - problem-specifications/exercises/nucleotide-codons/metadata.yml
391
+ - problem-specifications/exercises/nucleotide-count/canonical-data.json
392
+ - problem-specifications/exercises/nucleotide-count/description.md
393
+ - problem-specifications/exercises/nucleotide-count/metadata.yml
394
+ - problem-specifications/exercises/ocr-numbers/canonical-data.json
395
+ - problem-specifications/exercises/ocr-numbers/description.md
396
+ - problem-specifications/exercises/ocr-numbers/metadata.yml
397
+ - problem-specifications/exercises/octal/.deprecated
398
+ - problem-specifications/exercises/octal/description.md
399
+ - problem-specifications/exercises/octal/metadata.yml
400
+ - problem-specifications/exercises/paasio/description.md
401
+ - problem-specifications/exercises/paasio/metadata.yml
402
+ - problem-specifications/exercises/palindrome-products/description.md
403
+ - problem-specifications/exercises/palindrome-products/metadata.yml
404
+ - problem-specifications/exercises/pangram/canonical-data.json
405
+ - problem-specifications/exercises/pangram/description.md
406
+ - problem-specifications/exercises/pangram/metadata.yml
407
+ - problem-specifications/exercises/parallel-letter-frequency/description.md
408
+ - problem-specifications/exercises/parallel-letter-frequency/metadata.yml
409
+ - problem-specifications/exercises/pascals-triangle/canonical-data.json
410
+ - problem-specifications/exercises/pascals-triangle/description.md
411
+ - problem-specifications/exercises/pascals-triangle/metadata.yml
412
+ - problem-specifications/exercises/perfect-numbers/canonical-data.json
413
+ - problem-specifications/exercises/perfect-numbers/description.md
414
+ - problem-specifications/exercises/perfect-numbers/metadata.yml
415
+ - problem-specifications/exercises/phone-number/canonical-data.json
416
+ - problem-specifications/exercises/phone-number/description.md
417
+ - problem-specifications/exercises/phone-number/metadata.yml
418
+ - problem-specifications/exercises/pig-latin/canonical-data.json
419
+ - problem-specifications/exercises/pig-latin/description.md
420
+ - problem-specifications/exercises/pig-latin/metadata.yml
421
+ - problem-specifications/exercises/point-mutations/.deprecated
422
+ - problem-specifications/exercises/point-mutations/description.md
423
+ - problem-specifications/exercises/point-mutations/metadata.yml
424
+ - problem-specifications/exercises/poker/canonical-data.json
425
+ - problem-specifications/exercises/poker/description.md
426
+ - problem-specifications/exercises/poker/metadata.yml
427
+ - problem-specifications/exercises/pov/canonical-data.json
428
+ - problem-specifications/exercises/pov/description.md
429
+ - problem-specifications/exercises/pov/metadata.yml
430
+ - problem-specifications/exercises/prime-factors/canonical-data.json
431
+ - problem-specifications/exercises/prime-factors/description.md
432
+ - problem-specifications/exercises/prime-factors/metadata.yml
433
+ - problem-specifications/exercises/protein-translation/description.md
434
+ - problem-specifications/exercises/protein-translation/metadata.yml
435
+ - problem-specifications/exercises/proverb/description.md
436
+ - problem-specifications/exercises/proverb/metadata.yml
437
+ - problem-specifications/exercises/pythagorean-triplet/description.md
438
+ - problem-specifications/exercises/pythagorean-triplet/metadata.yml
439
+ - problem-specifications/exercises/queen-attack/canonical-data.json
440
+ - problem-specifications/exercises/queen-attack/description.md
441
+ - problem-specifications/exercises/queen-attack/metadata.yml
442
+ - problem-specifications/exercises/rail-fence-cipher/canonical-data.json
443
+ - problem-specifications/exercises/rail-fence-cipher/description.md
444
+ - problem-specifications/exercises/rail-fence-cipher/metadata.yml
445
+ - problem-specifications/exercises/raindrops/canonical-data.json
446
+ - problem-specifications/exercises/raindrops/description.md
447
+ - problem-specifications/exercises/raindrops/metadata.yml
448
+ - problem-specifications/exercises/react/canonical-data.json
449
+ - problem-specifications/exercises/react/description.md
450
+ - problem-specifications/exercises/react/metadata.yml
451
+ - problem-specifications/exercises/rectangles/canonical-data.json
452
+ - problem-specifications/exercises/rectangles/description.md
453
+ - problem-specifications/exercises/rectangles/metadata.yml
454
+ - problem-specifications/exercises/rna-transcription/canonical-data.json
455
+ - problem-specifications/exercises/rna-transcription/description.md
456
+ - problem-specifications/exercises/rna-transcription/metadata.yml
457
+ - problem-specifications/exercises/robot-name/description.md
458
+ - problem-specifications/exercises/robot-name/metadata.yml
459
+ - problem-specifications/exercises/robot-simulator/canonical-data.json
460
+ - problem-specifications/exercises/robot-simulator/description.md
461
+ - problem-specifications/exercises/robot-simulator/metadata.yml
462
+ - problem-specifications/exercises/roman-numerals/canonical-data.json
463
+ - problem-specifications/exercises/roman-numerals/description.md
464
+ - problem-specifications/exercises/roman-numerals/metadata.yml
465
+ - problem-specifications/exercises/rotational-cipher/canonical-data.json
466
+ - problem-specifications/exercises/rotational-cipher/description.md
467
+ - problem-specifications/exercises/rotational-cipher/metadata.yml
468
+ - problem-specifications/exercises/run-length-encoding/canonical-data.json
469
+ - problem-specifications/exercises/run-length-encoding/description.md
470
+ - problem-specifications/exercises/run-length-encoding/metadata.yml
471
+ - problem-specifications/exercises/saddle-points/canonical-data.json
472
+ - problem-specifications/exercises/saddle-points/description.md
473
+ - problem-specifications/exercises/saddle-points/metadata.yml
474
+ - problem-specifications/exercises/say/canonical-data.json
475
+ - problem-specifications/exercises/say/description.md
476
+ - problem-specifications/exercises/say/metadata.yml
477
+ - problem-specifications/exercises/scale-generator/description.md
478
+ - problem-specifications/exercises/scale-generator/metadata.yml
479
+ - problem-specifications/exercises/scrabble-score/canonical-data.json
480
+ - problem-specifications/exercises/scrabble-score/description.md
481
+ - problem-specifications/exercises/scrabble-score/metadata.yml
482
+ - problem-specifications/exercises/secret-handshake/canonical-data.json
483
+ - problem-specifications/exercises/secret-handshake/description.md
484
+ - problem-specifications/exercises/secret-handshake/metadata.yml
485
+ - problem-specifications/exercises/series/description.md
486
+ - problem-specifications/exercises/series/metadata.yml
487
+ - problem-specifications/exercises/sgf-parsing/description.md
488
+ - problem-specifications/exercises/sgf-parsing/metadata.yml
489
+ - problem-specifications/exercises/sieve/canonical-data.json
490
+ - problem-specifications/exercises/sieve/description.md
491
+ - problem-specifications/exercises/sieve/metadata.yml
492
+ - problem-specifications/exercises/simple-cipher/description.md
493
+ - problem-specifications/exercises/simple-cipher/metadata.yml
494
+ - problem-specifications/exercises/simple-linked-list/description.md
495
+ - problem-specifications/exercises/simple-linked-list/metadata.yml
496
+ - problem-specifications/exercises/space-age/canonical-data.json
497
+ - problem-specifications/exercises/space-age/description.md
498
+ - problem-specifications/exercises/space-age/metadata.yml
499
+ - problem-specifications/exercises/spiral-matrix/canonical-data.json
500
+ - problem-specifications/exercises/spiral-matrix/description.md
501
+ - problem-specifications/exercises/spiral-matrix/metadata.yml
502
+ - problem-specifications/exercises/strain/description.md
503
+ - problem-specifications/exercises/strain/metadata.yml
504
+ - problem-specifications/exercises/sublist/canonical-data.json
505
+ - problem-specifications/exercises/sublist/description.md
506
+ - problem-specifications/exercises/sublist/metadata.yml
507
+ - problem-specifications/exercises/sum-of-multiples/canonical-data.json
508
+ - problem-specifications/exercises/sum-of-multiples/description.md
509
+ - problem-specifications/exercises/sum-of-multiples/metadata.yml
510
+ - problem-specifications/exercises/tournament/canonical-data.json
511
+ - problem-specifications/exercises/tournament/description.md
512
+ - problem-specifications/exercises/tournament/metadata.yml
513
+ - problem-specifications/exercises/transpose/canonical-data.json
514
+ - problem-specifications/exercises/transpose/description.md
515
+ - problem-specifications/exercises/transpose/metadata.yml
516
+ - problem-specifications/exercises/tree-building/description.md
517
+ - problem-specifications/exercises/tree-building/metadata.yml
518
+ - problem-specifications/exercises/triangle/canonical-data.json
519
+ - problem-specifications/exercises/triangle/description.md
520
+ - problem-specifications/exercises/triangle/metadata.yml
521
+ - problem-specifications/exercises/trinary/.deprecated
522
+ - problem-specifications/exercises/trinary/canonical-data.json
523
+ - problem-specifications/exercises/trinary/description.md
524
+ - problem-specifications/exercises/trinary/metadata.yml
525
+ - problem-specifications/exercises/twelve-days/description.md
526
+ - problem-specifications/exercises/twelve-days/metadata.yml
527
+ - problem-specifications/exercises/two-bucket/canonical-data.json
528
+ - problem-specifications/exercises/two-bucket/description.md
529
+ - problem-specifications/exercises/two-bucket/metadata.yml
530
+ - problem-specifications/exercises/two-fer/canonical-data.json
531
+ - problem-specifications/exercises/two-fer/description.md
532
+ - problem-specifications/exercises/two-fer/metadata.yml
533
+ - problem-specifications/exercises/variable-length-quantity/canonical-data.json
534
+ - problem-specifications/exercises/variable-length-quantity/description.md
535
+ - problem-specifications/exercises/variable-length-quantity/metadata.yml
536
+ - problem-specifications/exercises/word-count/canonical-data.json
537
+ - problem-specifications/exercises/word-count/description.md
538
+ - problem-specifications/exercises/word-count/metadata.yml
539
+ - problem-specifications/exercises/word-search/canonical-data.json
540
+ - problem-specifications/exercises/word-search/description.md
541
+ - problem-specifications/exercises/word-search/metadata.yml
542
+ - problem-specifications/exercises/wordy/canonical-data.json
543
+ - problem-specifications/exercises/wordy/description.md
544
+ - problem-specifications/exercises/wordy/metadata.yml
545
+ - problem-specifications/exercises/zebra-puzzle/description.md
546
+ - problem-specifications/exercises/zebra-puzzle/metadata.yml
547
+ - problem-specifications/exercises/zipper/description.md
548
+ - problem-specifications/exercises/zipper/metadata.yml
549
+ - problem-specifications/package.json
550
+ - problem-specifications/yarn.lock
545
551
  - trackler.gemspec
546
552
  - tracks/bash/.git
547
553
  - tracks/bash/.gitignore
@@ -570,6 +576,8 @@ files:
570
576
  - tracks/bash/exercises/hello-world/hello_world_test.sh
571
577
  - tracks/bash/exercises/leap/example.sh
572
578
  - tracks/bash/exercises/leap/leap_test.sh
579
+ - tracks/bash/exercises/pangram/example.sh
580
+ - tracks/bash/exercises/pangram/pangram_tests.sh
573
581
  - tracks/bash/exercises/raindrops/example.sh
574
582
  - tracks/bash/exercises/raindrops/raindrops_test.sh
575
583
  - tracks/bash/exercises/rna-transcription/example.sh
@@ -591,6 +599,13 @@ files:
591
599
  - tracks/c/docs/LEARNING.md
592
600
  - tracks/c/docs/RESOURCES.md
593
601
  - tracks/c/docs/TESTS.md
602
+ - tracks/c/exercises/acronym/makefile
603
+ - tracks/c/exercises/acronym/src/example.c
604
+ - tracks/c/exercises/acronym/src/example.h
605
+ - tracks/c/exercises/acronym/test/test_acronym.c
606
+ - tracks/c/exercises/acronym/test/vendor/unity.c
607
+ - tracks/c/exercises/acronym/test/vendor/unity.h
608
+ - tracks/c/exercises/acronym/test/vendor/unity_internals.h
594
609
  - tracks/c/exercises/allergies/makefile
595
610
  - tracks/c/exercises/allergies/src/allergies.h
596
611
  - tracks/c/exercises/allergies/src/example.c
@@ -684,6 +699,13 @@ files:
684
699
  - tracks/c/exercises/hello-world/test/vendor/unity.c
685
700
  - tracks/c/exercises/hello-world/test/vendor/unity.h
686
701
  - tracks/c/exercises/hello-world/test/vendor/unity_internals.h
702
+ - tracks/c/exercises/isogram/makefile
703
+ - tracks/c/exercises/isogram/src/example.c
704
+ - tracks/c/exercises/isogram/src/example.h
705
+ - tracks/c/exercises/isogram/test/test_isogram.c
706
+ - tracks/c/exercises/isogram/test/vendor/unity.c
707
+ - tracks/c/exercises/isogram/test/vendor/unity.h
708
+ - tracks/c/exercises/isogram/test/vendor/unity_internals.h
687
709
  - tracks/c/exercises/largest-series-product/makefile
688
710
  - tracks/c/exercises/largest-series-product/src/example.c
689
711
  - tracks/c/exercises/largest-series-product/src/example.h
@@ -890,6 +912,21 @@ files:
890
912
  - tracks/ceylon/exercises/sieve/source/sieve/SieveTest.ceylon
891
913
  - tracks/ceylon/exercises/sieve/source/sieve/module.ceylon
892
914
  - tracks/ceylon/img/icon.png
915
+ - tracks/chapel/.git
916
+ - tracks/chapel/.gitignore
917
+ - tracks/chapel/.travis.yml
918
+ - tracks/chapel/LICENSE
919
+ - tracks/chapel/README.md
920
+ - tracks/chapel/bin/fetch-configlet
921
+ - tracks/chapel/config.json
922
+ - tracks/chapel/docs/ABOUT.md
923
+ - tracks/chapel/docs/EXERCISE_README_INSERT.md
924
+ - tracks/chapel/docs/INSTALLATION.md
925
+ - tracks/chapel/docs/LEARNING.md
926
+ - tracks/chapel/docs/RESOURCES.md
927
+ - tracks/chapel/docs/TESTS.md
928
+ - tracks/chapel/exercises/.keep
929
+ - tracks/chapel/img/.keep
893
930
  - tracks/clojure/.git
894
931
  - tracks/clojure/.gitignore
895
932
  - tracks/clojure/.travis.yml
@@ -1225,6 +1262,10 @@ files:
1225
1262
  - tracks/cpp/docs/LEARNING.md
1226
1263
  - tracks/cpp/docs/RESOURCES.md
1227
1264
  - tracks/cpp/docs/TESTS.md
1265
+ - tracks/cpp/exercises/allergies/CMakeLists.txt
1266
+ - tracks/cpp/exercises/allergies/allergies_test.cpp
1267
+ - tracks/cpp/exercises/allergies/example.cpp
1268
+ - tracks/cpp/exercises/allergies/example.h
1228
1269
  - tracks/cpp/exercises/anagram/CMakeLists.txt
1229
1270
  - tracks/cpp/exercises/anagram/anagram_test.cpp
1230
1271
  - tracks/cpp/exercises/anagram/example.cpp
@@ -1935,71 +1976,181 @@ files:
1935
1976
  - tracks/csharp/exercises/zipper/Zipper.cs
1936
1977
  - tracks/csharp/exercises/zipper/Zipper.csproj
1937
1978
  - tracks/csharp/exercises/zipper/ZipperTest.cs
1938
- - tracks/csharp/generators/Classes/TestClass.cs
1939
- - tracks/csharp/generators/Classes/TestClassNameTransformer.cs
1940
- - tracks/csharp/generators/Classes/TestClassRenderer.cs
1941
- - tracks/csharp/generators/Classes/TestedClassNameTransformer.cs
1942
- - tracks/csharp/generators/Data/CanonicalData.cs
1943
- - tracks/csharp/generators/Data/CanonicalDataCase.cs
1944
- - tracks/csharp/generators/Data/CanonicalDataCaseJsonConverter.cs
1945
- - tracks/csharp/generators/Data/CanonicalDataCasesJsonConverter.cs
1946
- - tracks/csharp/generators/Data/CanonicalDataParser.cs
1947
- - tracks/csharp/generators/Data/CanonicalDataValue.cs
1948
- - tracks/csharp/generators/Data/ExerciseCollection.cs
1949
- - tracks/csharp/generators/Exercises/AcronymExercise.cs
1950
- - tracks/csharp/generators/Exercises/AtbashCipherExercise.cs
1951
- - tracks/csharp/generators/Exercises/BeerSongExercise.cs
1979
+ - tracks/csharp/generators/Exercise.cs
1980
+ - tracks/csharp/generators/ExerciseCollection.cs
1981
+ - tracks/csharp/generators/Exercises/Acronym.cs
1982
+ - tracks/csharp/generators/Exercises/AllYourBase.cs
1983
+ - tracks/csharp/generators/Exercises/AtbashCipher.cs
1984
+ - tracks/csharp/generators/Exercises/BeerSong.cs
1952
1985
  - tracks/csharp/generators/Exercises/Bob.cs
1953
- - tracks/csharp/generators/Exercises/BooleanExercise.cs
1954
- - tracks/csharp/generators/Exercises/EqualityExercise.cs
1955
- - tracks/csharp/generators/Exercises/Exercise.cs
1956
- - tracks/csharp/generators/Exercises/FoodChainExercise.cs
1957
- - tracks/csharp/generators/Exercises/HelloWorldExercise.cs
1958
- - tracks/csharp/generators/Exercises/IsogramExercise.cs
1959
- - tracks/csharp/generators/Exercises/LeapExercise.cs
1960
- - tracks/csharp/generators/Exercises/LuhnExercise.cs
1961
- - tracks/csharp/generators/Exercises/NthPrimeExercise.cs
1962
- - tracks/csharp/generators/Exercises/PerfectNumbersExercise.cs
1963
- - tracks/csharp/generators/Exercises/PigLatinExercise.cs
1964
- - tracks/csharp/generators/Exercises/RaindropsExercise.cs
1965
- - tracks/csharp/generators/Exercises/RomanNumeralsExercise.cs
1966
- - tracks/csharp/generators/Exercises/RotationalCipherExercise.cs
1967
- - tracks/csharp/generators/Exercises/WordyExercise.cs
1986
+ - tracks/csharp/generators/Exercises/BookStore.cs
1987
+ - tracks/csharp/generators/Exercises/FoodChain.cs
1988
+ - tracks/csharp/generators/Exercises/HelloWorld.cs
1989
+ - tracks/csharp/generators/Exercises/Isogram.cs
1990
+ - tracks/csharp/generators/Exercises/Leap.cs
1991
+ - tracks/csharp/generators/Exercises/Luhn.cs
1992
+ - tracks/csharp/generators/Exercises/NthPrime.cs
1993
+ - tracks/csharp/generators/Exercises/PerfectNumbers.cs
1994
+ - tracks/csharp/generators/Exercises/PigLatin.cs
1995
+ - tracks/csharp/generators/Exercises/Raindrops.cs
1996
+ - tracks/csharp/generators/Exercises/RomanNumerals.cs
1997
+ - tracks/csharp/generators/Exercises/RotationalCipher.cs
1998
+ - tracks/csharp/generators/Exercises/Transpose.cs
1999
+ - tracks/csharp/generators/Exercises/Wordy.cs
1968
2000
  - tracks/csharp/generators/Generators.csproj
1969
2001
  - tracks/csharp/generators/Generators.csproj.user
1970
2002
  - tracks/csharp/generators/Generators.sln
1971
- - tracks/csharp/generators/Helpers/StringExtensions.cs
1972
- - tracks/csharp/generators/Helpers/To.cs
1973
- - tracks/csharp/generators/Methods/BooleanTestMethodGenerator.cs
1974
- - tracks/csharp/generators/Methods/EqualityTestMethodGenerator.cs
1975
- - tracks/csharp/generators/Methods/ExceptionTestMethodGenerator.cs
1976
- - tracks/csharp/generators/Methods/TestMethod.cs
1977
- - tracks/csharp/generators/Methods/TestMethodData.cs
1978
- - tracks/csharp/generators/Methods/TestMethodGenerator.cs
1979
- - tracks/csharp/generators/Methods/TestMethodNameTransformer.cs
1980
- - tracks/csharp/generators/Methods/TestMethodOptions.cs
1981
- - tracks/csharp/generators/Methods/TestMethodRenderer.cs
1982
- - tracks/csharp/generators/Methods/TestedMethodNameTransformer.cs
1983
- - tracks/csharp/generators/Methods/TestedMethodType.cs
2003
+ - tracks/csharp/generators/Input/CanonicalData.cs
2004
+ - tracks/csharp/generators/Input/CanonicalDataCase.cs
2005
+ - tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
2006
+ - tracks/csharp/generators/Input/CanonicalDataCasesJsonConverter.cs
2007
+ - tracks/csharp/generators/Input/CanonicalDataParser.cs
2008
+ - tracks/csharp/generators/Output/BooleanTestMethodGenerator.cs
2009
+ - tracks/csharp/generators/Output/EqualityTestMethodGenerator.cs
2010
+ - tracks/csharp/generators/Output/ExceptionTestMethodGenerator.cs
2011
+ - tracks/csharp/generators/Output/NameExtensions.cs
2012
+ - tracks/csharp/generators/Output/TestClass.cs
2013
+ - tracks/csharp/generators/Output/TestClass.liquid
2014
+ - tracks/csharp/generators/Output/TestClassFile.cs
2015
+ - tracks/csharp/generators/Output/TestClassGenerator.cs
2016
+ - tracks/csharp/generators/Output/TestClassRenderer.cs
2017
+ - tracks/csharp/generators/Output/TestMethod.cs
2018
+ - tracks/csharp/generators/Output/TestMethodGenerator.cs
2019
+ - tracks/csharp/generators/Output/UnescapedValue.cs
2020
+ - tracks/csharp/generators/Output/ValueFormatter.cs
1984
2021
  - tracks/csharp/generators/Program.cs
2022
+ - tracks/csharp/generators/Properties/launchSettings.json
2023
+ - tracks/csharp/generators/TestedMethodType.cs
1985
2024
  - tracks/csharp/generators/generate.ps1
1986
2025
  - tracks/csharp/generators/generate.sh
1987
2026
  - tracks/csharp/img/icon.png
1988
- - tracks/dartlang/.git
1989
- - tracks/dartlang/.github/PULL_REQUEST_TEMPLATE.md
1990
- - tracks/dartlang/.gitignore
1991
- - tracks/dartlang/.travis.yml
1992
- - tracks/dartlang/LICENSE
1993
- - tracks/dartlang/README.md
1994
- - tracks/dartlang/bin/fetch-configlet
1995
- - tracks/dartlang/config.json
1996
- - tracks/dartlang/docs/ABOUT.md
1997
- - tracks/dartlang/docs/EXERCISE_README_INSERT.md
1998
- - tracks/dartlang/docs/INSTALLATION.md
1999
- - tracks/dartlang/docs/LEARNING.md
2000
- - tracks/dartlang/docs/RESOURCES.md
2001
- - tracks/dartlang/docs/TESTS.md
2002
- - tracks/dartlang/img/.keep
2027
+ - tracks/d/.git
2028
+ - tracks/d/.gitignore
2029
+ - tracks/d/.travis.yml
2030
+ - tracks/d/LICENSE
2031
+ - tracks/d/README.md
2032
+ - tracks/d/bin/fetch-configlet
2033
+ - tracks/d/bin/test-all-exercises
2034
+ - tracks/d/bin/test-exercise
2035
+ - tracks/d/config.json
2036
+ - tracks/d/docs/ABOUT.md
2037
+ - tracks/d/docs/EXERCISE_README_INSERT.md
2038
+ - tracks/d/docs/INSTALLATION.md
2039
+ - tracks/d/docs/LEARNING.md
2040
+ - tracks/d/docs/RESOURCES.md
2041
+ - tracks/d/docs/TESTS.md
2042
+ - tracks/d/exercises/bob/dub.sdl
2043
+ - tracks/d/exercises/bob/example/bob.d
2044
+ - tracks/d/exercises/bob/source/bob.d
2045
+ - tracks/d/exercises/circular-buffer/dub.sdl
2046
+ - tracks/d/exercises/circular-buffer/example/circular_buffer.d
2047
+ - tracks/d/exercises/circular-buffer/source/circular_buffer.d
2048
+ - tracks/d/exercises/crypto-square/dub.sdl
2049
+ - tracks/d/exercises/crypto-square/example/crypto_square.d
2050
+ - tracks/d/exercises/crypto-square/source/crypto_square.d
2051
+ - tracks/d/exercises/difference-of-squares/dub.sdl
2052
+ - tracks/d/exercises/difference-of-squares/example/difference_of_squares.d
2053
+ - tracks/d/exercises/difference-of-squares/source/difference_of_squares.d
2054
+ - tracks/d/exercises/etl/dub.sdl
2055
+ - tracks/d/exercises/etl/example/etl.d
2056
+ - tracks/d/exercises/etl/source/etl.d
2057
+ - tracks/d/exercises/gigasecond/dub.sdl
2058
+ - tracks/d/exercises/gigasecond/example/gigasecond.d
2059
+ - tracks/d/exercises/gigasecond/source/gigasecond.d
2060
+ - tracks/d/exercises/hamming/dub.sdl
2061
+ - tracks/d/exercises/hamming/example/hamming.d
2062
+ - tracks/d/exercises/hamming/source/hamming.d
2063
+ - tracks/d/exercises/hello-world/dub.sdl
2064
+ - tracks/d/exercises/hello-world/example/hello_world.d
2065
+ - tracks/d/exercises/hello-world/source/hello_world.d
2066
+ - tracks/d/exercises/leap/dub.sdl
2067
+ - tracks/d/exercises/leap/example/leap.d
2068
+ - tracks/d/exercises/leap/source/leap.d
2069
+ - tracks/d/exercises/nucleotide-count/dub.sdl
2070
+ - tracks/d/exercises/nucleotide-count/example/nucleotide_count.d
2071
+ - tracks/d/exercises/nucleotide-count/source/nucleotide_count.d
2072
+ - tracks/d/exercises/pangram/dub.sdl
2073
+ - tracks/d/exercises/pangram/example/pangram.d
2074
+ - tracks/d/exercises/pangram/source/pangram.d
2075
+ - tracks/d/exercises/raindrops/dub.sdl
2076
+ - tracks/d/exercises/raindrops/example/raindrops.d
2077
+ - tracks/d/exercises/raindrops/source/raindrops.d
2078
+ - tracks/d/exercises/react/dub.sdl
2079
+ - tracks/d/exercises/react/example/react.d
2080
+ - tracks/d/exercises/react/source/react.d
2081
+ - tracks/d/exercises/rna-transcription/dub.sdl
2082
+ - tracks/d/exercises/rna-transcription/example/rna_transcription.d
2083
+ - tracks/d/exercises/rna-transcription/source/rna_transcription.d
2084
+ - tracks/d/exercises/robot-name/dub.sdl
2085
+ - tracks/d/exercises/robot-name/example/robot_name.d
2086
+ - tracks/d/exercises/robot-name/source/robot_name.d
2087
+ - tracks/d/exercises/roman-numerals/dub.sdl
2088
+ - tracks/d/exercises/roman-numerals/example/roman_numerals.d
2089
+ - tracks/d/exercises/roman-numerals/source/roman_numerals.d
2090
+ - tracks/d/exercises/series/dub.sdl
2091
+ - tracks/d/exercises/series/example/series.d
2092
+ - tracks/d/exercises/series/source/series.d
2093
+ - tracks/d/exercises/triangle/dub.sdl
2094
+ - tracks/d/exercises/triangle/example/triangle.d
2095
+ - tracks/d/exercises/triangle/source/triangle.d
2096
+ - tracks/d/img/icon.png
2097
+ - tracks/dart/.git
2098
+ - tracks/dart/.github/PULL_REQUEST_TEMPLATE.md
2099
+ - tracks/dart/.gitignore
2100
+ - tracks/dart/.travis.yml
2101
+ - tracks/dart/LICENSE
2102
+ - tracks/dart/README.md
2103
+ - tracks/dart/analysis_options.yaml
2104
+ - tracks/dart/bin/fetch-configlet
2105
+ - tracks/dart/config.json
2106
+ - tracks/dart/docs/ABOUT.md
2107
+ - tracks/dart/docs/EXERCISE_README_INSERT.md
2108
+ - tracks/dart/docs/INSTALLATION.md
2109
+ - tracks/dart/docs/LEARNING.md
2110
+ - tracks/dart/docs/RESOURCES.md
2111
+ - tracks/dart/docs/TESTS.md
2112
+ - tracks/dart/exercises/bob/lib/bob.dart
2113
+ - tracks/dart/exercises/bob/lib/example.dart
2114
+ - tracks/dart/exercises/bob/pubspec.lock
2115
+ - tracks/dart/exercises/bob/pubspec.yaml
2116
+ - tracks/dart/exercises/bob/test/bob_test.dart
2117
+ - tracks/dart/exercises/difference-of-squares/lib/difference_of_squares.dart
2118
+ - tracks/dart/exercises/difference-of-squares/lib/example.dart
2119
+ - tracks/dart/exercises/difference-of-squares/pubspec.lock
2120
+ - tracks/dart/exercises/difference-of-squares/pubspec.yaml
2121
+ - tracks/dart/exercises/difference-of-squares/test/difference_of_squares_test.dart
2122
+ - tracks/dart/exercises/gigasecond/lib/example.dart
2123
+ - tracks/dart/exercises/gigasecond/lib/gigasecond.dart
2124
+ - tracks/dart/exercises/gigasecond/pubspec.lock
2125
+ - tracks/dart/exercises/gigasecond/pubspec.yaml
2126
+ - tracks/dart/exercises/gigasecond/test/gigasecond_test.dart
2127
+ - tracks/dart/exercises/hamming/lib/example.dart
2128
+ - tracks/dart/exercises/hamming/lib/hamming.dart
2129
+ - tracks/dart/exercises/hamming/pubspec.lock
2130
+ - tracks/dart/exercises/hamming/pubspec.yaml
2131
+ - tracks/dart/exercises/hamming/test/hamming_test.dart
2132
+ - tracks/dart/exercises/hello-world/lib/example.dart
2133
+ - tracks/dart/exercises/hello-world/lib/hello_world.dart
2134
+ - tracks/dart/exercises/hello-world/pubspec.lock
2135
+ - tracks/dart/exercises/hello-world/pubspec.yaml
2136
+ - tracks/dart/exercises/hello-world/test/hello_world_test.dart
2137
+ - tracks/dart/exercises/leap/lib/example.dart
2138
+ - tracks/dart/exercises/leap/lib/leap.dart
2139
+ - tracks/dart/exercises/leap/pubspec.lock
2140
+ - tracks/dart/exercises/leap/pubspec.yaml
2141
+ - tracks/dart/exercises/leap/test/leap_test.dart
2142
+ - tracks/dart/exercises/rna-transcription/lib/example.dart
2143
+ - tracks/dart/exercises/rna-transcription/lib/rna_transcription.dart
2144
+ - tracks/dart/exercises/rna-transcription/pubspec.lock
2145
+ - tracks/dart/exercises/rna-transcription/pubspec.yaml
2146
+ - tracks/dart/exercises/rna-transcription/test/rna_transcription_test.dart
2147
+ - tracks/dart/img/.keep
2148
+ - tracks/dart/img/icon.png
2149
+ - tracks/dart/img/icon.svg
2150
+ - tracks/dart/pubspec.lock
2151
+ - tracks/dart/pubspec.yaml
2152
+ - tracks/dart/test/exercises_test.dart
2153
+ - tracks/dart/tool/create-exercise
2003
2154
  - tracks/delphi/.git
2004
2155
  - tracks/delphi/.github/stale.yml
2005
2156
  - tracks/delphi/.gitignore
@@ -2110,76 +2261,7 @@ files:
2110
2261
  - tracks/delphi/exercises/two-fer/utwoferTest.pas
2111
2262
  - tracks/delphi/img/.keep
2112
2263
  - tracks/delphi/img/icon.png
2113
- - tracks/dlang/.git
2114
- - tracks/dlang/.gitignore
2115
- - tracks/dlang/.travis.yml
2116
- - tracks/dlang/LICENSE
2117
- - tracks/dlang/README.md
2118
- - tracks/dlang/bin/fetch-configlet
2119
- - tracks/dlang/bin/test-all-exercises
2120
- - tracks/dlang/bin/test-exercise
2121
- - tracks/dlang/config.json
2122
- - tracks/dlang/docs/ABOUT.md
2123
- - tracks/dlang/docs/EXERCISE_README_INSERT.md
2124
- - tracks/dlang/docs/INSTALLATION.md
2125
- - tracks/dlang/docs/LEARNING.md
2126
- - tracks/dlang/docs/RESOURCES.md
2127
- - tracks/dlang/docs/TESTS.md
2128
- - tracks/dlang/exercises/bob/dub.sdl
2129
- - tracks/dlang/exercises/bob/example/bob.d
2130
- - tracks/dlang/exercises/bob/source/bob.d
2131
- - tracks/dlang/exercises/circular-buffer/dub.sdl
2132
- - tracks/dlang/exercises/circular-buffer/example/circular_buffer.d
2133
- - tracks/dlang/exercises/circular-buffer/source/circular_buffer.d
2134
- - tracks/dlang/exercises/crypto-square/dub.sdl
2135
- - tracks/dlang/exercises/crypto-square/example/crypto_square.d
2136
- - tracks/dlang/exercises/crypto-square/source/crypto_square.d
2137
- - tracks/dlang/exercises/difference-of-squares/dub.sdl
2138
- - tracks/dlang/exercises/difference-of-squares/example/difference_of_squares.d
2139
- - tracks/dlang/exercises/difference-of-squares/source/difference_of_squares.d
2140
- - tracks/dlang/exercises/etl/dub.sdl
2141
- - tracks/dlang/exercises/etl/example/etl.d
2142
- - tracks/dlang/exercises/etl/source/etl.d
2143
- - tracks/dlang/exercises/gigasecond/dub.sdl
2144
- - tracks/dlang/exercises/gigasecond/example/gigasecond.d
2145
- - tracks/dlang/exercises/gigasecond/source/gigasecond.d
2146
- - tracks/dlang/exercises/hamming/dub.sdl
2147
- - tracks/dlang/exercises/hamming/example/hamming.d
2148
- - tracks/dlang/exercises/hamming/source/hamming.d
2149
- - tracks/dlang/exercises/hello-world/dub.sdl
2150
- - tracks/dlang/exercises/hello-world/example/hello_world.d
2151
- - tracks/dlang/exercises/hello-world/source/hello_world.d
2152
- - tracks/dlang/exercises/leap/dub.sdl
2153
- - tracks/dlang/exercises/leap/example/leap.d
2154
- - tracks/dlang/exercises/leap/source/leap.d
2155
- - tracks/dlang/exercises/nucleotide-count/dub.sdl
2156
- - tracks/dlang/exercises/nucleotide-count/example/nucleotide_count.d
2157
- - tracks/dlang/exercises/nucleotide-count/source/nucleotide_count.d
2158
- - tracks/dlang/exercises/pangram/dub.sdl
2159
- - tracks/dlang/exercises/pangram/example/pangram.d
2160
- - tracks/dlang/exercises/pangram/source/pangram.d
2161
- - tracks/dlang/exercises/raindrops/dub.sdl
2162
- - tracks/dlang/exercises/raindrops/example/raindrops.d
2163
- - tracks/dlang/exercises/raindrops/source/raindrops.d
2164
- - tracks/dlang/exercises/react/dub.sdl
2165
- - tracks/dlang/exercises/react/example/react.d
2166
- - tracks/dlang/exercises/react/source/react.d
2167
- - tracks/dlang/exercises/rna-transcription/dub.sdl
2168
- - tracks/dlang/exercises/rna-transcription/example/rna_transcription.d
2169
- - tracks/dlang/exercises/rna-transcription/source/rna_transcription.d
2170
- - tracks/dlang/exercises/robot-name/dub.sdl
2171
- - tracks/dlang/exercises/robot-name/example/robot_name.d
2172
- - tracks/dlang/exercises/robot-name/source/robot_name.d
2173
- - tracks/dlang/exercises/roman-numerals/dub.sdl
2174
- - tracks/dlang/exercises/roman-numerals/example/roman_numerals.d
2175
- - tracks/dlang/exercises/roman-numerals/source/roman_numerals.d
2176
- - tracks/dlang/exercises/series/dub.sdl
2177
- - tracks/dlang/exercises/series/example/series.d
2178
- - tracks/dlang/exercises/series/source/series.d
2179
- - tracks/dlang/exercises/triangle/dub.sdl
2180
- - tracks/dlang/exercises/triangle/example/triangle.d
2181
- - tracks/dlang/exercises/triangle/source/triangle.d
2182
- - tracks/dlang/img/icon.png
2264
+ - tracks/ecmascript/.babelrc
2183
2265
  - tracks/ecmascript/.editorconfig
2184
2266
  - tracks/ecmascript/.git
2185
2267
  - tracks/ecmascript/.github/stale.yml
@@ -2209,6 +2291,9 @@ files:
2209
2291
  - tracks/ecmascript/exercises/allergies/allergies.spec.js
2210
2292
  - tracks/ecmascript/exercises/allergies/example.js
2211
2293
  - tracks/ecmascript/exercises/allergies/package.json
2294
+ - tracks/ecmascript/exercises/alphametics/alphametics.spec.js
2295
+ - tracks/ecmascript/exercises/alphametics/example.js
2296
+ - tracks/ecmascript/exercises/alphametics/package.json
2212
2297
  - tracks/ecmascript/exercises/anagram/anagram.spec.js
2213
2298
  - tracks/ecmascript/exercises/anagram/example.js
2214
2299
  - tracks/ecmascript/exercises/anagram/package.json
@@ -2258,6 +2343,9 @@ files:
2258
2343
  - tracks/ecmascript/exercises/etl/etl.spec.js
2259
2344
  - tracks/ecmascript/exercises/etl/example.js
2260
2345
  - tracks/ecmascript/exercises/etl/package.json
2346
+ - tracks/ecmascript/exercises/flatten-array/example.js
2347
+ - tracks/ecmascript/exercises/flatten-array/flatten-array.spec.js
2348
+ - tracks/ecmascript/exercises/flatten-array/package.json
2261
2349
  - tracks/ecmascript/exercises/food-chain/example.js
2262
2350
  - tracks/ecmascript/exercises/food-chain/food-chain.spec.js
2263
2351
  - tracks/ecmascript/exercises/food-chain/package.json
@@ -2297,6 +2385,9 @@ files:
2297
2385
  - tracks/ecmascript/exercises/linked-list/example.js
2298
2386
  - tracks/ecmascript/exercises/linked-list/linked-list.spec.js
2299
2387
  - tracks/ecmascript/exercises/linked-list/package.json
2388
+ - tracks/ecmascript/exercises/list-ops/example.js
2389
+ - tracks/ecmascript/exercises/list-ops/list-ops.spec.js
2390
+ - tracks/ecmascript/exercises/list-ops/package.json
2300
2391
  - tracks/ecmascript/exercises/luhn/example.js
2301
2392
  - tracks/ecmascript/exercises/luhn/luhn.spec.js
2302
2393
  - tracks/ecmascript/exercises/luhn/package.json
@@ -2404,6 +2495,7 @@ files:
2404
2495
  - tracks/ecmascript/exercises/wordy/package.json
2405
2496
  - tracks/ecmascript/exercises/wordy/wordy.spec.js
2406
2497
  - tracks/ecmascript/img/icon.png
2498
+ - tracks/ecmascript/package-lock.json
2407
2499
  - tracks/ecmascript/package.json
2408
2500
  - tracks/ecmascript/yarn.lock
2409
2501
  - tracks/elisp/.git
@@ -2544,6 +2636,9 @@ files:
2544
2636
  - tracks/elixir/exercises/clock/clock.exs
2545
2637
  - tracks/elixir/exercises/clock/clock_test.exs
2546
2638
  - tracks/elixir/exercises/clock/example.exs
2639
+ - tracks/elixir/exercises/collatz-conjecture/collatz_conjecture.exs
2640
+ - tracks/elixir/exercises/collatz-conjecture/collatz_conjecture_test.exs
2641
+ - tracks/elixir/exercises/collatz-conjecture/example.exs
2547
2642
  - tracks/elixir/exercises/connect/connect.exs
2548
2643
  - tracks/elixir/exercises/connect/connect_test.exs
2549
2644
  - tracks/elixir/exercises/connect/example.exs
@@ -3777,6 +3872,7 @@ files:
3777
3872
  - tracks/go/exercises/wordy/example.go
3778
3873
  - tracks/go/exercises/wordy/wordy_test.go
3779
3874
  - tracks/go/gen/gen.go
3875
+ - tracks/go/gen/property.go
3780
3876
  - tracks/go/img/icon.png
3781
3877
  - tracks/go/img/mars1.png
3782
3878
  - tracks/go/img/mars2.png
@@ -3819,7 +3915,8 @@ files:
3819
3915
  - tracks/groovy/exercises/robot-name/Example.groovy
3820
3916
  - tracks/groovy/exercises/robot-name/RobotSpec.groovy
3821
3917
  - tracks/groovy/exercises/roman-numerals/Example.groovy
3822
- - tracks/groovy/exercises/roman-numerals/RomanTest.groovy
3918
+ - tracks/groovy/exercises/roman-numerals/Roman.groovy
3919
+ - tracks/groovy/exercises/roman-numerals/RomanSpec.groovy
3823
3920
  - tracks/groovy/exercises/word-count/Example.groovy
3824
3921
  - tracks/groovy/exercises/word-count/PhraseTest.groovy
3825
3922
  - tracks/groovy/img/icon.png
@@ -4313,6 +4410,12 @@ files:
4313
4410
  - tracks/haskell/exercises/space-age/src/SpaceAge.hs
4314
4411
  - tracks/haskell/exercises/space-age/stack.yaml
4315
4412
  - tracks/haskell/exercises/space-age/test/Tests.hs
4413
+ - tracks/haskell/exercises/spiral-matrix/examples/success-standard/package.yaml
4414
+ - tracks/haskell/exercises/spiral-matrix/examples/success-standard/src/Spiral.hs
4415
+ - tracks/haskell/exercises/spiral-matrix/package.yaml
4416
+ - tracks/haskell/exercises/spiral-matrix/src/Spiral.hs
4417
+ - tracks/haskell/exercises/spiral-matrix/stack.yaml
4418
+ - tracks/haskell/exercises/spiral-matrix/test/Tests.hs
4316
4419
  - tracks/haskell/exercises/strain/examples/fail-reverse/package.yaml
4317
4420
  - tracks/haskell/exercises/strain/examples/fail-reverse/src/Strain.hs
4318
4421
  - tracks/haskell/exercises/strain/examples/success-standard/package.yaml
@@ -4439,6 +4542,7 @@ files:
4439
4542
  - tracks/java/.gitignore
4440
4543
  - tracks/java/.keep
4441
4544
  - tracks/java/.travis.yml
4545
+ - tracks/java/CONTRIBUTING.md
4442
4546
  - tracks/java/LICENSE
4443
4547
  - tracks/java/POLICIES.md
4444
4548
  - tracks/java/README.md
@@ -4486,6 +4590,12 @@ files:
4486
4590
  - tracks/java/exercises/atbash-cipher/src/example/java/Atbash.java
4487
4591
  - tracks/java/exercises/atbash-cipher/src/main/java/.keep
4488
4592
  - tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java
4593
+ - tracks/java/exercises/bank-account/HINTS.md
4594
+ - tracks/java/exercises/bank-account/build.gradle
4595
+ - tracks/java/exercises/bank-account/src/example/java/BankAccount.java
4596
+ - tracks/java/exercises/bank-account/src/example/java/BankAccountActionInvalidException.java
4597
+ - tracks/java/exercises/bank-account/src/main/java/BankAccountActionInvalidException.java
4598
+ - tracks/java/exercises/bank-account/src/test/java/BankAccountTest.java
4489
4599
  - tracks/java/exercises/beer-song/build.gradle
4490
4600
  - tracks/java/exercises/beer-song/src/example/java/BeerSong.java
4491
4601
  - tracks/java/exercises/beer-song/src/main/java/BeerSong.java
@@ -4522,7 +4632,7 @@ files:
4522
4632
  - tracks/java/exercises/change/src/example/java/ChangeCalculator.java
4523
4633
  - tracks/java/exercises/change/src/main/java/ChangeCalculator.java
4524
4634
  - tracks/java/exercises/change/src/test/java/ChangeCalculatorTest.java
4525
- - tracks/java/exercises/clock/HINT.md
4635
+ - tracks/java/exercises/clock/HINTS.md
4526
4636
  - tracks/java/exercises/clock/build.gradle
4527
4637
  - tracks/java/exercises/clock/src/example/java/Clock.java
4528
4638
  - tracks/java/exercises/clock/src/main/java/.keep
@@ -4557,6 +4667,10 @@ files:
4557
4667
  - tracks/java/exercises/flatten-array/src/example/java/Flattener.java
4558
4668
  - tracks/java/exercises/flatten-array/src/main/java/Flattener.java
4559
4669
  - tracks/java/exercises/flatten-array/src/test/java/FlattenerTest.java
4670
+ - tracks/java/exercises/food-chain/build.gradle
4671
+ - tracks/java/exercises/food-chain/src/example/java/FoodChain.java
4672
+ - tracks/java/exercises/food-chain/src/main/java/.keep
4673
+ - tracks/java/exercises/food-chain/src/test/java/FoodChainTest.java
4560
4674
  - tracks/java/exercises/gigasecond/build.gradle
4561
4675
  - tracks/java/exercises/gigasecond/src/example/java/Gigasecond.java
4562
4676
  - tracks/java/exercises/gigasecond/src/main/java/Gigasecond.java
@@ -4569,18 +4683,17 @@ files:
4569
4683
  - tracks/java/exercises/hamming/src/example/java/Hamming.java
4570
4684
  - tracks/java/exercises/hamming/src/main/java/Hamming.java
4571
4685
  - tracks/java/exercises/hamming/src/test/java/HammingTest.java
4572
- - tracks/java/exercises/hello-world/GETTING_STARTED.md
4573
- - tracks/java/exercises/hello-world/HINT.md
4686
+ - tracks/java/exercises/hello-world/HINTS.md
4574
4687
  - tracks/java/exercises/hello-world/TUTORIAL.md
4575
4688
  - tracks/java/exercises/hello-world/build.gradle
4576
- - tracks/java/exercises/hello-world/src/example/java/HelloWorld.java
4577
- - tracks/java/exercises/hello-world/src/main/java/HelloWorld.java
4578
- - tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java
4689
+ - tracks/java/exercises/hello-world/src/example/java/Greeter.java
4690
+ - tracks/java/exercises/hello-world/src/main/java/Greeter.java
4691
+ - tracks/java/exercises/hello-world/src/test/java/GreeterTest.java
4579
4692
  - tracks/java/exercises/hexadecimal/build.gradle
4580
4693
  - tracks/java/exercises/hexadecimal/src/example/java/Hexadecimal.java
4581
4694
  - tracks/java/exercises/hexadecimal/src/main/java/.keep
4582
4695
  - tracks/java/exercises/hexadecimal/src/test/java/HexadecimalTest.java
4583
- - tracks/java/exercises/isogram/HINT.md
4696
+ - tracks/java/exercises/isogram/HINTS.md
4584
4697
  - tracks/java/exercises/isogram/build.gradle
4585
4698
  - tracks/java/exercises/isogram/src/example/java/IsogramChecker.java
4586
4699
  - tracks/java/exercises/isogram/src/main/java/.keep
@@ -4663,6 +4776,12 @@ files:
4663
4776
  - tracks/java/exercises/pig-latin/src/example/java/PigLatinTranslator.java
4664
4777
  - tracks/java/exercises/pig-latin/src/main/java/.keep
4665
4778
  - tracks/java/exercises/pig-latin/src/test/java/PigLatinTranslatorTest.java
4779
+ - tracks/java/exercises/poker/build.gradle
4780
+ - tracks/java/exercises/poker/src/example/java/Card.java
4781
+ - tracks/java/exercises/poker/src/example/java/Hand.java
4782
+ - tracks/java/exercises/poker/src/example/java/Poker.java
4783
+ - tracks/java/exercises/poker/src/main/java/Poker.java
4784
+ - tracks/java/exercises/poker/src/test/java/PokerTest.java
4666
4785
  - tracks/java/exercises/prime-factors/build.gradle
4667
4786
  - tracks/java/exercises/prime-factors/src/example/java/PrimeFactorsCalculator.java
4668
4787
  - tracks/java/exercises/prime-factors/src/main/java/.keep
@@ -4734,7 +4853,7 @@ files:
4734
4853
  - tracks/java/exercises/sieve/src/example/java/Sieve.java
4735
4854
  - tracks/java/exercises/sieve/src/main/java/.keep
4736
4855
  - tracks/java/exercises/sieve/src/test/java/SieveTest.java
4737
- - tracks/java/exercises/simple-cipher/HINT.md
4856
+ - tracks/java/exercises/simple-cipher/HINTS.md
4738
4857
  - tracks/java/exercises/simple-cipher/build.gradle
4739
4858
  - tracks/java/exercises/simple-cipher/src/example/java/Cipher.java
4740
4859
  - tracks/java/exercises/simple-cipher/src/main/java/.keep
@@ -4763,6 +4882,10 @@ files:
4763
4882
  - tracks/java/exercises/sum-of-multiples/src/example/java/SumOfMultiples.java
4764
4883
  - tracks/java/exercises/sum-of-multiples/src/main/java/SumOfMultiples.java
4765
4884
  - tracks/java/exercises/sum-of-multiples/src/test/java/SumOfMultiplesTest.java
4885
+ - tracks/java/exercises/transpose/build.gradle
4886
+ - tracks/java/exercises/transpose/src/example/java/Transpose.java
4887
+ - tracks/java/exercises/transpose/src/main/java/.keep
4888
+ - tracks/java/exercises/transpose/src/test/java/TransposeTest.java
4766
4889
  - tracks/java/exercises/triangle/build.gradle
4767
4890
  - tracks/java/exercises/triangle/src/example/java/Triangle.java
4768
4891
  - tracks/java/exercises/triangle/src/example/java/TriangleException.java
@@ -4779,6 +4902,11 @@ files:
4779
4902
  - tracks/java/exercises/twelve-days/src/example/java/TwelveDays.java
4780
4903
  - tracks/java/exercises/twelve-days/src/main/java/.keep
4781
4904
  - tracks/java/exercises/twelve-days/src/test/java/TwelveDaysTest.java
4905
+ - tracks/java/exercises/two-fer/HINTS.md
4906
+ - tracks/java/exercises/two-fer/build.gradle
4907
+ - tracks/java/exercises/two-fer/src/example/java/Twofer.java
4908
+ - tracks/java/exercises/two-fer/src/main/java/Twofer.java
4909
+ - tracks/java/exercises/two-fer/src/test/java/TwoferTest.java
4782
4910
  - tracks/java/exercises/word-count/build.gradle
4783
4911
  - tracks/java/exercises/word-count/src/example/java/WordCount.java
4784
4912
  - tracks/java/exercises/word-count/src/main/java/WordCount.java
@@ -4960,6 +5088,8 @@ files:
4960
5088
  - tracks/javascript/exercises/sieve/sieve.spec.js
4961
5089
  - tracks/javascript/exercises/simple-cipher/example.js
4962
5090
  - tracks/javascript/exercises/simple-cipher/simple-cipher.spec.js
5091
+ - tracks/javascript/exercises/simple-linked-list/example.js
5092
+ - tracks/javascript/exercises/simple-linked-list/simple-linked-list.spec.js
4963
5093
  - tracks/javascript/exercises/space-age/example.js
4964
5094
  - tracks/javascript/exercises/space-age/space-age.spec.js
4965
5095
  - tracks/javascript/exercises/strain/example.js
@@ -5000,6 +5130,10 @@ files:
5000
5130
  - tracks/julia/exercises/bob/bob.jl
5001
5131
  - tracks/julia/exercises/bob/example.jl
5002
5132
  - tracks/julia/exercises/bob/runtests.jl
5133
+ - tracks/julia/exercises/complex-numbers/HINTS.md
5134
+ - tracks/julia/exercises/complex-numbers/complex-numbers.jl
5135
+ - tracks/julia/exercises/complex-numbers/example.jl
5136
+ - tracks/julia/exercises/complex-numbers/runtests.jl
5003
5137
  - tracks/julia/exercises/custom-set/HINTS.md
5004
5138
  - tracks/julia/exercises/custom-set/custom-set.jl
5005
5139
  - tracks/julia/exercises/custom-set/example.jl
@@ -6363,6 +6497,9 @@ files:
6363
6497
  - tracks/perl5/.travis.yml
6364
6498
  - tracks/perl5/LICENSE
6365
6499
  - tracks/perl5/README.md
6500
+ - tracks/perl5/bin/README.md
6501
+ - tracks/perl5/bin/cpanfile
6502
+ - tracks/perl5/bin/exercise-gen.pl
6366
6503
  - tracks/perl5/bin/fetch-configlet
6367
6504
  - tracks/perl5/config.json
6368
6505
  - tracks/perl5/cpanfile
@@ -6397,6 +6534,7 @@ files:
6397
6534
  - tracks/perl5/exercises/bob/Bob.pm
6398
6535
  - tracks/perl5/exercises/bob/Example.pm
6399
6536
  - tracks/perl5/exercises/bob/bob.t
6537
+ - tracks/perl5/exercises/bob/example.yaml
6400
6538
  - tracks/perl5/exercises/clock/Example.pm
6401
6539
  - tracks/perl5/exercises/clock/clock.t
6402
6540
  - tracks/perl5/exercises/crypto-square/Example.pm
@@ -6418,6 +6556,10 @@ files:
6418
6556
  - tracks/perl5/exercises/grains/grains.t
6419
6557
  - tracks/perl5/exercises/hamming/Example.pm
6420
6558
  - tracks/perl5/exercises/hamming/hamming.t
6559
+ - tracks/perl5/exercises/hello-world/Example.pm
6560
+ - tracks/perl5/exercises/hello-world/HelloWorld.pm
6561
+ - tracks/perl5/exercises/hello-world/example.yaml
6562
+ - tracks/perl5/exercises/hello-world/hello-world.t
6421
6563
  - tracks/perl5/exercises/hexadecimal/Example.pm
6422
6564
  - tracks/perl5/exercises/hexadecimal/hexadecimal.t
6423
6565
  - tracks/perl5/exercises/house/Example.pm
@@ -6427,6 +6569,8 @@ files:
6427
6569
  - tracks/perl5/exercises/largest-series-product/Example.pm
6428
6570
  - tracks/perl5/exercises/largest-series-product/series_product.t
6429
6571
  - tracks/perl5/exercises/leap/Example.pm
6572
+ - tracks/perl5/exercises/leap/Leap.pm
6573
+ - tracks/perl5/exercises/leap/example.yaml
6430
6574
  - tracks/perl5/exercises/leap/leap.t
6431
6575
  - tracks/perl5/exercises/linked-list/Example.pm
6432
6576
  - tracks/perl5/exercises/linked-list/cases.json
@@ -6517,6 +6661,8 @@ files:
6517
6661
  - tracks/perl5/exercises/wordy/cases.json
6518
6662
  - tracks/perl5/exercises/wordy/wordy.t
6519
6663
  - tracks/perl5/img/icon.png
6664
+ - tracks/perl5/templates/module.mustache
6665
+ - tracks/perl5/templates/test.mustache
6520
6666
  - tracks/perl6/.git
6521
6667
  - tracks/perl6/.github/stale.yml
6522
6668
  - tracks/perl6/.gitignore
@@ -7540,6 +7686,10 @@ files:
7540
7686
  - tracks/ruby/exercises/clock/.meta/generator/clock_case.rb
7541
7687
  - tracks/ruby/exercises/clock/.meta/solutions/clock.rb
7542
7688
  - tracks/ruby/exercises/clock/clock_test.rb
7689
+ - tracks/ruby/exercises/collatz-conjecture/.meta/.version
7690
+ - tracks/ruby/exercises/collatz-conjecture/.meta/generator/collatz_conjecture_case.rb
7691
+ - tracks/ruby/exercises/collatz-conjecture/.meta/solutions/collatz_conjecture.rb
7692
+ - tracks/ruby/exercises/collatz-conjecture/collatz_conjecture_test.rb
7543
7693
  - tracks/ruby/exercises/connect/.meta/.version
7544
7694
  - tracks/ruby/exercises/connect/.meta/generator/connect_case.rb
7545
7695
  - tracks/ruby/exercises/connect/.meta/generator/test_template.erb
@@ -7774,6 +7924,7 @@ files:
7774
7924
  - tracks/ruby/lib/generator/files/track_files.rb
7775
7925
  - tracks/ruby/lib/generator/git_command.rb
7776
7926
  - tracks/ruby/lib/generator/implementation.rb
7927
+ - tracks/ruby/lib/generator/repository.rb
7777
7928
  - tracks/ruby/lib/generator/template_values.rb
7778
7929
  - tracks/ruby/lib/generator/test_template.erb
7779
7930
  - tracks/ruby/lib/generator/underscore.rb
@@ -7804,6 +7955,7 @@ files:
7804
7955
  - tracks/ruby/test/generator/files_test.rb
7805
7956
  - tracks/ruby/test/generator/git_command_test.rb
7806
7957
  - tracks/ruby/test/generator/implementation_test.rb
7958
+ - tracks/ruby/test/generator/repository_test.rb
7807
7959
  - tracks/ruby/test/generator/template_values_test.rb
7808
7960
  - tracks/ruby/test/generator/underscore_test.rb
7809
7961
  - tracks/ruby/test/generator_test.rb
@@ -7870,7 +8022,6 @@ files:
7870
8022
  - tracks/rust/exercises/beer-song/src/lib.rs
7871
8023
  - tracks/rust/exercises/beer-song/tests/beer-song.rs
7872
8024
  - tracks/rust/exercises/bob/.gitignore
7873
- - tracks/rust/exercises/bob/Cargo.lock
7874
8025
  - tracks/rust/exercises/bob/Cargo.toml
7875
8026
  - tracks/rust/exercises/bob/example.rs
7876
8027
  - tracks/rust/exercises/bob/src/lib.rs
@@ -8550,6 +8701,7 @@ files:
8550
8701
  - tracks/scala/testgen/project/plugins.sbt
8551
8702
  - tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala
8552
8703
  - tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala
8704
+ - tracks/scala/testgen/src/main/scala/AnagramTestGenerator.scala
8553
8705
  - tracks/scala/testgen/src/main/scala/BeerSongTestGenerator.scala
8554
8706
  - tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala
8555
8707
  - tracks/scala/testgen/src/main/scala/BobTestGenerator.scala
@@ -8558,7 +8710,9 @@ files:
8558
8710
  - tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala
8559
8711
  - tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
8560
8712
  - tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala
8713
+ - tracks/scala/testgen/src/main/scala/EtlTestGenerator.scala
8561
8714
  - tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala
8715
+ - tracks/scala/testgen/src/main/scala/GrainsTestGenerator.scala
8562
8716
  - tracks/scala/testgen/src/main/scala/HammingTestGenerator.scala
8563
8717
  - tracks/scala/testgen/src/main/scala/HelloWorldTestGenerator.scala
8564
8718
  - tracks/scala/testgen/src/main/scala/IsogramTestGenerator.scala
@@ -8571,8 +8725,11 @@ files:
8571
8725
  - tracks/scala/testgen/src/main/scala/RaindropsTestGenerator.scala
8572
8726
  - tracks/scala/testgen/src/main/scala/RnaTranscriptionTestGenerator.scala
8573
8727
  - tracks/scala/testgen/src/main/scala/ScrabbleScoreTestGenerator.scala
8728
+ - tracks/scala/testgen/src/main/scala/SecretHandshakeTestGenerator.scala
8729
+ - tracks/scala/testgen/src/main/scala/SieveTestGenerator.scala
8574
8730
  - tracks/scala/testgen/src/main/scala/SumOfMultiplesTestGenerator.scala
8575
8731
  - tracks/scala/testgen/src/main/scala/TestBuilder.scala
8732
+ - tracks/scala/testgen/src/main/scala/TriangleTestGenerator.scala
8576
8733
  - tracks/scala/testgen/src/main/scala/VariableLengthQuantityTestGenerator.scala
8577
8734
  - tracks/scala/testgen/src/main/scala/testgen/CanonicalDataParser.scala
8578
8735
  - tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala
@@ -8634,6 +8791,21 @@ files:
8634
8791
  - tracks/scheme/exercises/scrabble-score/scrabble-score-test.scm
8635
8792
  - tracks/scheme/exercises/scrabble-score/scrabble-score.scm
8636
8793
  - tracks/scheme/img/icon.png
8794
+ - tracks/smalltalk/.git
8795
+ - tracks/smalltalk/.gitignore
8796
+ - tracks/smalltalk/.travis.yml
8797
+ - tracks/smalltalk/LICENSE
8798
+ - tracks/smalltalk/README.md
8799
+ - tracks/smalltalk/bin/fetch-configlet
8800
+ - tracks/smalltalk/config.json
8801
+ - tracks/smalltalk/docs/ABOUT.md
8802
+ - tracks/smalltalk/docs/EXERCISE_README_INSERT.md
8803
+ - tracks/smalltalk/docs/INSTALLATION.md
8804
+ - tracks/smalltalk/docs/LEARNING.md
8805
+ - tracks/smalltalk/docs/RESOURCES.md
8806
+ - tracks/smalltalk/docs/TESTS.md
8807
+ - tracks/smalltalk/exercises/.keep
8808
+ - tracks/smalltalk/img/.keep
8637
8809
  - tracks/sml/.git
8638
8810
  - tracks/sml/.gitignore
8639
8811
  - tracks/sml/.travis.yml
@@ -9166,6 +9338,7 @@ files:
9166
9338
  - tracks/typescript/LICENSE
9167
9339
  - tracks/typescript/Makefile
9168
9340
  - tracks/typescript/README.md
9341
+ - tracks/typescript/appveyor.yml
9169
9342
  - tracks/typescript/bin/fetch-configlet
9170
9343
  - tracks/typescript/common/package.json
9171
9344
  - tracks/typescript/common/tsconfig.json
@@ -9426,7 +9599,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
9426
9599
  version: '0'
9427
9600
  requirements: []
9428
9601
  rubyforge_project:
9429
- rubygems_version: 2.4.5.1
9602
+ rubygems_version: 2.5.2
9430
9603
  signing_key:
9431
9604
  specification_version: 4
9432
9605
  summary: The Exercism exercises data