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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "perfect-numbers",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "Perfect numbers",
@@ -8,19 +8,25 @@
8
8
  {
9
9
  "description": "Smallest perfect number is classified correctly",
10
10
  "property": "classify",
11
- "input": 6,
11
+ "input": {
12
+ "number": 6
13
+ },
12
14
  "expected": "perfect"
13
15
  },
14
16
  {
15
17
  "description": "Medium perfect number is classified correctly",
16
18
  "property": "classify",
17
- "input": 28,
19
+ "input": {
20
+ "number": 28
21
+ },
18
22
  "expected": "perfect"
19
23
  },
20
24
  {
21
25
  "description": "Large perfect number is classified correctly",
22
26
  "property": "classify",
23
- "input": 33550336,
27
+ "input": {
28
+ "number": 33550336
29
+ },
24
30
  "expected": "perfect"
25
31
  }
26
32
  ]
@@ -31,19 +37,25 @@
31
37
  {
32
38
  "description": "Smallest abundant number is classified correctly",
33
39
  "property": "classify",
34
- "input": 12,
40
+ "input": {
41
+ "number": 12
42
+ },
35
43
  "expected": "abundant"
36
44
  },
37
45
  {
38
46
  "description": "Medium abundant number is classified correctly",
39
47
  "property": "classify",
40
- "input": 30,
48
+ "input": {
49
+ "number": 30
50
+ },
41
51
  "expected": "abundant"
42
52
  },
43
53
  {
44
54
  "description": "Large abundant number is classified correctly",
45
55
  "property": "classify",
46
- "input": 33550335,
56
+ "input": {
57
+ "number": 33550335
58
+ },
47
59
  "expected": "abundant"
48
60
  }
49
61
  ]
@@ -54,31 +66,41 @@
54
66
  {
55
67
  "description": "Smallest prime deficient number is classified correctly",
56
68
  "property": "classify",
57
- "input": 2,
69
+ "input": {
70
+ "number": 2
71
+ },
58
72
  "expected": "deficient"
59
73
  },
60
74
  {
61
75
  "description": "Smallest non-prime deficient number is classified correctly",
62
76
  "property": "classify",
63
- "input": 4,
77
+ "input": {
78
+ "number": 4
79
+ },
64
80
  "expected": "deficient"
65
81
  },
66
82
  {
67
83
  "description": "Medium deficient number is classified correctly",
68
84
  "property": "classify",
69
- "input": 32,
85
+ "input": {
86
+ "number": 32
87
+ },
70
88
  "expected": "deficient"
71
89
  },
72
90
  {
73
91
  "description": "Large deficient number is classified correctly",
74
92
  "property": "classify",
75
- "input": 33550337,
93
+ "input": {
94
+ "number": 33550337
95
+ },
76
96
  "expected": "deficient"
77
97
  },
78
98
  {
79
99
  "description": "Edge case (no factors other than itself) is classified correctly",
80
100
  "property": "classify",
81
- "input": 1,
101
+ "input": {
102
+ "number": 1
103
+ },
82
104
  "expected": "deficient"
83
105
  }
84
106
  ]
@@ -89,7 +111,9 @@
89
111
  {
90
112
  "description": "Zero is rejected (not a natural number)",
91
113
  "property": "classify",
92
- "input": 0,
114
+ "input": {
115
+ "number": 0
116
+ },
93
117
  "expected": {
94
118
  "error": "Classification is only possible for natural numbers."
95
119
  }
@@ -97,7 +121,9 @@
97
121
  {
98
122
  "description": "Negative integer is rejected (not a natural number)",
99
123
  "property": "classify",
100
- "input": -1,
124
+ "input": {
125
+ "number": -1
126
+ },
101
127
  "expected": {
102
128
  "error": "Classification is only possible for natural numbers."
103
129
  }
@@ -105,4 +131,4 @@
105
131
  ]
106
132
  }
107
133
  ]
108
- }
134
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "phone-number",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "Cleanup user-entered phone numbers",
@@ -13,88 +13,116 @@
13
13
  {
14
14
  "description": "cleans the number",
15
15
  "property": "clean",
16
- "phrase": "(223) 456-7890",
16
+ "input": {
17
+ "phrase": "(223) 456-7890"
18
+ },
17
19
  "expected": "2234567890"
18
20
  },
19
21
  {
20
22
  "description": "cleans numbers with dots",
21
23
  "property": "clean",
22
- "phrase": "223.456.7890",
24
+ "input": {
25
+ "phrase": "223.456.7890"
26
+ },
23
27
  "expected": "2234567890"
24
28
  },
25
29
  {
26
30
  "description": "cleans numbers with multiple spaces",
27
31
  "property": "clean",
28
- "phrase": "223 456 7890 ",
32
+ "input": {
33
+ "phrase": "223 456 7890 "
34
+ },
29
35
  "expected": "2234567890"
30
36
  },
