trackler 2.2.1.99 → 2.2.1.100

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/clock/canonical-data.json +303 -204
  4. data/problem-specifications/exercises/complex-numbers/canonical-data.json +104 -44
  5. data/problem-specifications/exercises/matrix/canonical-data.json +78 -0
  6. data/problem-specifications/exercises/word-count/canonical-data.json +12 -12
  7. data/tracks/bash/config.json +128 -110
  8. data/tracks/c/exercises/word-count/test/test_word_count.c +2 -2
  9. data/tracks/dart/CONTRIBUTING.md +2 -2
  10. data/tracks/dart/docs/EXERCISE_README_INSERT.md +0 -1
  11. data/tracks/dart/docs/INSTALLATION.md +17 -11
  12. data/tracks/fsharp/exercises/acronym/AcronymTest.fs +3 -7
  13. data/tracks/fsharp/exercises/anagram/AnagramTest.fs +1 -21
  14. data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +1 -1
  15. data/tracks/fsharp/exercises/complex-numbers/ComplexNumbersTest.fs +25 -25
  16. data/tracks/fsharp/exercises/custom-set/CustomSetTest.fs +1 -1
  17. data/tracks/fsharp/exercises/food-chain/FoodChainTest.fs +1 -1
  18. data/tracks/fsharp/exercises/gigasecond/GigasecondTest.fs +1 -1
  19. data/tracks/fsharp/exercises/hamming/HammingTest.fs +1 -1
  20. data/tracks/fsharp/exercises/hello-world/HelloWorldTest.fs +1 -1
  21. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +1 -1
  22. data/tracks/fsharp/exercises/leap/LeapTest.fs +1 -1
  23. data/tracks/fsharp/exercises/markdown/MarkdownTest.fs +19 -19
  24. data/tracks/fsharp/exercises/minesweeper/MinesweeperTest.fs +27 -27
  25. data/tracks/fsharp/exercises/nth-prime/NthPrimeTest.fs +1 -1
  26. data/tracks/fsharp/exercises/nucleotide-count/NucleotideCountTest.fs +1 -1
  27. data/tracks/fsharp/exercises/pangram/PangramTest.fs +1 -1
  28. data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangleTest.fs +1 -1
  29. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbersTest.fs +1 -1
  30. data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +11 -3
  31. data/tracks/fsharp/exercises/pig-latin/PigLatinTest.fs +1 -1
  32. data/tracks/fsharp/exercises/protein-translation/Example.fs +2 -2
  33. data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fs +1 -1
  34. data/tracks/fsharp/exercises/protein-translation/ProteinTranslationTest.fs +94 -60
  35. data/tracks/fsharp/exercises/react/ReactTest.fs +1 -1
  36. data/tracks/fsharp/exercises/rna-transcription/RnaTranscriptionTest.fs +1 -1
  37. data/tracks/fsharp/exercises/roman-numerals/RomanNumeralsTest.fs +1 -1
  38. data/tracks/fsharp/exercises/rotational-cipher/RotationalCipherTest.fs +1 -1
  39. data/tracks/fsharp/exercises/say/Example.fs +1 -1
  40. data/tracks/fsharp/exercises/say/SayTest.fs +21 -24
  41. data/tracks/fsharp/exercises/scrabble-score/ScrabbleScoreTest.fs +1 -1
  42. data/tracks/fsharp/exercises/secret-handshake/Example.fs +2 -2
  43. data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fs +1 -1
  44. data/tracks/fsharp/exercises/secret-handshake/SecretHandshakeTest.fs +39 -22
  45. data/tracks/fsharp/exercises/sieve/Example.fs +1 -1
  46. data/tracks/fsharp/exercises/sieve/Sieve.fs +1 -1
  47. data/tracks/fsharp/exercises/sieve/SieveTest.fs +19 -21
  48. data/tracks/fsharp/exercises/spiral-matrix/SpiralMatrixTest.fs +1 -1
  49. data/tracks/fsharp/exercises/sum-of-multiples/Example.fs +1 -1
  50. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fs +1 -1
  51. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +44 -14
  52. data/tracks/fsharp/exercises/twelve-days/TwelveDaysTest.fs +1 -1
  53. data/tracks/fsharp/exercises/two-fer/Example.fs +1 -1
  54. data/tracks/fsharp/exercises/two-fer/TwoFer.fs +1 -1
  55. data/tracks/fsharp/exercises/two-fer/TwoFerTest.fs +4 -4
  56. data/tracks/fsharp/exercises/word-count/Example.fs +2 -2
  57. data/tracks/fsharp/exercises/word-count/WordCount.fs +2 -2
  58. data/tracks/fsharp/exercises/word-count/WordCountTest.fs +80 -100
  59. data/tracks/fsharp/exercises/wordy/Example.fs +2 -3
  60. data/tracks/fsharp/exercises/wordy/Wordy.fs +1 -1
  61. data/tracks/fsharp/exercises/wordy/WordyTest.fs +51 -49
  62. data/tracks/fsharp/exercises/zebra-puzzle/Example.fs +4 -4
  63. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzleTest.fs +7 -8
  64. data/tracks/fsharp/generators/Common.fs +3 -1
  65. data/tracks/fsharp/generators/Exercise.fs +12 -1
  66. data/tracks/fsharp/generators/Generators.fs +89 -42
  67. data/tracks/fsharp/generators/Generators.fsproj +1 -0
  68. data/tracks/fsharp/generators/Options.fs +14 -7
  69. data/tracks/fsharp/generators/Program.fs +3 -0
  70. data/tracks/fsharp/generators/Rendering.fs +0 -1
  71. data/tracks/fsharp/generators/Track.fs +26 -0
  72. data/tracks/go/exercises/custom-set/.meta/gen.go +16 -14
  73. data/tracks/go/exercises/custom-set/cases_test.go +2 -2
  74. data/tracks/java/exercises/food-chain/.meta/version +1 -0
  75. data/tracks/java/exercises/sieve/.meta/version +1 -0
  76. data/tracks/java/exercises/sieve/src/test/java/SieveTest.java +17 -0
  77. data/tracks/java/exercises/twelve-days/.meta/version +1 -0
  78. data/tracks/java/exercises/twelve-days/src/test/java/TwelveDaysTest.java +15 -3
  79. data/tracks/java/exercises/two-fer/.meta/version +1 -0
  80. data/tracks/java/exercises/two-fer/src/test/java/TwoferTest.java +0 -9
  81. data/tracks/ocaml/config/exercise_readme.go.tmpl +38 -4
  82. data/tracks/ocaml/exercises/acronym/README.md +0 -2
  83. data/tracks/ocaml/exercises/all-your-base/README.md +1 -3
  84. data/tracks/ocaml/exercises/anagram/README.md +0 -1
  85. data/tracks/ocaml/exercises/atbash-cipher/README.md +2 -2
  86. data/tracks/ocaml/exercises/beer-song/README.md +2 -3
  87. data/tracks/ocaml/exercises/binary-search/README.md +0 -1
  88. data/tracks/ocaml/exercises/bob/README.md +2 -1
  89. data/tracks/ocaml/exercises/bowling/README.md +20 -7
  90. data/tracks/ocaml/exercises/bracket-push/README.md +0 -1
  91. data/tracks/ocaml/exercises/change/README.md +1 -2
  92. data/tracks/ocaml/exercises/connect/README.md +1 -3
  93. data/tracks/ocaml/exercises/custom-set/README.md +0 -2
  94. data/tracks/ocaml/exercises/difference-of-squares/README.md +0 -1
  95. data/tracks/ocaml/exercises/dominoes/README.md +3 -5
  96. data/tracks/ocaml/exercises/etl/README.md +3 -2
  97. data/tracks/ocaml/exercises/forth/README.md +0 -2
  98. data/tracks/ocaml/exercises/grade-school/README.md +0 -1
  99. data/tracks/ocaml/exercises/hamming/README.md +0 -1
  100. data/tracks/ocaml/exercises/hangman/README.md +0 -2
  101. data/tracks/ocaml/exercises/hello-world/README.md +0 -1
  102. data/tracks/ocaml/exercises/hexadecimal/README.md +0 -1
  103. data/tracks/ocaml/exercises/leap/README.md +1 -2
  104. data/tracks/ocaml/exercises/list-ops/README.md +0 -2
  105. data/tracks/ocaml/exercises/luhn/README.md +7 -8
  106. data/tracks/ocaml/exercises/meetup/README.md +16 -14
  107. data/tracks/ocaml/exercises/minesweeper/README.md +0 -2
  108. data/tracks/ocaml/exercises/nucleotide-count/README.md +8 -23
  109. data/tracks/ocaml/exercises/palindrome-products/README.md +0 -1
  110. data/tracks/ocaml/exercises/pangram/README.md +1 -2
  111. data/tracks/ocaml/exercises/phone-number/README.md +4 -4
  112. data/tracks/ocaml/exercises/prime-factors/README.md +0 -1
  113. data/tracks/ocaml/exercises/raindrops/README.md +0 -1
  114. data/tracks/ocaml/exercises/react/README.md +0 -2
  115. data/tracks/ocaml/{docs/EXERCISE_README_INSERT.md → exercises/rectangles/README.md} +67 -0
  116. data/tracks/ocaml/exercises/rna-transcription/README.md +1 -2
  117. data/tracks/ocaml/exercises/robot-name/README.md +0 -1
  118. data/tracks/ocaml/exercises/roman-numerals/README.md +1 -2
  119. data/tracks/ocaml/exercises/run-length-encoding/README.md +4 -5
  120. data/tracks/ocaml/exercises/say/README.md +0 -1
  121. data/tracks/ocaml/exercises/space-age/README.md +1 -2
  122. data/tracks/ocaml/exercises/triangle/README.md +8 -6
  123. data/tracks/ocaml/exercises/word-count/README.md +1 -3
  124. data/tracks/ocaml/exercises/zipper/README.md +1 -3
  125. data/tracks/perl6/.travis.yml +1 -1
  126. data/tracks/perl6/bin/README.md +1 -2
  127. data/tracks/perl6/bin/exercise-gen.pl6 +18 -18
  128. data/tracks/perl6/config.json +1 -0
  129. data/tracks/perl6/exercises/accumulate/{example.yaml → .meta/exercise-data.yaml} +0 -0
  130. data/tracks/perl6/exercises/accumulate/{Example.pm6 → .meta/solutions/Accumulate.pm6} +0 -0
  131. data/tracks/perl6/exercises/acronym/{example.yaml → .meta/exercise-data.yaml} +0 -0
  132. data/tracks/perl6/exercises/acronym/{Example.pm6 → .meta/solutions/Acronym.pm6} +0 -0
  133. data/tracks/perl6/exercises/all-your-base/{example.yaml → .meta/exercise-data.yaml} +0 -0
  134. data/tracks/perl6/exercises/all-your-base/{Example.pm6 → .meta/solutions/AllYourBase.pm6} +0 -0
  135. data/tracks/perl6/exercises/allergies/{example.yaml → .meta/exercise-data.yaml} +0 -0
  136. data/tracks/perl6/exercises/allergies/{Example.pm6 → .meta/solutions/Allergies.pm6} +0 -0
  137. data/tracks/perl6/exercises/anagram/{example.yaml → .meta/exercise-data.yaml} +0 -0
  138. data/tracks/perl6/exercises/anagram/{Example.pm6 → .meta/solutions/Anagram.pm6} +0 -0
  139. data/tracks/perl6/exercises/atbash-cipher/{example.yaml → .meta/exercise-data.yaml} +0 -0
  140. data/tracks/perl6/exercises/atbash-cipher/{Example.pm6 → .meta/solutions/AtbashCipher.pm6} +0 -0
  141. data/tracks/perl6/exercises/binary/{Example.pm6 → .meta/solutions/Trinary.pm6} +0 -0
  142. data/tracks/perl6/exercises/bob/{example.yaml → .meta/exercise-data.yaml} +0 -0
  143. data/tracks/perl6/exercises/bob/{Example.pm6 → .meta/solutions/Bob.pm6} +0 -0
  144. data/tracks/perl6/exercises/clock/{example.yaml → .meta/exercise-data.yaml} +0 -0
  145. data/tracks/perl6/exercises/clock/{Example.pm6 → .meta/solutions/Clock.pm6} +0 -0
  146. data/tracks/perl6/exercises/etl/{example.yaml → .meta/exercise-data.yaml} +0 -0
  147. data/tracks/perl6/exercises/etl/{Example.pm6 → .meta/solutions/ETL.pm6} +0 -0
  148. data/tracks/perl6/exercises/flatten-array/{example.yaml → .meta/exercise-data.yaml} +0 -0
  149. data/tracks/perl6/exercises/flatten-array/{Example.pm6 → .meta/solutions/FlattenArray.pm6} +0 -0
  150. data/tracks/perl6/exercises/grade-school/{example.yaml → .meta/exercise-data.yaml} +0 -0
  151. data/tracks/perl6/exercises/grade-school/{Example.pm6 → .meta/solutions/GradeSchool.pm6} +0 -0
  152. data/tracks/perl6/exercises/grains/{example.yaml → .meta/exercise-data.yaml} +0 -0
  153. data/tracks/perl6/exercises/grains/{Example.pm6 → .meta/solutions/Grains.pm6} +0 -0
  154. data/tracks/perl6/exercises/hamming/{example.yaml → .meta/exercise-data.yaml} +0 -0
  155. data/tracks/perl6/exercises/hamming/{Example.pm6 → .meta/solutions/Hamming.pm6} +0 -0
  156. data/tracks/perl6/exercises/hello-world/{example.yaml → .meta/exercise-data.yaml} +0 -0
  157. data/tracks/perl6/exercises/hello-world/{Example.pm6 → .meta/solutions/HelloWorld.pm6} +0 -0
  158. data/tracks/perl6/exercises/leap/{example.yaml → .meta/exercise-data.yaml} +0 -0
  159. data/tracks/perl6/exercises/leap/{Example.pm6 → .meta/solutions/Leap.pm6} +0 -0
  160. data/tracks/perl6/exercises/linked-list/{example.yaml → .meta/exercise-data.yaml} +0 -0
  161. data/tracks/perl6/exercises/linked-list/{Example.pm6 → .meta/solutions/LinkedList.pm6} +0 -0
  162. data/tracks/perl6/exercises/luhn/{example.yaml → .meta/exercise-data.yaml} +0 -0
  163. data/tracks/perl6/exercises/luhn/{Example.pm6 → .meta/solutions/Luhn.pm6} +0 -0
  164. data/tracks/perl6/exercises/meetup/{example.yaml → .meta/exercise-data.yaml} +0 -0
  165. data/tracks/perl6/exercises/meetup/{Example.pm6 → .meta/solutions/Meetup.pm6} +0 -0
  166. data/tracks/perl6/exercises/nucleotide-count/{example.yaml → .meta/exercise-data.yaml} +0 -0
  167. data/tracks/perl6/exercises/nucleotide-count/{Example.pm6 → .meta/solutions/NucleotideCount.pm6} +0 -0
  168. data/tracks/perl6/exercises/pangram/{example.yaml → .meta/exercise-data.yaml} +0 -0
  169. data/tracks/perl6/exercises/pangram/{Example.pm6 → .meta/solutions/Pangram.pm6} +0 -0
  170. data/tracks/perl6/exercises/phone-number/{example.yaml → .meta/exercise-data.yaml} +0 -0
  171. data/tracks/perl6/exercises/phone-number/{Example.pm6 → .meta/solutions/Phone.pm6} +0 -0
  172. data/tracks/perl6/exercises/raindrops/{example.yaml → .meta/exercise-data.yaml} +0 -0
  173. data/tracks/perl6/exercises/raindrops/{Example.pm6 → .meta/solutions/Raindrops.pm6} +0 -0
  174. data/tracks/perl6/exercises/rna-transcription/{example.yaml → .meta/exercise-data.yaml} +0 -0
  175. data/tracks/perl6/exercises/rna-transcription/{Example.pm6 → .meta/solutions/RNA.pm6} +0 -0
  176. data/tracks/perl6/exercises/robot-name/{example.yaml → .meta/exercise-data.yaml} +0 -0
  177. data/tracks/perl6/exercises/robot-name/{Example.pm6 → .meta/solutions/Robot.pm6} +0 -0
  178. data/tracks/perl6/exercises/roman-numerals/{example.yaml → .meta/exercise-data.yaml} +0 -0
  179. data/tracks/perl6/exercises/roman-numerals/{Example.pm6 → .meta/solutions/RomanNumerals.pm6} +0 -0
  180. data/tracks/perl6/exercises/scrabble-score/{example.yaml → .meta/exercise-data.yaml} +0 -0
  181. data/tracks/perl6/exercises/scrabble-score/{Example.pm6 → .meta/solutions/Scrabble.pm6} +0 -0
  182. data/tracks/perl6/exercises/space-age/{example.yaml → .meta/exercise-data.yaml} +0 -0
  183. data/tracks/perl6/exercises/space-age/{Example.pm6 → .meta/solutions/SpaceAge.pm6} +0 -0
  184. data/tracks/perl6/exercises/trinary/{Example.pm6 → .meta/solutions/Trinary.pm6} +0 -0
  185. data/tracks/perl6/exercises/two-fer/{example.yaml → .meta/exercise-data.yaml} +0 -0
  186. data/tracks/perl6/exercises/two-fer/{Example.pm6 → .meta/solutions/TwoFer.pm6} +0 -0
  187. data/tracks/perl6/exercises/word-count/{example.yaml → .meta/exercise-data.yaml} +0 -0
  188. data/tracks/perl6/exercises/word-count/{Example.pm6 → .meta/solutions/WordCount.pm6} +0 -0
  189. data/tracks/perl6/exercises/wordy/{example.yaml → .meta/exercise-data.yaml} +0 -0
  190. data/tracks/perl6/exercises/wordy/{Example.pm6 → .meta/solutions/Wordy.pm6} +0 -0
  191. data/tracks/perl6/t/generated-tests.t +2 -2
  192. data/tracks/python/config.json +12 -0
  193. data/tracks/python/exercises/bowling/.gitignore +0 -0
  194. data/tracks/python/exercises/bowling/bowling.py +11 -0
  195. data/tracks/python/exercises/bowling/bowling_test.py +193 -0
  196. data/tracks/python/exercises/bowling/example.py +149 -0
  197. data/tracks/python/exercises/say/say_test.py +1 -1
  198. data/tracks/ruby/README.md +121 -97
  199. data/tracks/ruby/config/exercise_readme.go.tmpl +23 -4
  200. data/tracks/ruby/exercises/accumulate/{HINTS.md → .meta/hints.md} +0 -0
  201. data/tracks/ruby/exercises/accumulate/README.md +3 -5
  202. data/tracks/ruby/exercises/acronym/README.md +3 -6
  203. data/tracks/ruby/exercises/all-your-base/README.md +4 -7
  204. data/tracks/ruby/exercises/allergies/README.md +3 -6
  205. data/tracks/ruby/exercises/alphametics/README.md +5 -8
  206. data/tracks/ruby/exercises/anagram/README.md +3 -5
  207. data/tracks/ruby/exercises/atbash-cipher/README.md +5 -6
  208. data/tracks/ruby/exercises/beer-song/README.md +5 -7
  209. data/tracks/ruby/exercises/binary-search-tree/README.md +3 -5
  210. data/tracks/ruby/exercises/binary-search/README.md +3 -5
  211. data/tracks/ruby/exercises/binary/README.md +5 -5
  212. data/tracks/ruby/exercises/bob/README.md +3 -5
  213. data/tracks/ruby/exercises/book-store/README.md +3 -5
  214. data/tracks/ruby/exercises/bowling/README.md +23 -11
  215. data/tracks/ruby/exercises/bracket-push/README.md +3 -5
  216. data/tracks/ruby/exercises/change/README.md +3 -5
  217. data/tracks/ruby/exercises/circular-buffer/README.md +16 -11
  218. data/tracks/ruby/exercises/clock/README.md +3 -5
  219. data/tracks/ruby/exercises/collatz-conjecture/README.md +4 -6
  220. data/tracks/ruby/exercises/complex-numbers/README.md +6 -8
  221. data/tracks/ruby/exercises/connect/README.md +4 -7
  222. data/tracks/ruby/exercises/crypto-square/README.md +3 -5
  223. data/tracks/ruby/exercises/custom-set/README.md +3 -6
  224. data/tracks/ruby/exercises/diamond/README.md +9 -11
  225. data/tracks/ruby/exercises/difference-of-squares/README.md +3 -5
  226. data/tracks/ruby/exercises/dominoes/README.md +6 -9
  227. data/tracks/ruby/exercises/etl/README.md +6 -6
  228. data/tracks/ruby/exercises/flatten-array/README.md +5 -8
  229. data/tracks/ruby/exercises/food-chain/README.md +4 -6
  230. data/tracks/ruby/exercises/gigasecond/README.md +3 -5
  231. data/tracks/ruby/exercises/grade-school/README.md +3 -6
  232. data/tracks/ruby/exercises/grains/README.md +3 -6
  233. data/tracks/ruby/exercises/hamming/README.md +3 -5
  234. data/tracks/ruby/exercises/hello-world/README.md +1 -3
  235. data/tracks/ruby/exercises/hexadecimal/README.md +3 -5
  236. data/tracks/ruby/exercises/house/README.md +5 -8
  237. data/tracks/ruby/exercises/isbn-verifier/README.md +4 -6
  238. data/tracks/ruby/exercises/isogram/README.md +5 -6
  239. data/tracks/ruby/exercises/kindergarten-garden/README.md +16 -18
  240. data/tracks/ruby/exercises/largest-series-product/README.md +3 -5
  241. data/tracks/ruby/exercises/leap/README.md +4 -6
  242. data/tracks/ruby/exercises/linked-list/README.md +13 -15
  243. data/tracks/ruby/exercises/list-ops/README.md +3 -6
  244. data/tracks/ruby/exercises/luhn/README.md +10 -12
  245. data/tracks/ruby/exercises/matrix/README.md +9 -9
  246. data/tracks/ruby/exercises/meetup/README.md +19 -18
  247. data/tracks/ruby/exercises/minesweeper/README.md +3 -6
  248. data/tracks/ruby/exercises/nth-prime/README.md +3 -5
  249. data/tracks/ruby/exercises/nucleotide-count/README.md +11 -27
  250. data/tracks/ruby/exercises/ocr-numbers/README.md +9 -11
  251. data/tracks/ruby/exercises/octal/README.md +9 -7
  252. data/tracks/ruby/exercises/palindrome-products/README.md +8 -17
  253. data/tracks/ruby/exercises/pangram/README.md +4 -6
  254. data/tracks/ruby/exercises/pascals-triangle/README.md +5 -7
  255. data/tracks/ruby/exercises/perfect-numbers/README.md +5 -7
  256. data/tracks/ruby/exercises/phone-number/README.md +7 -8
  257. data/tracks/ruby/exercises/pig-latin/README.md +3 -5
  258. data/tracks/ruby/exercises/point-mutations/README.md +3 -5
  259. data/tracks/ruby/exercises/poker/README.md +3 -5
  260. data/tracks/ruby/exercises/prime-factors/README.md +3 -5
  261. data/tracks/ruby/exercises/protein-translation/README.md +7 -10
  262. data/tracks/ruby/exercises/proverb/README.md +17 -14
  263. data/tracks/ruby/exercises/pythagorean-triplet/README.md +6 -8
  264. data/tracks/ruby/exercises/queen-attack/README.md +4 -6
  265. data/tracks/ruby/exercises/rail-fence-cipher/README.md +15 -12
  266. data/tracks/ruby/exercises/raindrops/README.md +3 -5
  267. data/tracks/ruby/exercises/rna-transcription/README.md +4 -6
  268. data/tracks/ruby/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
  269. data/tracks/ruby/exercises/robot-name/README.md +3 -5
  270. data/tracks/ruby/exercises/robot-simulator/README.md +3 -5
  271. data/tracks/ruby/exercises/roman-numerals/README.md +4 -6
  272. data/tracks/ruby/exercises/rotational-cipher/README.md +3 -5
  273. data/tracks/ruby/exercises/run-length-encoding/README.md +7 -9
  274. data/tracks/ruby/exercises/saddle-points/README.md +5 -7
  275. data/tracks/ruby/exercises/say/README.md +3 -5
  276. data/tracks/ruby/exercises/scale-generator/README.md +3 -7
  277. data/tracks/ruby/exercises/scrabble-score/README.md +6 -6
  278. data/tracks/ruby/exercises/secret-handshake/README.md +4 -6
  279. data/tracks/ruby/exercises/series/README.md +3 -5
  280. data/tracks/ruby/exercises/sieve/README.md +3 -5
  281. data/tracks/ruby/exercises/simple-cipher/README.md +7 -11
  282. data/tracks/ruby/exercises/simple-linked-list/README.md +3 -5
  283. data/tracks/ruby/exercises/space-age/README.md +4 -6
  284. data/tracks/ruby/exercises/strain/README.md +3 -5
  285. data/tracks/ruby/exercises/sum-of-multiples/README.md +6 -11
  286. data/tracks/ruby/exercises/tournament/README.md +8 -11
  287. data/tracks/ruby/exercises/transpose/README.md +10 -12
  288. data/tracks/ruby/exercises/triangle/README.md +12 -11
  289. data/tracks/ruby/exercises/trinary/README.md +4 -6
  290. data/tracks/ruby/exercises/twelve-days/README.md +4 -6
  291. data/tracks/ruby/exercises/two-bucket/README.md +13 -15
  292. data/tracks/ruby/exercises/two-fer/README.md +13 -39
  293. data/tracks/ruby/exercises/word-count/README.md +4 -7
  294. data/tracks/ruby/exercises/wordy/README.md +3 -10
  295. metadata +77 -68
  296. data/tracks/ruby/docs/EXERCISE_README_INSERT.md +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a4f6ff506d46fc8e5cd2158613f444181e5a9f4
