trackler 2.2.1.91 → 2.2.1.92

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/diamond/metadata.yml +1 -1
  4. data/problem-specifications/exercises/food-chain/canonical-data.json +42 -22
  5. data/problem-specifications/exercises/hello-world/canonical-data.json +2 -1
  6. data/problem-specifications/exercises/isbn-verifier/metadata.yml +2 -1
  7. data/problem-specifications/exercises/largest-series-product/canonical-data.json +62 -33
  8. data/problem-specifications/exercises/leap/canonical-data.json +14 -6
  9. data/problem-specifications/exercises/list-ops/canonical-data.json +6 -6
  10. data/problem-specifications/exercises/markdown/canonical-data.json +29 -11
  11. data/problem-specifications/exercises/minesweeper/canonical-data.json +80 -56
  12. data/problem-specifications/exercises/minesweeper/metadata.yml +1 -1
  13. data/problem-specifications/exercises/nth-prime/canonical-data.json +20 -8
  14. data/problem-specifications/exercises/nucleotide-count/canonical-data.json +17 -7
  15. data/problem-specifications/exercises/pascals-triangle/canonical-data.json +28 -10
  16. data/problem-specifications/exercises/perfect-numbers/canonical-data.json +41 -15
  17. data/problem-specifications/exercises/phone-number/canonical-data.json +44 -16
  18. data/problem-specifications/exercises/pig-latin/canonical-data.json +68 -24
  19. data/problem-specifications/exercises/reverse-string/metadata.yml +1 -1
  20. data/problem-specifications/exercises/rna-transcription/canonical-data.json +17 -7
  21. data/problem-specifications/exercises/roman-numerals/canonical-data.json +56 -20
  22. data/problem-specifications/exercises/rotational-cipher/canonical-data.json +42 -22
  23. data/problem-specifications/exercises/saddle-points/canonical-data.json +34 -24
  24. data/problem-specifications/exercises/scrabble-score/canonical-data.json +35 -13
  25. data/problem-specifications/exercises/secret-handshake/canonical-data.json +34 -12
  26. data/problem-specifications/exercises/sieve/canonical-data.json +16 -6
  27. data/problem-specifications/exercises/space-age/canonical-data.json +34 -18
  28. data/problem-specifications/exercises/spiral-matrix/canonical-data.json +19 -7
  29. data/problem-specifications/exercises/sublist/canonical-data.json +69 -35
  30. data/problem-specifications/exercises/twelve-days/canonical-data.json +61 -31
  31. data/problem-specifications/exercises/variable-length-quantity/canonical-data.json +79 -27
  32. data/problem-specifications/exercises/zebra-puzzle/canonical-data.json +3 -1
  33. data/tracks/csharp/exercises/accumulate/{HINTS.md → .meta/hints.md} +0 -0
  34. data/tracks/csharp/exercises/allergies/{HINTS.md → .meta/hints.md} +0 -0
  35. data/tracks/csharp/exercises/alphametics/{HINTS.md → .meta/hints.md} +0 -0
  36. data/tracks/csharp/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
  37. data/tracks/csharp/exercises/beer-song/{HINTS.md → .meta/hints.md} +0 -0
  38. data/tracks/csharp/exercises/clock/{HINTS.md → .meta/hints.md} +0 -0
  39. data/tracks/csharp/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
  40. data/tracks/csharp/exercises/diamond/{HINTS.md → .meta/hints.md} +0 -0
  41. data/tracks/csharp/exercises/difference-of-squares/{HINTS.md → .meta/hints.md} +0 -0
  42. data/tracks/csharp/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
  43. data/tracks/csharp/exercises/dot-dsl/{HINTS.md → .meta/hints.md} +0 -0
  44. data/tracks/csharp/exercises/food-chain/{HINTS.md → .meta/hints.md} +0 -0
  45. data/tracks/csharp/exercises/forth/{HINTS.md → .meta/hints.md} +0 -0
  46. data/tracks/csharp/exercises/hangman/{HINTS.md → .meta/hints.md} +0 -0
  47. data/tracks/csharp/exercises/house/{HINTS.md → .meta/hints.md} +0 -0
  48. data/tracks/csharp/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
  49. data/tracks/csharp/exercises/markdown/{HINTS.md → .meta/hints.md} +0 -0
  50. data/tracks/csharp/exercises/nth-prime/{HINTS.md → .meta/hints.md} +0 -0
  51. data/tracks/csharp/exercises/nucleotide-count/{HINTS.md → .meta/hints.md} +0 -0
  52. data/tracks/csharp/exercises/palindrome-products/{HINTS.md → .meta/hints.md} +0 -0
  53. data/tracks/csharp/exercises/proverb/{HINTS.md → .meta/hints.md} +0 -0
  54. data/tracks/csharp/exercises/react/{HINTS.md → .meta/hints.md} +0 -0
  55. data/tracks/csharp/exercises/roman-numerals/{HINTS.md → .meta/hints.md} +0 -0
  56. data/tracks/csharp/exercises/saddle-points/{HINTS.md → .meta/hints.md} +0 -0
  57. data/tracks/csharp/exercises/sgf-parsing/{HINTS.md → .meta/hints.md} +0 -0
  58. data/tracks/csharp/exercises/simple-linked-list/{HINTS.md → .meta/hints.md} +0 -0
  59. data/tracks/csharp/exercises/sublist/{HINTS.md → .meta/hints.md} +0 -0
  60. data/tracks/csharp/exercises/sum-of-multiples/{HINTS.md → .meta/hints.md} +0 -0
  61. data/tracks/csharp/exercises/twelve-days/{HINTS.md → .meta/hints.md} +0 -0
  62. data/tracks/csharp/exercises/variable-length-quantity/{HINTS.md → .meta/hints.md} +0 -0
  63. data/tracks/csharp/exercises/word-search/{HINTS.md → .meta/hints.md} +0 -0
  64. data/tracks/csharp/exercises/wordy/{HINTS.md → .meta/hints.md} +0 -0
  65. data/tracks/csharp/exercises/zebra-puzzle/{HINTS.md → .meta/hints.md} +0 -0
  66. data/tracks/csharp/exercises/zipper/{HINTS.md → .meta/hints.md} +0 -0
  67. data/tracks/delphi/exercises/secret-handshake/uTestSecretHandshake.pas +1 -1
  68. data/tracks/elixir/config/exercise_readme.go.tmpl +34 -4
  69. data/tracks/elixir/exercises/accumulate/README.md +1 -6
  70. data/tracks/elixir/exercises/acronym/README.md +1 -4
  71. data/tracks/elixir/exercises/all-your-base/README.md +2 -5
  72. data/tracks/elixir/exercises/allergies/README.md +1 -4
  73. data/tracks/elixir/exercises/anagram/README.md +1 -3
  74. data/tracks/elixir/exercises/atbash-cipher/README.md +3 -4
  75. data/tracks/elixir/exercises/bank-account/README.md +1 -4
  76. data/tracks/elixir/exercises/beer-song/README.md +3 -5
  77. data/tracks/elixir/exercises/binary-search-tree/README.md +43 -0
  78. data/tracks/elixir/exercises/binary-search/README.md +1 -3
  79. data/tracks/elixir/exercises/binary/README.md +3 -3
  80. data/tracks/elixir/exercises/bob/README.md +2 -2
  81. data/tracks/elixir/exercises/bowling/README.md +21 -9
  82. data/tracks/elixir/exercises/bracket-push/README.md +1 -3
  83. data/tracks/elixir/exercises/change/README.md +2 -4
  84. data/tracks/elixir/exercises/clock/README.md +1 -3
  85. data/tracks/elixir/exercises/collatz-conjecture/README.md +2 -4
  86. data/tracks/elixir/exercises/connect/README.md +2 -5
  87. data/tracks/elixir/exercises/crypto-square/README.md +11 -11
  88. data/tracks/elixir/exercises/custom-set/README.md +1 -4
  89. data/tracks/elixir/exercises/diamond/README.md +7 -9
  90. data/tracks/elixir/exercises/difference-of-squares/README.md +1 -3
  91. data/tracks/elixir/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
  92. data/tracks/elixir/exercises/diffie-hellman/README.md +1 -3
  93. data/tracks/elixir/exercises/dominoes/README.md +4 -7
  94. data/tracks/elixir/exercises/dot-dsl/README.md +2 -5
  95. data/tracks/elixir/exercises/etl/README.md +4 -4
  96. data/tracks/elixir/exercises/flatten-array/README.md +2 -5
  97. data/tracks/elixir/exercises/forth/README.md +1 -4
  98. data/tracks/elixir/exercises/gigasecond/README.md +1 -3
  99. data/tracks/elixir/exercises/grade-school/README.md +1 -4
  100. data/tracks/elixir/exercises/grains/README.md +1 -4
  101. data/tracks/elixir/exercises/grep/README.md +13 -15
  102. data/tracks/elixir/exercises/hamming/README.md +1 -3
  103. data/tracks/elixir/exercises/hello-world/README.md +23 -0
  104. data/tracks/elixir/exercises/hexadecimal/README.md +1 -3
  105. data/tracks/elixir/exercises/isbn-verifier/README.md +26 -24
  106. data/tracks/elixir/exercises/isogram/README.md +3 -4
  107. data/tracks/elixir/exercises/kindergarten-garden/README.md +14 -16
  108. data/tracks/elixir/exercises/largest-series-product/README.md +1 -3
  109. data/tracks/elixir/exercises/leap/README.md +2 -4
  110. data/tracks/elixir/exercises/list-ops/README.md +1 -4
  111. data/tracks/elixir/exercises/luhn/README.md +8 -10
  112. data/tracks/elixir/exercises/markdown/README.md +1 -4
  113. data/tracks/elixir/exercises/matrix/README.md +7 -7
  114. data/tracks/elixir/exercises/meetup/README.md +17 -16
  115. data/tracks/elixir/exercises/minesweeper/README.md +1 -4
  116. data/tracks/elixir/exercises/nth-prime/README.md +1 -3
  117. data/tracks/elixir/exercises/nucleotide-count/README.md +9 -25
  118. data/tracks/elixir/exercises/ocr-numbers/README.md +7 -9
  119. data/tracks/elixir/exercises/palindrome-products/README.md +16 -19
  120. data/tracks/elixir/exercises/pangram/README.md +2 -4
  121. data/tracks/elixir/exercises/parallel-letter-frequency/README.md +1 -4
  122. data/tracks/elixir/exercises/pascals-triangle/README.md +3 -5
  123. data/tracks/elixir/exercises/perfect-numbers/README.md +3 -5
  124. data/tracks/elixir/exercises/phone-number/README.md +5 -6
  125. data/tracks/elixir/exercises/pig-latin/README.md +1 -3
  126. data/tracks/elixir/exercises/poker/README.md +1 -3
  127. data/tracks/elixir/exercises/prime-factors/README.md +1 -3
  128. data/tracks/elixir/exercises/protein-translation/README.md +3 -6
  129. data/tracks/elixir/exercises/pythagorean-triplet/README.md +4 -6
  130. data/tracks/elixir/exercises/queen-attack/README.md +2 -4
  131. data/tracks/elixir/exercises/rail-fence-cipher/README.md +13 -10
  132. data/tracks/elixir/exercises/raindrops/README.md +1 -3
  133. data/tracks/elixir/exercises/rna-transcription/README.md +2 -4
  134. data/tracks/elixir/exercises/robot-simulator/README.md +1 -3
  135. data/tracks/elixir/exercises/roman-numerals/README.md +2 -4
  136. data/tracks/elixir/exercises/rotational-cipher/README.md +3 -4
  137. data/tracks/elixir/exercises/run-length-encoding/README.md +5 -7
  138. data/tracks/elixir/exercises/saddle-points/README.md +3 -5
  139. data/tracks/elixir/exercises/say/README.md +1 -3
  140. data/tracks/elixir/exercises/scale-generator/README.md +1 -5
  141. data/tracks/elixir/exercises/scrabble-score/README.md +4 -4
  142. data/tracks/elixir/exercises/secret-handshake/{HINTS.md → .meta/hints.md} +0 -0
  143. data/tracks/elixir/exercises/secret-handshake/README.md +4 -4
  144. data/tracks/elixir/exercises/series/README.md +1 -3
  145. data/tracks/elixir/exercises/sieve/README.md +1 -3
  146. data/tracks/elixir/exercises/simple-cipher/README.md +6 -10
  147. data/tracks/elixir/exercises/simple-linked-list/README.md +1 -3
  148. data/tracks/elixir/exercises/space-age/README.md +2 -4
  149. data/tracks/elixir/exercises/spiral-matrix/README.md +5 -5
  150. data/tracks/elixir/exercises/strain/{HINTS.md → .meta/hints.md} +0 -0
  151. data/tracks/elixir/exercises/strain/README.md +1 -3
  152. data/tracks/elixir/exercises/sublist/README.md +1 -4
  153. data/tracks/elixir/exercises/sum-of-multiples/README.md +4 -9
  154. data/tracks/elixir/exercises/tournament/{HINTS.md → .meta/hints.md} +0 -0
  155. data/tracks/elixir/exercises/tournament/README.md +6 -9
  156. data/tracks/elixir/exercises/transpose/README.md +6 -7
  157. data/tracks/elixir/exercises/triangle/README.md +10 -9
  158. data/tracks/elixir/exercises/twelve-days/README.md +2 -4
  159. data/tracks/elixir/exercises/word-count/README.md +2 -5
  160. data/tracks/elixir/exercises/wordy/README.md +1 -8
  161. data/tracks/elixir/exercises/zipper/README.md +2 -5
  162. data/tracks/fortran/README.md +1 -1
  163. data/tracks/fsharp/config/exercise_readme.go.tmpl +0 -3
  164. data/tracks/fsharp/exercises/accumulate/{HINTS.md → .meta/hints.md} +0 -0
  165. data/tracks/fsharp/exercises/alphametics/{HINTS.md → .meta/hints.md} +0 -0
  166. data/tracks/fsharp/exercises/beer-song/{HINTS.md → .meta/hints.md} +0 -0
  167. data/tracks/fsharp/exercises/diamond/{HINTS.md → .meta/hints.md} +0 -0
  168. data/tracks/fsharp/exercises/difference-of-squares/{HINTS.md → .meta/hints.md} +0 -0
  169. data/tracks/fsharp/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
  170. data/tracks/fsharp/exercises/food-chain/{HINTS.md → .meta/hints.md} +0 -0
  171. data/tracks/fsharp/exercises/gigasecond/{HINTS.md → .meta/hints.md} +0 -0
  172. data/tracks/fsharp/exercises/grade-school/{HINTS.md → .meta/hints.md} +0 -0
  173. data/tracks/fsharp/exercises/grains/{HINTS.md → .meta/hints.md} +0 -0
  174. data/tracks/fsharp/exercises/house/{HINTS.md → .meta/hints.md} +0 -0
  175. data/tracks/fsharp/exercises/lens-person/{HINTS.md → .meta/hints.md} +0 -0
  176. data/tracks/fsharp/exercises/linked-list/{HINTS.md → .meta/hints.md} +0 -0
  177. data/tracks/fsharp/exercises/nth-prime/{HINTS.md → .meta/hints.md} +0 -0
  178. data/tracks/fsharp/exercises/palindrome-products/{HINTS.md → .meta/hints.md} +0 -0
  179. data/tracks/fsharp/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
  180. data/tracks/fsharp/exercises/poker/{HINTS.md → .meta/hints.md} +0 -0
  181. data/tracks/fsharp/exercises/proverb/{HINTS.md → .meta/hints.md} +0 -0
  182. data/tracks/fsharp/exercises/raindrops/{HINTS.md → .meta/hints.md} +0 -0
  183. data/tracks/fsharp/exercises/rna-transcription/{HINTS.md → .meta/hints.md} +0 -0
  184. data/tracks/fsharp/exercises/space-age/{HINTS.md → .meta/hints.md} +0 -0
  185. data/tracks/fsharp/exercises/twelve-days/{HINTS.md → .meta/hints.md} +0 -0
  186. data/tracks/fsharp/exercises/wordy/{HINTS.md → .meta/hints.md} +0 -0
  187. data/tracks/java/exercises/acronym/.meta/version +1 -1
  188. data/tracks/java/exercises/acronym/src/test/java/AcronymTest.java +6 -6
  189. data/tracks/java/exercises/raindrops/.meta/version +1 -0
  190. data/tracks/java/exercises/raindrops/src/test/java/RaindropConverterTest.java +3 -1
  191. data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +5 -5
  192. data/tracks/java/exercises/word-count/.meta/src/reference/java/WordCount.java +1 -1
  193. data/tracks/java/exercises/word-count/.meta/version +1 -0
  194. data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +73 -3
  195. data/tracks/mips/config/exercise_readme.go.tmpl +0 -3
  196. data/tracks/perl5/config/exercise_readme.go.tmpl +0 -3
  197. data/tracks/php/exercises/bob/{HINTS.md → .meta/hints.md} +0 -0
  198. data/tracks/php/exercises/roman-numerals/roman-numerals_test.php +1 -1
  199. data/tracks/pony/config/exercise_readme.go.tmpl +0 -3
  200. data/tracks/python/config.json +14 -0
  201. data/tracks/python/exercises/isbn-verifier/README.md +43 -0
  202. data/tracks/python/exercises/isbn-verifier/example.py +8 -0
  203. data/tracks/python/exercises/isbn-verifier/isbn_verifier.py +2 -0
  204. data/tracks/python/exercises/isbn-verifier/isbn_verifier_test.py +54 -0
  205. data/tracks/rust/exercises/atbash-cipher/example.rs +0 -2
  206. data/tracks/rust/exercises/bracket-push/{HINTS.md → .meta/hints.md} +0 -0
  207. data/tracks/rust/exercises/crypto-square/example.rs +0 -2
  208. data/tracks/rust/exercises/etl/example.rs +0 -1
  209. data/tracks/rust/exercises/forth/example.rs +0 -1
  210. data/tracks/rust/exercises/largest-series-product/{HINTS.md → .meta/hints.md} +0 -0
  211. data/tracks/rust/exercises/pangram/example.rs +0 -1
  212. data/tracks/rust/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
  213. data/tracks/rust/exercises/scrabble-score/tests/scrabble-score.rs +9 -2
  214. data/tracks/rust/exercises/space-age/{HINTS.md → .meta/hints.md} +0 -0
  215. data/tracks/rust/exercises/triangle/{HINTS.md → .meta/hints.md} +0 -0
  216. data/tracks/scala/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
  217. data/tracks/scala/exercises/connect/{HINTS.md → .meta/hints.md} +0 -0
  218. data/tracks/scala/exercises/gigasecond/{HINTS.md → .meta/hints.md} +0 -0
  219. data/tracks/scala/exercises/hamming/{HINTS.md → .meta/hints.md} +0 -0
  220. data/tracks/scala/exercises/hello-world/{HINTS.md → .meta/hints.md} +0 -0
  221. data/tracks/scala/exercises/leap/{HINTS.md → .meta/hints.md} +0 -0
  222. data/tracks/scala/exercises/nucleotide-count/{HINTS.md → .meta/hints.md} +0 -0
  223. data/tracks/scala/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
  224. data/tracks/scala/exercises/phone-number/{HINTS.md → .meta/hints.md} +0 -0
  225. data/tracks/scala/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
  226. data/tracks/scala/exercises/roman-numerals/{HINTS.md → .meta/hints.md} +0 -0
  227. data/tracks/scala/exercises/variable-length-quantity/{HINTS.md → .meta/hints.md} +0 -0
  228. metadata +87 -86
  229. data/tracks/elixir/docs/EXERCISE_README_INSERT.md +0 -35
  230. data/tracks/fsharp/docs/EXERCISE_README_INSERT.md +0 -0
  231. data/tracks/mips/docs/EXERCISE_README_INSERT.md +0 -0
  232. data/tracks/perl5/docs/EXERCISE_README_INSERT.md +0 -0
  233. data/tracks/pony/docs/EXERCISE_README_INSERT.md +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d0759fde5e7a0eee2f75f1c2cc9a2ed90310754
