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
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.2.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module AcronymTest
4
4
 
@@ -20,14 +20,10 @@ let ``Punctuation`` () =
20
20
  abbreviate "First In, First Out" |> should equal "FIFO"
21
21
 
22
22
  [<Fact(Skip = "Remove to run test")>]
23
- let ``All caps words`` () =
24
- abbreviate "PHP: Hypertext Preprocessor" |> should equal "PHP"
25
-
26
- [<Fact(Skip = "Remove to run test")>]
27
- let ``Non-acronym all caps word`` () =
23
+ let ``All caps word`` () =
28
24
  abbreviate "GNU Image Manipulation Program" |> should equal "GIMP"
29
25
 
30
26
  [<Fact(Skip = "Remove to run test")>]
31
- let ``Hyphenated`` () =
27
+ let ``Punctuation without whitespace`` () =
32
28
  abbreviate "Complementary metal-oxide semiconductor" |> should equal "CMOS"
33
29
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.1.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.2.0 of the canonical data.
2
2
 
3
3
  module AnagramTest
4
4
 
@@ -12,16 +12,6 @@ let ``No matches`` () =
12
12
  let candidates = ["hello"; "world"; "zombies"; "pants"]
13
13
  anagrams candidates "diaper" |> should be Empty
14
14
 
15
- [<Fact(Skip = "Remove to run test")>]
16
- let ``Detects simple anagram`` () =
17
- let candidates = ["tan"; "stand"; "at"]
18
- anagrams candidates "ant" |> should equal ["tan"]
19
-
20
- [<Fact(Skip = "Remove to run test")>]
21
- let ``Does not detect false positives`` () =
22
- let candidates = ["eagle"]
23
- anagrams candidates "galea" |> should be Empty
24
-
25
15
  [<Fact(Skip = "Remove to run test")>]
26
16
  let ``Detects two anagrams`` () =
27
17
  let candidates = ["stream"; "pigeon"; "maters"]
@@ -42,11 +32,6 @@ let ``Detects three anagrams`` () =
42
32
  let candidates = ["gallery"; "ballerina"; "regally"; "clergy"; "largely"; "leading"]
43
33
  anagrams candidates "allergy" |> should equal ["gallery"; "regally"; "largely"]
44
34
 
45
- [<Fact(Skip = "Remove to run test")>]
46
- let ``Does not detect identical words`` () =
47
- let candidates = ["corn"; "dark"; "Corn"; "rank"; "CORN"; "cron"; "park"]
48
- anagrams candidates "corn" |> should equal ["cron"]
49
-
50
35
  [<Fact(Skip = "Remove to run test")>]
51
36
  let ``Does not detect non-anagrams with identical checksum`` () =
52
37
  let candidates = ["last"]
@@ -67,11 +52,6 @@ let ``Detects anagrams using case-insensitive possible matches`` () =
67
52
  let candidates = ["cashregister"; "Carthorse"; "radishes"]
68
53
  anagrams candidates "orchestra" |> should equal ["Carthorse"]
69
54
 
70
- [<Fact(Skip = "Remove to run test")>]
71
- let ``Does not detect a word as its own anagram`` () =
72
- let candidates = ["Banana"]
73
- anagrams candidates "banana" |> should be Empty
74
-
75
55
  [<Fact(Skip = "Remove to run test")>]
76
56
  let ``Does not detect a anagram if the original word is repeated`` () =
77
57
  let candidates = ["go Go GO"]
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.2.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module BookStoreTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.2.0 of the canonical data.
2
2
 
3
3
  module ComplexNumbersTest
4
4
 
@@ -14,6 +14,30 @@ let ``Imaginary unit`` () =
14
14
  real sut |> should (equalWithin 0.000000001) -1.0
15
15
  imaginary sut |> should (equalWithin 0.000000001) 0.0
16
16
 