4
- data.tar.gz: 8248291e3689c6087c3e8d6c82de286eb754c6d3
3
+ metadata.gz: d0139492d80a929dd82a2c17d9a2630d26ea631b
4
+ data.tar.gz: 937fe9cc198cf09749d0edb6bf5d0f32430a63ce
5
5
  SHA512:
6
- metadata.gz: 19d9955f95e594ff280c3ceaf97cbb0a7583860bc892e01380953f95cd4861150bb8c00a9c0a222e18f3f31601f296f4e7bfa659c05e59a9a3943e5ac16a3033
7
- data.tar.gz: 6804eab9031cad8febe3ab5fe3e49d03eb4eb95eaf50ad0401791d79b4c23bcf3dab914ef6023dac7ea5b364c22b0bfea717c6887404bc3d02c62a7b9eeaa1a2
6
+ metadata.gz: ce246028cbe65b42575ea7a4171a79a95fb0a0c86edb43970cf5b76345f9d058e3922a2bacc0fc3fe38a29e76391163a62eeeb3d709a3e7c3893327d3a4918ee
7
+ data.tar.gz: 59a8ea0ec5f56db2a814f3b8f135566b24e360b81130ed28e8141cd63299fa38e3a69120abcc5150740b0dcd3d4d4ddf494102795a61366a36cb0eb62127030c
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.99"
2
+ VERSION = "2.2.1.100"
3
3
  end
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "exercise": "clock",
3
- "version": "1.0.1",
3
+ "version": "2.2.1",
4
4
  "comments": [
5
5
  "Most languages require constructing a clock with initial values,",
6
- "adding a positive or negative number of minutes, and testing equality",
7
- "in some language-native way. Some languages require separate add and",
8
- "subtract functions. Negative and out of range values are generally",
9
- "expected to wrap around rather than represent errors."
6
+ "adding or subtracting some number of minutes, and testing equality",
7
+ "in some language-native way. Negative and out of range values are",
8
+ "generally expected to wrap around rather than represent errors."
10
9
  ],