4
- data.tar.gz: a0db10c084cadfa3d40fea32d96e5b7fce007ef0
3
+ metadata.gz: f788d6aab478aaf66e348921d374b3e1585973f6
4
+ data.tar.gz: 8eb41f39bd9349a8c2d778f7a658efd3d677a918
5
5
  SHA512:
6
- metadata.gz: 5ac8ed9b5e0445fb609833b2a814293490fc28b589ebd568976a4dbbb286ea596b445654be0137c6a4fa1a6c7facab26e9bc84538a4a25b25ef8855ce7b8a610
7
- data.tar.gz: 20b3e3c11950cbc5b706586b8ca9b951b418fb6d449834042dcde60f252751dbad41b081701dec5a8a38f89cba1b9d129ae03f9306b586c9b75d6203c61695bb
6
+ metadata.gz: 20f227fc28dc75a4d90368dde1a75f73cbf1e277bf79e7164fab5d8eb01307ea519f81aa1a388dbd07b78fdb6d2c86794bf33f3c7e12cb83fd9aff21bd84f402
7
+ data.tar.gz: 44ee0515e374fbdf13a258f4e0be701c3df720299604c73277f88e8aefe966466f97ea24654ebfcc7f3e694341d5f83b4421e227ad12bec02c6735cb38b84c2d
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.91"
2
+ VERSION = "2.2.1.92"
3
3
  end
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  blurb: "Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point."
3
3
  source: "Seb Rose"