17
+ [<Fact(Skip = "Remove to run test")>]
18
+ let ``Real part of a purely real number`` () =
19
+ real (create 1.0 0.0) |> should equal 1.0
20
+
21
+ [<Fact(Skip = "Remove to run test")>]
22
+ let ``Real part of a purely imaginary number`` () =
23
+ real (create 0.0 1.0) |> should equal 0.0
24
+
25
+ [<Fact(Skip = "Remove to run test")>]
26
+ let ``Real part of a number with real and imaginary part`` () =
27
+ real (create 1.0 2.0) |> should equal 1.0
28
+
29
+ [<Fact(Skip = "Remove to run test")>]
30
+ let ``Imaginary part of a purely real number`` () =
31
+ imaginary (create 1.0 0.0) |> should equal 0.0
32
+
33
+ [<Fact(Skip = "Remove to run test")>]
34
+ let ``Imaginary part of a purely imaginary number`` () =
35
+ imaginary (create 0.0 1.0) |> should equal 1.0
36
+
37
+ [<Fact(Skip = "Remove to run test")>]
38
+ let ``Imaginary part of a number with real and imaginary part`` () =
39
+ imaginary (create 1.0 2.0) |> should equal 2.0
40
+
17
41
  [<Fact(Skip = "Remove to run test")>]
18
42
  let ``Add purely real numbers`` () =
19
43
  let sut = add (create 1.0 0.0) (create 2.0 0.0)
@@ -124,30 +148,6 @@ let ``Conjugate a number with real and imaginary part`` () =
124
148
  real sut |> should (equalWithin 0.000000001) 1.0
125
149
  imaginary sut |> should (equalWithin 0.000000001) -1.0
126
150
 
127
- [<Fact(Skip = "Remove to run test")>]
128
- let ``Real part of a purely real number`` () =
129
- real (create 1.0 0.0) |> should equal 1.0
130
-
131
- [<Fact(Skip = "Remove to run test")>]
132
- let ``Real part of a purely imaginary number`` () =
133
- real (create 0.0 1.0) |> should equal 0.0
134
-
135
- [<Fact(Skip = "Remove to run test")>]
136
- let ``Real part of a number with real and imaginary part`` () =
137
- real (create 1.0 2.0) |> should equal 1.0
138
-
139
- [<Fact(Skip = "Remove to run test")>]
140
- let ``Imaginary part of a purely real number`` () =
141
- imaginary (create 1.0 0.0) |> should equal 0.0
142
-
143
- [<Fact(Skip = "Remove to run test")>]
144
- let ``Imaginary part of a purely imaginary number`` () =
145
- imaginary (create 0.0 1.0) |> should equal 1.0
146
-
147
- [<Fact(Skip = "Remove to run test")>]
148
- let ``Imaginary part of a number with real and imaginary part`` () =
149
- imaginary (create 1.0 2.0) |> should equal 2.0
150
-
151
151
  [<Fact(Skip = "Remove to run test")>]
152
152
  let ``Euler's identity/formula`` () =
153
153
  let sut = exp (create 0.0 Math.PI)
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.1.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module CustomSetTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 2.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 2.1.0 of the canonical data.
2
2
 
3
3
  module FoodChainTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
2
 
3
3
  module GigasecondTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 2.0.1 of the canonical data.
1
+ // This file was auto-generated based on version 2.1.0 of the canonical data.
2
2
 
3
3
  module HammingTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
2
 
3
3
  module HelloWorldTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
2
 
3
3
  module LargestSeriesProductTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.2.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module LeapTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.1.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.2.0 of the canonical data.
2
2
 
3
3
  module MarkdownTest
4
4
 
@@ -9,55 +9,55 @@ open Markdown
9
9
 
10
10
  [<Fact>]
11
11
  let ``Parses normal text as a paragraph`` () =
12
- let input = "This will be a paragraph"
12
+ let markdown = "This will be a paragraph"
13
13
  let expected = "<p>This will be a paragraph</p>"
14
- parse input |> should equal expected
14
+ parse markdown |> should equal expected
15
15
 
16
16
  [<Fact>]
17
17
  let ``Parsing italics`` () =
18
- let input = "_This will be italic_"
18
+ let markdown = "_This will be italic_"
19
19
  let expected = "<p><em>This will be italic</em></p>"
20
- parse input |> should equal expected
20
+ parse markdown |> should equal expected
21
21
 
22
22
  [<Fact>]
23
23
  let ``Parsing bold text`` () =
24
- let input = "__This will be bold__"
24
+ let markdown = "__This will be bold__"
25
25
  let expected = "<p><strong>This will be bold</strong></p>"