11
10
  "cases": [
12
11
  {
@@ -15,134 +14,172 @@
15
14
  {
16
15
  "description": "on the hour",
17
16
  "property": "create",
18
- "hour": 8,
19
- "minute": 0,
17
+ "input": {
18
+ "hour": 8,
19
+ "minute": 0
20
+ },
20
21
  "expected": "08:00"
21
22
  },
22
23
  {
23
24
  "description": "past the hour",
24
25
  "property": "create",
25
- "hour": 11,
26
- "minute": 9,
26
+ "input": {
27
+ "hour": 11,
28
+ "minute": 9
29
+ },
27
30
  "expected": "11:09"
28
31
  },
29
32
  {
30
33
  "description": "midnight is zero hours",
31
34
  "property": "create",
32
- "hour": 24,
33
- "minute": 0,
35
+ "input": {
36
+ "hour": 24,
37
+ "minute": 0
38
+ },
34
39
  "expected": "00:00"
35
40
  },
36
41
  {
37
42
  "description": "hour rolls over",
38
43
  "property": "create",
39
- "hour": 25,
40
- "minute": 0,
44
+ "input": {
45
+ "hour": 25,
46
+ "minute": 0
47
+ },
41
48
  "expected": "01:00"
42
49
  },
43
50
  {
44
51
  "description": "hour rolls over continuously",
45
52
  "property": "create",
46
- "hour": 100,
47
- "minute": 0,
53
+ "input": {
54
+ "hour": 100,
55
+ "minute": 0
56
+ },
48
57
  "expected": "04:00"
49
58
  },
50
59
  {
51
60
  "description": "sixty minutes is next hour",
52
61
  "property": "create",
53
- "hour": 1,
54
- "minute": 60,
62
+ "input": {
63
+ "hour": 1,
64
+ "minute": 60
65
+ },
55
66
  "expected": "02:00"
56
67
  },
57
68
  {
58
69
  "description": "minutes roll over",
59
70
  "property": "create",
60
- "hour": 0,
61
- "minute": 160,
71
+ "input": {
72
+ "hour": 0,
73
+ "minute": 160
74
+ },
62
75
  "expected": "02:40"
63
76
  },
64
77
  {
65
78
  "description": "minutes roll over continuously",
66
79
  "property": "create",
67
- "hour": 0,
68
- "minute": 1723,
80
+ "input": {
81
+ "hour": 0,
82
+ "minute": 1723
83
+ },
69
84
  "expected": "04:43"
70
85
  },
71
86
  {
72
87
  "description": "hour and minutes roll over",
73
88
  "property": "create",
74
- "hour": 25,
75
- "minute": 160,
89
+ "input": {
90
+ "hour": 25,
91
+ "minute": 160
92
+ },
76
93
  "expected": "03:40"
77
94
  },
78
95
  {
79
96
  "description": "hour and minutes roll over continuously",
80
97
  "property": "create",
81
- "hour": 201,
82
- "minute": 3001,
98
+ "input": {
99
+ "hour": 201,
100
+ "minute": 3001
101
+ },
83
102
  "expected": "11:01"
84
103
  },
85
104
  {
86
105
  "description": "hour and minutes roll over to exactly midnight",
87
106
  "property": "create",
88
- "hour": 72,
89
- "minute": 8640,
107
+ "input": {
108
+ "hour": 72,
109
+ "minute": 8640
110
+ },
90
111
  "expected": "00:00"
91
112
  },
92
113
  {
93
114
  "description": "negative hour",
94
115
  "property": "create",
95
- "hour": -1,
96
- "minute": 15,
116
+ "input": {
117
+ "hour": -1,
118
+ "minute": 15
119
+ },
97
120
  "expected": "23:15"
98
121
  },
99
122
  {
100
123
  "description": "negative hour rolls over",
101
124
  "property": "create",
102
- "hour": -25,
103
- "minute": 0,
125
+ "input": {
126
+ "hour": -25,
127
+ "minute": 0
128
+ },
104
129
  "expected": "23:00"
105
130
  },
106
131
  {
107
132
  "description": "negative hour rolls over continuously",
108
133
  "property": "create",
109
- "hour": -91,
110
- "minute": 0,
134
+ "input": {
135
+ "hour": -91,
136
+ "minute": 0
137
+ },
111
138
  "expected": "05:00"
112
139
  },
113
140
  {
114
141
  "description": "negative minutes",
115
142
  "property": "create",
116
- "hour": 1,
117
- "minute": -40,
143
+ "input": {
144
+ "hour": 1,
145
+ "minute": -40
146
+ },
118
147
  "expected": "00:20"
119
148
  },
120
149
  {
121
150
  "description": "negative minutes roll over",
122
151
  "property": "create",
123
- "hour": 1,
124
- "minute": -160,
152
+ "input": {
153
+ "hour": 1,
154
+ "minute": -160
155
+ },
125
156
  "expected": "22:20"
126
157
  },
127
158
  {
128
159
  "description": "negative minutes roll over continuously",
129
160
  "property": "create",
130
- "hour": 1,
131
- "minute": -4820,
161
+ "input": {
162
+ "hour": 1,
163
+ "minute": -4820
164
+ },
132
165
  "expected": "16:40"
133
166
  },
134
167
  {
135
168
  "description": "negative hour and minutes both roll over",
136
169
  "property": "create",
137
- "hour": -25,
138
- "minute": -160,
170
+ "input": {
171
+ "hour": -25,
172
+ "minute": -160
173
+ },
139
174
  "expected": "20:20"
140
175
  },
141
176
  {
142
177
  "description": "negative hour and minutes both roll over continuously",
143
178
  "property": "create",
144
- "hour": -121,
145
- "minute": -5810,
179
+ "input": {
180
+ "hour": -121,
181
+ "minute": -5810
182
+ },
146
183
  "expected": "22:10"
147
184
  }
148
185
  ]
@@ -153,65 +190,81 @@
153
190
  {
154
191
  "description": "add minutes",
155
192
  "property": "add",
156
- "hour": 10,
157
- "minute": 0,
158
- "add": 3,
193
+ "input": {
194
+ "hour": 10,
195
+ "minute": 0,
196
+ "value": 3
197
+ },
159
198
  "expected": "10:03"
160
199
  },
161
200
  {
162
201
  "description": "add no minutes",
163
202
  "property": "add",
164
- "hour": 6,
165
- "minute": 41,
166
- "add": 0,
203
+ "input": {
204
+ "hour": 6,
205
+ "minute": 41,
206
+ "value": 0
207
+ },
167
208
  "expected": "06:41"
168
209
  },
169
210
  {
170
211
  "description": "add to next hour",
171
212
  "property": "add",
172
- "hour": 0,
173
- "minute": 45,
174
- "add": 40,
213
+ "input": {
214
+ "hour": 0,
215
+ "minute": 45,
216
+ "value": 40
217
+ },
175
218
  "expected": "01:25"
176
219
  },
177
220
  {
178
221
  "description": "add more than one hour",
179
222
  "property": "add",
180
- "hour": 10,
181
- "minute": 0,
182
- "add": 61,
223
+ "input": {
224
+ "hour": 10,
225
+ "minute": 0,
226
+ "value": 61
227
+ },
183
228
  "expected": "11:01"
184
229
  },
185
230
  {
186
231
  "description": "add more than two hours with carry",
187
232
  "property": "add",
188
- "hour": 0,
189
- "minute": 45,
190
- "add": 160,
233
+ "input": {
234
+ "hour": 0,
235
+ "minute": 45,
236
+ "value": 160
237
+ },
191
238
  "expected": "03:25"
192
239
  },
193
240
  {
194
241
  "description": "add across midnight",
195
242
  "property": "add",
196
- "hour": 23,
197
- "minute": 59,
198
- "add": 2,
243
+ "input": {
244
+ "hour": 23,
245
+ "minute": 59,
246
+ "value": 2
247
+ },
199
248
  "expected": "00:01"
200
249
  },
201
250
  {
202
251
  "description": "add more than one day (1500 min = 25 hrs)",
203
252
  "property": "add",
204
- "hour": 5,
205
- "minute": 32,
206
- "add": 1500,
253
+ "input": {
254
+ "hour": 5,
255
+ "minute": 32,
256
+ "value": 1500
257
+ },
207
258
  "expected": "06:32"
208
259
  },
209
260
  {
210
261
  "description": "add more than two days",
211
262
  "property": "add",
212
- "hour": 1,
213
- "minute": 1,
214
- "add": 3500,
263
+ "input": {
264
+ "hour": 1,
265
+ "minute": 1,
266
+ "value": 3500
267
+ },
215
268
  "expected": "11:21"
216
269
  }
217
270
  ]