4
- source_url: "http://claysnow.co.uk/recycling-tests-in-tdd/"
4
+ source_url: "http://claysnow.co.uk/recycling-tests-in-tdd/"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "food-chain",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "comments": [
5
5
  "JSON doesn't allow for multi-line strings, so all verses are presented ",
6
6
  "here as arrays of strings. It's up to the test generator to join the ",
@@ -18,8 +18,10 @@
18
18
  {
19
19
  "description": "fly",
20
20
  "property": "recite",
21
- "startVerse": 1,
22
- "endVerse": 1,
21
+ "input": {
22
+ "startVerse": 1,
23
+ "endVerse": 1
24
+ },
23
25
  "expected": [
24
26
  "I know an old lady who swallowed a fly.",
25
27
  "I don't know why she swallowed the fly. Perhaps she'll die."
@@ -28,8 +30,10 @@
28
30
  {
29
31
  "description": "spider",
30
32
  "property": "recite",
31
- "startVerse": 2,
32
- "endVerse": 2,
33
+ "input": {
34
+ "startVerse": 2,
35
+ "endVerse": 2
36
+ },
33
37
  "expected": [
34
38
  "I know an old lady who swallowed a spider.",
35
39
  "It wriggled and jiggled and tickled inside her.",
@@ -40,8 +44,10 @@
40
44
  {
41
45
  "description": "bird",
42
46
  "property": "recite",
43
- "startVerse": 3,
44
- "endVerse": 3,
47
+ "input": {
48
+ "startVerse": 3,
49
+ "endVerse": 3
50
+ },
45
51
  "expected": [
46
52
  "I know an old lady who swallowed a bird.",
47
53
  "How absurd to swallow a bird!",
@@ -53,8 +59,10 @@
53
59
  {
54
60
  "description": "cat",
55
61
  "property": "recite",
56
- "startVerse": 4,
57
- "endVerse": 4,
62
+ "input": {
63
+ "startVerse": 4,
64
+ "endVerse": 4
65
+ },
58
66
  "expected": [
59
67
  "I know an old lady who swallowed a cat.",
60
68
  "Imagine that, to swallow a cat!",
@@ -67,8 +75,10 @@
67
75
  {
68
76
  "description": "dog",
69
77
  "property": "recite",
70
- "startVerse": 5,
71
- "endVerse": 5,
78
+ "input": {
79
+ "startVerse": 5,
80
+ "endVerse": 5
81
+ },
72
82
  "expected": [
73
83
  "I know an old lady who swallowed a dog.",
74
84
  "What a hog, to swallow a dog!",
@@ -82,8 +92,10 @@
82
92
  {
83
93
  "description": "goat",
84
94
  "property": "recite",
85
- "startVerse": 6,
86
- "endVerse": 6,
95
+ "input": {
96
+ "startVerse": 6,
97
+ "endVerse": 6
98
+ },
87
99
  "expected": [
88
100
  "I know an old lady who swallowed a goat.",
89
101
  "Just opened her throat and swallowed a goat!",
@@ -98,8 +110,10 @@
98
110
  {
99
111
  "description": "cow",
100
112
  "property": "recite",
101
- "startVerse": 7,
102
- "endVerse": 7,
113
+ "input": {
114
+ "startVerse": 7,
115
+ "endVerse": 7
116
+ },
103
117
  "expected": [
104
118
  "I know an old lady who swallowed a cow.",
105
119
  "I don't know how she swallowed a cow!",
@@ -115,8 +129,10 @@
115
129
  {
116
130
  "description": "horse",
117
131
  "property": "recite",
118
- "startVerse": 8,
119
- "endVerse": 8,
132
+ "input": {
133
+ "startVerse": 8,
134
+ "endVerse": 8
135
+ },
120
136
  "expected": [
121
137
  "I know an old lady who swallowed a horse.",
122
138
  "She's dead, of course!"
@@ -125,8 +141,10 @@
125
141
  {
126
142
  "description": "multiple verses",
127
143
  "property": "recite",
128
- "startVerse": 1,
129
- "endVerse": 3,
144
+ "input": {
145
+ "startVerse": 1,
146
+ "endVerse": 3
147
+ },
130
148
  "expected": [
131
149
  "I know an old lady who swallowed a fly.",
132
150
  "I don't know why she swallowed the fly. Perhaps she'll die.",
@@ -146,8 +164,10 @@
146
164
  {
147
165
  "description": "full song",
148
166
  "property": "recite",
149
- "startVerse": 1,
150
- "endVerse": 8,
167
+ "input": {
168
+ "startVerse": 1,
169
+ "endVerse": 8
170
+ },
151
171
  "expected": [
152
172
  "I know an old lady who swallowed a fly.",
153
173
  "I don't know why she swallowed the fly. Perhaps she'll die.",
@@ -204,4 +224,4 @@
204
224
  ]
205
225
  }
206
226
  ]
207
- }
227
+ }
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "exercise": "hello-world",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "Say Hi!",
7
7
  "property": "hello",
8
+ "input": {},
8
9
  "expected": "Hello, World!"
9
10
  }
10
11
  ]
@@ -1,4 +1,5 @@
1
1
  ---
2
+ title: "ISBN Verifier"
2
3
  blurb: "Check if a given string is a valid ISBN-10 number."
3
4
  source: "Converting a string into a number and some basic processing utilizing a relatable real world example."
4
- source_url: "https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation"
5
+ source_url: "https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation"
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "exercise": "largest-series-product",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "comments": [
5
5
  "A negative expected value means the input is invalid.",
6
6
  "Different languages may handle this differently.",
7
7
  "e.g. raise exceptions, return (int, error), return Option<int>, etc.",
8
-
9
8
  "Some languages specifically test the string->digits conversion",
10
9
  "and the 'slices of size N' operation.",
11
10
  "These cases *deliberately* do not cover those two operations.",
@@ -18,71 +17,91 @@
18
17
  {
19
18
  "description": "finds the largest product if span equals length",
20
19
  "property": "largestProduct",
21
- "digits": "29",
22
- "span": 2,
20
+ "input": {
21
+ "digits": "29",
22
+ "span": 2
23
+ },
23
24
  "expected": 18
24
25
  },
25
26
  {
26
27
  "description": "can find the largest product of 2 with numbers in order",
27
28
  "property": "largestProduct",
28
- "digits": "0123456789",
29
- "span": 2,
29
+ "input": {
30
+ "digits": "0123456789",
31
+ "span": 2
32
+ },
30
33
  "expected": 72
31
34
  },
32
35
  {
33
36
  "description": "can find the largest product of 2",
34
37
  "property": "largestProduct",
35
- "digits": "576802143",
36
- "span": 2,
38
+ "input": {
39
+ "digits": "576802143",
40
+ "span": 2
41
+ },
37
42
  "expected": 48
38
43
  },
39
44
  {
40
45
  "description": "can find the largest product of 3 with numbers in order",
41
46
  "property": "largestProduct",
42
- "digits": "0123456789",
43
- "span": 3,
47
+ "input": {
48
+ "digits": "0123456789",
49
+ "span": 3
50
+ },
44
51
  "expected": 504
45
52
  },
46
53
  {
47
54
  "description": "can find the largest product of 3",
48
55
  "property": "largestProduct",
49
- "digits": "1027839564",
50
- "span": 3,
56
+ "input": {
57
+ "digits": "1027839564",
58
+ "span": 3
59
+ },
51
60
  "expected": 270
52
61
  },
53
62
  {
54
63
  "description": "can find the largest product of 5 with numbers in order",
55
64
  "property": "largestProduct",
56
- "digits": "0123456789",
57
- "span": 5,
65
+ "input": {
66
+ "digits": "0123456789",
67
+ "span": 5
68
+ },
58
69
  "expected": 15120
59
70
  },
60
71
  {
61
72
  "description": "can get the largest product of a big number",
62
73
  "property": "largestProduct",
63
- "digits": "73167176531330624919225119674426574742355349194934",
64
- "span": 6,
74
+ "input": {
75
+ "digits": "73167176531330624919225119674426574742355349194934",
76
+ "span": 6
77
+ },
65
78
  "expected": 23520
66
79
  },
67
80
  {
68
81
  "description": "reports zero if the only digits are zero",
69
82
  "property": "largestProduct",
70
- "digits": "0000",
71
- "span": 2,
83
+ "input": {
84
+ "digits": "0000",
85
+ "span": 2
86
+ },
72
87
  "expected": 0
73
88
  },
74
89
  {
75
90
  "description": "reports zero if all spans include zero",
76
91
  "property": "largestProduct",
77
- "digits": "99099",
78
- "span": 3,
92
+ "input": {
93
+ "digits": "99099",
94
+ "span": 3
95
+ },
79
96
  "expected": 0
80
97
  },
81
98
  {
82
99
  "description": "rejects span longer than string length",
83
100
  "property": "largestProduct",
84
- "digits": "123",
85
- "span": 4,
101
+ "input": {
102
+ "digits": "123",
103
+ "span": 4
104
+ },
86
105
  "expected": -1
87
106
  },
88
107
  {
@@ -102,8 +121,10 @@
102
121
  ],
103
122
  "description": "reports 1 for empty string and empty product (0 span)",
104
123
  "property": "largestProduct",
105
- "digits": "",
106
- "span": 0,
124
+ "input": {
125
+ "digits": "",
126
+ "span": 0
127
+ },
107
128
  "expected": 1
108
129
  },
109
130
  {
@@ -113,30 +134,38 @@
113
134
  ],
114
135
  "description": "reports 1 for nonempty string and empty product (0 span)",
115
136
  "property": "largestProduct",
116
- "digits": "123",
117
- "span": 0,
137
+ "input": {
138
+ "digits": "123",
139
+ "span": 0
140
+ },
118
141
  "expected": 1
119
142
  },
120
143
  {
121
144
  "description": "rejects empty string and nonzero span",
122
145
  "property": "largestProduct",
123
- "digits": "",
124
- "span": 1,
146
+ "input": {
147
+ "digits": "",
148
+ "span": 1
149
+ },
125
150
  "expected": -1
126
151
  },
127
152
  {
128
153
  "description": "rejects invalid character in digits",
129
154
  "property": "largestProduct",
130
- "digits": "1234a5",
131
- "span": 2,
155
+ "input": {
156
+ "digits": "1234a5",
157
+ "span": 2
158
+ },
132
159
  "expected": -1
133
160
  },
134
161
  {
135
162
  "description": "rejects negative span",
136
163
  "property": "largestProduct",
137
- "digits": "12345",
138
- "span": -1,
164
+ "input": {
165
+ "digits": "12345",
166
+ "span": -1
167
+ },
139
168
  "expected": -1
140
169
  }
141
170
  ]
142
- }
171
+ }
@@ -1,30 +1,38 @@
1
1
  {
2
2
  "exercise": "leap",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "year not divisible by 4: common year",
7
7
  "property": "leapYear",
8
- "input": 2015,
8
+ "input": {
9
+ "year": 2015
10
+ },
9
11
  "expected": false
10
12
  },
11
13
  {
12
14
  "description": "year divisible by 4, not divisible by 100: leap year",
13
15
  "property": "leapYear",
14
- "input": 1996,
16
+ "input": {
17
+ "year": 1996
18
+ },
15
19
  "expected": true
16
20
  },
17
21
  {
18
22
  "description": "year divisible by 100, not divisible by 400: common year",
19
23
  "property": "leapYear",
20
- "input": 2100,
24
+ "input": {
25
+ "year": 2100
26
+ },
21
27
  "expected": false
22
28
  },
23
29
  {
24
30
  "description": "year divisible by 400: leap year",
25
31
  "property": "leapYear",
26
- "input": 2000,
32
+ "input": {
33
+ "year": 2000
34
+ },
27
35
  "expected": true
28
36
  }
29
37
  ]
30
- }
38
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "list-ops",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "comments": [
5
5
  "Though there are no specifications here for dealing with large lists,",
6
6
  "implementers may add tests for handling large lists to ensure that the",
@@ -57,14 +57,14 @@
57
57
  "description": "empty list",
58
58
  "property": "filter",
59
59
  "list": [],
60
- "function": "value modulo 2 == 1",
60
+ "function": "(x) -> x modulo 2 == 1",
61
61
  "expected": []
62
62
  },
63
63
  {
64
64
  "description": "non-empty list",
65
65
  "property": "filter",
66
66
  "list": [1, 2, 3, 5],
67
- "function": "value modulo 2 == 1",
67
+ "function": "(x) -> x modulo 2 == 1",
68
68
  "expected": [1, 3, 5]
69
69
  }
70
70
  ]
@@ -87,20 +87,20 @@
87
87
  ]
88
88
  },
89
89
  {
90
- "description": "return a list of elements whos values equal the list value transformed by the mapping function",
90
+ "description": "return a list of elements whose values equal the list value transformed by the mapping function",
91
91
  "cases": [
92
92
  {
93
93
  "description": "empty list",
94
94
  "property": "map",
95
95
  "list": [],
96
- "function": "value + 1",
96
+ "function": "(x) -> x + 1",
97
97
  "expected": []
98
98
  },
99
99
  {
100
100
  "description": "non-empty list",
101
101
  "property": "map",
102
102
  "list": [1, 3, 5, 7],
103
- "function": "value + 1",
103
+ "function": "(x) -> x + 1",
104
104
  "expected": [2, 4, 6, 8]
105
105
  }
106
106
  ]