26
- parse input |> should equal expected
26
+ parse markdown |> should equal expected
27
27
 
28
28
  [<Fact>]
29
29
  let ``Mixed normal, italics and bold text`` () =
30
- let input = "This will _be_ __mixed__"
30
+ let markdown = "This will _be_ __mixed__"
31
31
  let expected = "<p>This will <em>be</em> <strong>mixed</strong></p>"
32
- parse input |> should equal expected
32
+ parse markdown |> should equal expected
33
33
 
34
34
  [<Fact>]
35
35
  let ``With h1 header level`` () =
36
- let input = "# This will be an h1"
36
+ let markdown = "# This will be an h1"
37
37
  let expected = "<h1>This will be an h1</h1>"
38
- parse input |> should equal expected
38
+ parse markdown |> should equal expected
39
39
 
40
40
  [<Fact>]
41
41
  let ``With h2 header level`` () =
42
- let input = "## This will be an h2"
42
+ let markdown = "## This will be an h2"
43
43
  let expected = "<h2>This will be an h2</h2>"
44
- parse input |> should equal expected
44
+ parse markdown |> should equal expected
45
45
 
46
46
  [<Fact>]
47
47
  let ``With h6 header level`` () =
48
- let input = "###### This will be an h6"
48
+ let markdown = "###### This will be an h6"
49
49
  let expected = "<h6>This will be an h6</h6>"
50
- parse input |> should equal expected
50
+ parse markdown |> should equal expected
51
51
 
52
52
  [<Fact>]
53
53
  let ``Unordered lists`` () =
54
- let input = "* Item 1\n* Item 2"
54
+ let markdown = "* Item 1\n* Item 2"
55
55
  let expected = "<ul><li>Item 1</li><li>Item 2</li></ul>"
56
- parse input |> should equal expected
56
+ parse markdown |> should equal expected
57
57
 
58
58
  [<Fact>]
59
59
  let ``With a little bit of everything`` () =
60
- let input = "# Header!\n* __Bold Item__\n* _Italic Item_"
60
+ let markdown = "# Header!\n* __Bold Item__\n* _Italic Item_"
61
61
  let expected = "<h1>Header!</h1><ul><li><strong>Bold Item</strong></li><li><em>Italic Item</em></li></ul>"
62
- parse input |> should equal expected
62
+ parse markdown |> should equal expected
63
63
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
2
 
3
3
  module MinesweeperTest
4
4
 
@@ -9,19 +9,19 @@ open Minesweeper
9
9
 
10
10
  [<Fact>]
11
11
  let ``No rows`` () =
12
- let input: string list = []
12
+ let minefield: string list = []
13
13
  let expected: string list = []
14
- annotate input |> should equal expected
14
+ annotate minefield |> should equal expected
15
15
 
16
16
  [<Fact(Skip = "Remove to run test")>]
17
17
  let ``No columns`` () =
18
- let input = [""]
18
+ let minefield = [""]
19
19
  let expected = [""]
20
- annotate input |> should equal expected
20
+ annotate minefield |> should equal expected
21
21
 
22
22
  [<Fact(Skip = "Remove to run test")>]
23
23
  let ``No mines`` () =
24
- let input =
24
+ let minefield =
25
25
  [ " ";
26
26
  " ";
27
27
  " " ]
@@ -29,11 +29,11 @@ let ``No mines`` () =
29
29
  [ " ";
30
30
  " ";
31
31
  " " ]
32
- annotate input |> should equal expected
32
+ annotate minefield |> should equal expected
33
33
 
34
34
  [<Fact(Skip = "Remove to run test")>]
35
- let ``Board with only mines`` () =
36
- let input =
35
+ let ``Minefield with only mines`` () =
36
+ let minefield =
37
37
  [ "***";
38
38
  "***";
39
39
  "***" ]
@@ -41,11 +41,11 @@ let ``Board with only mines`` () =
41
41
  [ "***";
42
42
  "***";
43
43
  "***" ]
44
- annotate input |> should equal expected
44
+ annotate minefield |> should equal expected
45
45
 
46
46
  [<Fact(Skip = "Remove to run test")>]