@@ -221,66 +274,82 @@
221
274
  "cases": [
222
275
  {
223
276
  "description": "subtract minutes",
224
- "property": "add",
225
- "hour": 10,
226
- "minute": 3,
227
- "add": -3,
277
+ "property": "subtract",
278
+ "input": {
279
+ "hour": 10,
280
+ "minute": 3,
281
+ "value": 3
282
+ },
228
283
  "expected": "10:00"
229
284
  },
230
285
  {
231
286
  "description": "subtract to previous hour",
232
- "property": "add",
233
- "hour": 10,
234
- "minute": 3,
235
- "add": -30,
287
+ "property": "subtract",
288
+ "input": {
289
+ "hour": 10,
290
+ "minute": 3,
291
+ "value": 30
292
+ },
236
293
  "expected": "09:33"
237
294
  },
238
295
  {
239
296
  "description": "subtract more than an hour",
240
- "property": "add",
241
- "hour": 10,
242
- "minute": 3,
243
- "add": -70,
297
+ "property": "subtract",
298
+ "input": {
299
+ "hour": 10,
300
+ "minute": 3,
301
+ "value": 70
302
+ },
244
303
  "expected": "08:53"
245
304
  },
246
305
  {
247
306
  "description": "subtract across midnight",
248
- "property": "add",
249
- "hour": 0,
250
- "minute": 3,
251
- "add": -4,
307
+ "property": "subtract",
308
+ "input": {
309
+ "hour": 0,
310
+ "minute": 3,
311
+ "value": 4
312
+ },
252
313
  "expected": "23:59"
253
314
  },
254
315
  {
255
316
  "description": "subtract more than two hours",
256
- "property": "add",
257
- "hour": 0,
258
- "minute": 0,
259
- "add": -160,
317
+ "property": "subtract",
318
+ "input": {
319
+ "hour": 0,
320
+ "minute": 0,
321
+ "value": 160
322
+ },
260
323
  "expected": "21:20"
261
324
  },
262
325
  {
263
326
  "description": "subtract more than two hours with borrow",
264
- "property": "add",
265
- "hour": 6,
266
- "minute": 15,
267
- "add": -160,
327
+ "property": "subtract",
328
+ "input": {
329
+ "hour": 6,
330
+ "minute": 15,
331
+ "value": 160
332
+ },
268
333
  "expected": "03:35"
269
334
  },
270
335
  {
271
336
  "description": "subtract more than one day (1500 min = 25 hrs)",
272
- "property": "add",
273
- "hour": 5,
274
- "minute": 32,
275
- "add": -1500,
337
+ "property": "subtract",
338
+ "input": {
339
+ "hour": 5,
340
+ "minute": 32,
341
+ "value": 1500
342
+ },
276
343
  "expected": "04:32"
277
344
  },
278
345
  {
279
346
  "description": "subtract more than two days",
280
- "property": "add",
281
- "hour": 2,
282
- "minute": 20,
283
- "add": -3000,
347
+ "property": "subtract",
348
+ "input": {
349
+ "hour": 2,
350
+ "minute": 20,
351
+ "value": 3000
352
+ },
284
353
  "expected": "00:20"
285
354
  }
286
355
  ]