31
37
  {
32
38
  "description": "invalid when 9 digits",
33
39
  "property": "clean",
34
- "phrase": "123456789",
40
+ "input": {
41
+ "phrase": "123456789"
42
+ },
35
43
  "expected": null
36
44
  },
37
45
  {
38
46
  "description": "invalid when 11 digits does not start with a 1",
39
47
  "property": "clean",
40
- "phrase": "22234567890",
48
+ "input": {
49
+ "phrase": "22234567890"
50
+ },
41
51
  "expected": null
42
52
  },
43
53
  {
44
54
  "description": "valid when 11 digits and starting with 1",
45
55
  "property": "clean",
46
- "phrase": "12234567890",
56
+ "input": {
57
+ "phrase": "12234567890"
58
+ },
47
59
  "expected": "2234567890"
48
60
  },
49
61
  {
50
62
  "description": "valid when 11 digits and starting with 1 even with punctuation",
51
63
  "property": "clean",
52
- "phrase": "+1 (223) 456-7890",
64
+ "input": {
65
+ "phrase": "+1 (223) 456-7890"
66
+ },
53
67
  "expected": "2234567890"
54
68
  },
55
69
  {
56
70
  "description": "invalid when more than 11 digits",
57
71
  "property": "clean",
58
- "phrase": "321234567890",
72
+ "input": {
73
+ "phrase": "321234567890"
74
+ },
59
75
  "expected": null
60
76
  },
61
77
  {
62
78
  "description": "invalid with letters",
63
79
  "property": "clean",
64
- "phrase": "123-abc-7890",
80
+ "input": {
81
+ "phrase": "123-abc-7890"
82
+ },
65
83
  "expected": null
66
84
  },
67
85
  {
68
86
  "description": "invalid with punctuations",
69
87
  "property": "clean",
70
- "phrase": "123-@:!-7890",
88
+ "input": {
89
+ "phrase": "123-@:!-7890"
90
+ },
71
91
  "expected": null
72
92
  },
73
93
  {
74
94
  "description": "invalid if area code starts with 0",
75
95
  "property": "clean",
76
- "phrase": "(023) 456-7890",
96
+ "input": {
97
+ "phrase": "(023) 456-7890"
98
+ },
77
99
  "expected": null
78
100
  },
79
101
  {
80
102
  "description": "invalid if area code starts with 1",
81
103
  "property": "clean",
82
- "phrase": "(123) 456-7890",
104
+ "input": {
105
+ "phrase": "(123) 456-7890"
106
+ },
83
107
  "expected": null
84
108
  },
85
109
  {
86
110
  "description": "invalid if exchange code starts with 0",
87
111
  "property": "clean",
88
- "phrase": "(223) 056-7890",
112
+ "input": {
113
+ "phrase": "(223) 056-7890"
114
+ },
89
115
  "expected": null
90
116
  },
91
117
  {
92
118
  "description": "invalid if exchange code starts with 1",
93
119
  "property": "clean",
94
- "phrase": "(223) 156-7890",
120
+ "input": {
121
+ "phrase": "(223) 156-7890"
122
+ },
95
123
  "expected": null
96
124
  }
97
125
  ]
98
126
  }
99
127
  ]
100
- }
128
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "pig-latin",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "ay is added to words that start with vowels",
@@ -8,37 +8,49 @@
8
8
  {
9
9
  "description": "word beginning with a",
10
10
  "property": "translate",
11
- "input": "apple",
11
+ "input": {
12
+ "phrase": "apple"
13
+ },
12
14
  "expected": "appleay"
13
15
  },
14
16
  {
15
17
  "description": "word beginning with e",
16
18
  "property": "translate",
17
- "input": "ear",
19
+ "input": {
20
+ "phrase": "ear"
21
+ },
18
22
  "expected": "earay"
19
23
  },
20
24
  {
21
25
  "description": "word beginning with i",
22
26
  "property": "translate",
23
- "input": "igloo",
27
+ "input": {
28
+ "phrase": "igloo"
29
+ },
24
30
  "expected": "iglooay"
25
31
  },
26
32
  {
27
33
  "description": "word beginning with o",
28
34
  "property": "translate",
29
- "input": "object",
35
+ "input": {
36
+ "phrase": "object"
37
+ },
30
38
  "expected": "objectay"
31
39
  },
32
40
  {
33
41
  "description": "word beginning with u",
34
42
  "property": "translate",
35
- "input": "under",
43
+ "input": {
44
+ "phrase": "under"
45
+ },
36
46
  "expected": "underay"
37
47
  },