47
47
  let ``Mine surrounded by spaces`` () =
48
- let input =
48
+ let minefield =
49
49
  [ " ";
50
50
  " * ";
51
51
  " " ]
@@ -53,11 +53,11 @@ let ``Mine surrounded by spaces`` () =
53
53
  [ "111";
54
54
  "1*1";
55
55
  "111" ]
56
- annotate input |> should equal expected
56
+ annotate minefield |> should equal expected
57
57
 
58
58
  [<Fact(Skip = "Remove to run test")>]
59
59
  let ``Space surrounded by mines`` () =
60
- let input =
60
+ let minefield =
61
61
  [ "***";
62
62
  "* *";
63
63
  "***" ]
@@ -65,23 +65,23 @@ let ``Space surrounded by mines`` () =
65
65
  [ "***";
66
66
  "*8*";
67
67
  "***" ]
68
- annotate input |> should equal expected
68
+ annotate minefield |> should equal expected
69
69
 
70
70
  [<Fact(Skip = "Remove to run test")>]
71
71
  let ``Horizontal line`` () =
72
- let input = [" * * "]
72
+ let minefield = [" * * "]
73
73
  let expected = ["1*2*1"]
74
- annotate input |> should equal expected
74
+ annotate minefield |> should equal expected
75
75
 
76
76
  [<Fact(Skip = "Remove to run test")>]
77
77
  let ``Horizontal line, mines at edges`` () =
78
- let input = ["* *"]
78
+ let minefield = ["* *"]
79
79
  let expected = ["*1 1*"]
80
- annotate input |> should equal expected
80
+ annotate minefield |> should equal expected
81
81
 
82
82
  [<Fact(Skip = "Remove to run test")>]
83
83
  let ``Vertical line`` () =
84
- let input =
84
+ let minefield =
85
85
  [ " ";
86
86
  "*";
87
87
  " ";
@@ -93,11 +93,11 @@ let ``Vertical line`` () =
93
93
  "2";
94
94
  "*";
95
95
  "1" ]
96
- annotate input |> should equal expected
96
+ annotate minefield |> should equal expected
97
97
 
98
98
  [<Fact(Skip = "Remove to run test")>]
99
99
  let ``Vertical line, mines at edges`` () =
100
- let input =
100
+ let minefield =
101
101
  [ "*";
102
102
  " ";
103
103
  " ";
@@ -109,11 +109,11 @@ let ``Vertical line, mines at edges`` () =
109
109
  " ";
110
110
  "1";
111
111
  "*" ]
112
- annotate input |> should equal expected
112
+ annotate minefield |> should equal expected
113
113
 
114
114
  [<Fact(Skip = "Remove to run test")>]
115
115
  let ``Cross`` () =
116
- let input =
116
+ let minefield =
117
117
  [ " * ";
118
118
  " * ";
119
119
  "*****";
@@ -125,11 +125,11 @@ let ``Cross`` () =
125
125
  "*****";
126
126
  "25*52";
127
127
  " 2*2 " ]
128
- annotate input |> should equal expected
128
+ annotate minefield |> should equal expected
129
129
 
130
130
  [<Fact(Skip = "Remove to run test")>]
131
- let ``Large board`` () =
132
- let input =
131
+ let ``Large minefield`` () =
132
+ let minefield =
133
133
  [ " * * ";
134
134
  " * ";
135
135
  " * ";
@@ -143,5 +143,5 @@ let ``Large board`` () =
143
143
  "112*4*";
144
144
  "1*22*2";
145
145
  "111111" ]
146
- annotate input |> should equal expected
146
+ annotate minefield |> should equal expected
147
147
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 2.0.0 of the canonical data.
1
+ // This file was auto-generated based on version 2.1.0 of the canonical data.
2
2
 
3
3
  module NthPrimeTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.2.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module NucleotideCountTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.3.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.4.0 of the canonical data.
2
2
 
3
3
  module PangramTest
4
4
 
@@ -1,4 +1,4 @@
1
- // This file was auto-generated based on version 1.2.0 of the canonical data.
1
+ // This file was auto-generated based on version 1.3.0 of the canonical data.
2
2
 
3
3
  module PascalsTriangleTest
4
4