@@ -291,195 +360,225 @@
291
360
  {
292
361
  "description": "clocks with same time",
293
362
  "property": "equal",
294
- "clock1": {
295
- "hour": 15,
296
- "minute": 37
297
- },
298
- "clock2": {
299
- "hour": 15,
300
- "minute": 37
363
+ "input": {
364
+ "clock1": {
365
+ "hour": 15,
366
+ "minute": 37
367
+ },
368
+ "clock2": {
369
+ "hour": 15,
370
+ "minute": 37
371
+ }
301
372
  },
302
373
  "expected": true
303
374
  },
304
375
  {
305
376
  "description": "clocks a minute apart",
306
377
  "property": "equal",
307
- "clock1": {
308
- "hour": 15,
309
- "minute": 36
310
- },
311
- "clock2": {
312
- "hour": 15,
313
- "minute": 37
378
+ "input": {
379
+ "clock1": {
380
+ "hour": 15,
381
+ "minute": 36
382
+ },
383
+ "clock2": {
384
+ "hour": 15,
385
+ "minute": 37
386
+ }
314
387
  },
315
388
  "expected": false
316
389
  },
317
390
  {
318
391
  "description": "clocks an hour apart",
319
392
  "property": "equal",
320
- "clock1": {
321
- "hour": 14,
322
- "minute": 37
323
- },
324
- "clock2": {
325
- "hour": 15,
326
- "minute": 37
393
+ "input": {
394
+ "clock1": {
395
+ "hour": 14,
396
+ "minute": 37
397
+ },
398
+ "clock2": {
399
+ "hour": 15,
400
+ "minute": 37
401
+ }
327
402
  },
328
403
  "expected": false
329
404
  },
330
405
  {
331
406
  "description": "clocks with hour overflow",
332
407
  "property": "equal",
333
- "clock1": {
334
- "hour": 10,
335
- "minute": 37
336
- },
337
- "clock2": {
338
- "hour": 34,
339
- "minute": 37
408
+ "input": {
409
+ "clock1": {
410
+ "hour": 10,
411
+ "minute": 37
412
+ },
413
+ "clock2": {
414
+ "hour": 34,
415
+ "minute": 37
416
+ }
340
417
  },
341
418
  "expected": true
342
419
  },
343
420
  {
344
421
  "description": "clocks with hour overflow by several days",
345
422
  "property": "equal",
346
- "clock1": {
347
- "hour": 3,
348
- "minute": 11
349
- },
350
- "clock2": {
351
- "hour": 99,
352
- "minute": 11
423
+ "input": {
424
+ "clock1": {
425
+ "hour": 3,
426
+ "minute": 11
427
+ },
428
+ "clock2": {
429
+ "hour": 99,
430
+ "minute": 11
431
+ }
353
432
  },
354
433
  "expected": true
355
434
  },
356
435
  {
357
436
  "description": "clocks with negative hour",
358
437
  "property": "equal",
359
- "clock1": {
360
- "hour": 22,
361
- "minute": 40
362
- },
363
- "clock2": {
364
- "hour": -2,
365
- "minute": 40
438
+ "input": {
439
+ "clock1": {
440
+ "hour": 22,
441
+ "minute": 40
442
+ },
443
+ "clock2": {
444
+ "hour": -2,
445
+ "minute": 40
446
+ }
366
447
  },
367
448
  "expected": true
368
449
  },
369
450
  {
370
451
  "description": "clocks with negative hour that wraps",
371
452
  "property": "equal",
372
- "clock1": {
373
- "hour": 17,
374
- "minute": 3
375
- },
376
- "clock2": {
377
- "hour": -31,
378
- "minute": 3
453
+ "input": {
454
+ "clock1": {
455
+ "hour": 17,
456
+ "minute": 3
457
+ },
458
+ "clock2": {
459
+ "hour": -31,
460
+ "minute": 3
461
+ }
379
462
  },
380
463
  "expected": true
381
464
  },
382
465
  {
383
466
  "description": "clocks with negative hour that wraps multiple times",
384
467
  "property": "equal",
385
- "clock1": {
386
- "hour": 13,
387
- "minute": 49
388
- },
389
- "clock2": {
390
- "hour": -83,
391
- "minute": 49
468
+ "input": {
469
+ "clock1": {
470
+ "hour": 13,
471
+ "minute": 49
472
+ },
473
+ "clock2": {
474
+ "hour": -83,
475
+ "minute": 49
476
+ }
392
477
  },
393
478
  "expected": true
394
479
  },
395
480
  {
396
481
  "description": "clocks with minute overflow",
397
482
  "property": "equal",
398
- "clock1": {
399
- "hour": 0,
400
- "minute": 1
401
- },
402
- "clock2": {
403
- "hour": 0,
404
- "minute": 1441
483
+ "input": {
484
+ "clock1": {
485
+ "hour": 0,
486
+ "minute": 1
487
+ },
488
+ "clock2": {
489
+ "hour": 0,
490
+ "minute": 1441
491
+ }
405
492
  },
406
493
  "expected": true
407
494
  },
408
495
  {
409
496
  "description": "clocks with minute overflow by several days",
410
497
  "property": "equal",
411
- "clock1": {
412
- "hour": 2,
413
- "minute": 2
414
- },
415
- "clock2": {
416
- "hour": 2,
417
- "minute": 4322
498
+ "input": {
499
+ "clock1": {
500
+ "hour": 2,
501
+ "minute": 2
502
+ },
503
+ "clock2": {
504
+ "hour": 2,
505
+ "minute": 4322
506
+ }
418
507
  },
419
508
  "expected": true
420
509
  },
421
510
  {
422
511
  "description": "clocks with negative minute",
423
512
  "property": "equal",
424
- "clock1": {
425
- "hour": 2,
426
- "minute": 40
427
- },
428
- "clock2": {
429
- "hour": 3,
430
- "minute": -20
513
+ "input": {
514
+ "clock1": {
515
+ "hour": 2,
516
+ "minute": 40
517
+ },
518
+ "clock2": {
519
+ "hour": 3,
520
+ "minute": -20
521
+ }
431
522
  },
432
523
  "expected": true
433
524
  },
434
525
  {
435
526
  "description": "clocks with negative minute that wraps",
436
527
  "property": "equal",
437
- "clock1": {
438
- "hour": 4,
439
- "minute": 10
440
- },
441
- "clock2": {
442
- "hour": 5,
443
- "minute": -1490
528
+ "input": {
529
+ "clock1": {
530
+ "hour": 4,
531
+ "minute": 10
532
+ },
533
+ "clock2": {
534
+ "hour": 5,
535
+ "minute": -1490
536
+ }
444
537
  },
445
538
  "expected": true
446
539
  },
447
540
  {
448
541
  "description": "clocks with negative minute that wraps multiple times",
449
542
  "property": "equal",
450
- "clock1": {
451
- "hour": 6,
452
- "minute": 15
453
- },
454
- "clock2": {
455
- "hour": 6,
456
- "minute": -4305
543
+ "input": {
544
+ "clock1": {
545
+ "hour": 6,
546
+ "minute": 15
547
+ },
548
+ "clock2": {
549
+ "hour": 6,
550
+ "minute": -4305
551
+ }
457
552
  },
458
553
  "expected": true
459
554
  },
460
555
  {
461
556
  "description": "clocks with negative hours and minutes",
462
557
  "property": "equal",
463
- "clock1": {
464
- "hour": 7,
465
- "minute": 32
466
- },
467
- "clock2": {
468
- "hour": -12,
469
- "minute": -268
558
+ "input": {
559
+ "clock1": {
560
+ "hour": 7,
561
+ "minute": 32
562
+ },
563
+ "clock2": {
564
+ "hour": -12,
565
+ "minute": -268
566
+ }
470
567
  },
471
568
  "expected": true
472
569
  },
473
570
  {
474
571
  "description": "clocks with negative hours and minutes that wrap",
475
572
  "property": "equal",
476
- "clock1": {
477
- "hour": 18,
478
- "minute": 7
479
- },
480
- "clock2": {
481
- "hour": -54,
482
- "minute": -11513
573
+ "input": {
574
+ "clock1": {
575
+ "hour": 18,
576
+ "minute": 7
577
+ },
578
+ "clock2": {
579
+ "hour": -54,
580
+ "minute": -11513
581
+ }
483
582
  },
484
583
  "expected": true
485
584
  }