38
48
  {
39
49
  "description": "word beginning with a vowel and followed by a qu",
40
50
  "property": "translate",
41
- "input": "equal",
51
+ "input": {
52
+ "phrase": "equal"
53
+ },
42
54
  "expected": "equalay"
43
55
  }
44
56
  ]
@@ -49,25 +61,33 @@
49
61
  {
50
62
  "description": "word beginning with p",
51
63
  "property": "translate",
52
- "input": "pig",
64
+ "input": {
65
+ "phrase": "pig"
66
+ },
53
67
  "expected": "igpay"
54
68
  },
55
69
  {
56
70
  "description": "word beginning with k",
57
71
  "property": "translate",
58
- "input": "koala",
72
+ "input": {
73
+ "phrase": "koala"
74
+ },
59
75
  "expected": "oalakay"
60
76
  },
61
77
  {
62
78
  "description": "word beginning with x",
63
79
  "property": "translate",
64
- "input": "xenon",
80
+ "input": {
81
+ "phrase": "xenon"
82
+ },
65
83
  "expected": "enonxay"
66
84
  },
67
85
  {
68
86
  "description": "word beginning with q without a following u",
69
87
  "property": "translate",
70
- "input": "qat",
88
+ "input": {
89
+ "phrase": "qat"
90
+ },
71
91
  "expected": "atqay"
72
92
  }
73
93
  ]
@@ -78,37 +98,49 @@
78
98
  {
79
99
  "description": "word beginning with ch",
80
100
  "property": "translate",
81
- "input": "chair",
101
+ "input": {
102
+ "phrase": "chair"
103
+ },
82
104
  "expected": "airchay"
83
105
  },
84
106
  {
85
107
  "description": "word beginning with qu",
86
108
  "property": "translate",
87
- "input": "queen",
109
+ "input": {
110
+ "phrase": "queen"
111
+ },
88
112
  "expected": "eenquay"
89
113
  },
90
114
  {
91
115
  "description": "word beginning with qu and a preceding consonant",
92
116
  "property": "translate",
93
- "input": "square",
117
+ "input": {
118
+ "phrase": "square"
119
+ },
94
120
  "expected": "aresquay"
95
121
  },
96
122
  {
97
123
  "description": "word beginning with th",
98
124
  "property": "translate",
99
- "input": "therapy",
125
+ "input": {
126
+ "phrase": "therapy"
127
+ },
100
128
  "expected": "erapythay"
101
129
  },
102
130
  {
103
131
  "description": "word beginning with thr",
104
132
  "property": "translate",
105
- "input": "thrush",
133
+ "input": {
134
+ "phrase": "thrush"
135
+ },
106
136
  "expected": "ushthray"
107
137
  },
108
138
  {
109
139
  "description": "word beginning with sch",
110
140
  "property": "translate",
111
- "input": "school",
141
+ "input": {
142
+ "phrase": "school"
143
+ },
112
144
  "expected": "oolschay"
113
145
  }
114
146
  ]
@@ -119,13 +151,17 @@
119
151
  {
120
152
  "description": "word beginning with yt",
121
153
  "property": "translate",
122
- "input": "yttria",
154
+ "input": {
155
+ "phrase": "yttria"
156
+ },
123
157
  "expected": "yttriaay"
124
158
  },
125
159
  {
126
160
  "description": "word beginning with xr",
127
161
  "property": "translate",
128
- "input": "xray",
162
+ "input": {
163
+ "phrase": "xray"
164
+ },
129
165
  "expected": "xrayay"
130
166
  }
131
167
  ]
@@ -136,19 +172,25 @@
136
172
  {
137
173
  "description": "y is treated like a consonant at the beginning of a word",
138
174
  "property": "translate",
139
- "input": "yellow",
175
+ "input": {
176
+ "phrase": "yellow"
177
+ },
140
178
  "expected": "ellowyay"
141
179
  },
142
180
  {
143
181
  "description": "y is treated like a vowel at the end of a consonant cluster",
144
182
  "property": "translate",
145
- "input": "rhythm",
183
+ "input": {
184
+ "phrase": "rhythm"
185
+ },
146
186
  "expected": "ythmrhay"
147
187
  },
148
188
  {
149
189
  "description": "y as second letter in two letter word",
150
190
  "property": "translate",
151
- "input": "my",
191
+ "input": {
192
+ "phrase": "my"
193
+ },
152
194
  "expected": "ymay"
153
195
  }
154
196
  ]
@@ -159,10 +201,12 @@
159
201
  {
160
202
  "description": "a whole phrase",
161
203
  "property": "translate",
162
- "input": "quick fast run",
204
+ "input": {
205
+ "phrase": "quick fast run"
206
+ },
163
207
  "expected": "ickquay astfay unray"
164
208
  }
165
209
  ]
166
210
  }
167
211
  ]
168
- }
212
+ }