trackler 2.2.1.85 → 2.2.1.86

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/alphametics/canonical-data.json +29 -11
  4. data/problem-specifications/exercises/binary-search-tree/canonical-data.json +177 -0
  5. data/problem-specifications/package.json +2 -2
  6. data/problem-specifications/yarn.lock +61 -51
  7. data/tracks/bash/CONTRIBUTING.md +10 -6
  8. data/tracks/bash/README.md +1 -0
  9. data/tracks/bash/exercises/acronym/README.md +1 -1
  10. data/tracks/bash/exercises/anagram/README.md +1 -1
  11. data/tracks/bash/exercises/anagram/{anagram_tests.sh → anagram_test.sh} +0 -0
  12. data/tracks/bash/exercises/armstrong-numbers/armstrong_numbers_test.sh +25 -17
  13. data/tracks/bash/exercises/armstrong-numbers/example.sh +18 -12
  14. data/tracks/bash/exercises/atbash-cipher/README.md +1 -1
  15. data/tracks/bash/exercises/atbash-cipher/{atbash_cipher_tests.sh → atbash_cipher_test.sh} +0 -0
  16. data/tracks/bash/exercises/difference-of-squares/README.md +1 -1
  17. data/tracks/bash/exercises/gigasecond/README.md +1 -1
  18. data/tracks/bash/exercises/hamming/README.md +1 -1
  19. data/tracks/bash/exercises/hello-world/README.md +1 -1
  20. data/tracks/bash/exercises/leap/README.md +1 -1
  21. data/tracks/bash/exercises/luhn/README.md +1 -1
  22. data/tracks/bash/exercises/nucleotide-count/README.md +1 -1
  23. data/tracks/bash/exercises/pangram/README.md +1 -1
  24. data/tracks/bash/exercises/pangram/{pangram_tests.sh → pangram_test.sh} +0 -0
  25. data/tracks/bash/exercises/phone-number/README.md +1 -1
  26. data/tracks/bash/exercises/phone-number/{phone_number_tests.sh → phone_number_test.sh} +0 -0
  27. data/tracks/bash/exercises/raindrops/README.md +1 -1
  28. data/tracks/bash/exercises/rna-transcription/README.md +1 -1
  29. data/tracks/bash/exercises/triangle/example.sh +23 -4
  30. data/tracks/bash/exercises/triangle/triangle_test.sh +17 -0
  31. data/tracks/bash/exercises/two-fer/README.md +1 -1
  32. data/tracks/bash/exercises/word-count/README.md +1 -1
  33. data/tracks/c/config.json +11 -0
  34. data/tracks/c/exercises/complex-numbers/README.md +67 -0
  35. data/tracks/c/exercises/complex-numbers/makefile +27 -0
  36. data/tracks/c/exercises/complex-numbers/src/complex_numbers.c +46 -0
  37. data/tracks/c/exercises/complex-numbers/src/complex_numbers.h +19 -0
  38. data/tracks/c/exercises/complex-numbers/src/example.c +80 -0
  39. data/tracks/c/exercises/complex-numbers/test/test_complex_numbers.c +397 -0
  40. data/tracks/c/exercises/complex-numbers/test/vendor/unity.c +1300 -0
  41. data/tracks/c/exercises/complex-numbers/test/vendor/unity.h +274 -0
  42. data/tracks/c/exercises/complex-numbers/test/vendor/unity_internals.h +701 -0
  43. data/tracks/crystal/.github/stale.yml +18 -0
  44. data/tracks/csharp/exercises/bob/README.md +3 -2
  45. data/tracks/ecmascript/config.json +4 -4
  46. data/tracks/fsharp/exercises/bob/README.md +4 -2
  47. data/tracks/fsharp/exercises/react/ReactTest.fs +137 -74
  48. data/tracks/fsharp/generators/Generators.fs +76 -0
  49. data/tracks/go/exercises/tree-building/tree_test.go +15 -0
  50. data/tracks/haskell/.travis.yml +1 -1
  51. data/tracks/haskell/exercises/accumulate/stack.yaml +1 -1
  52. data/tracks/haskell/exercises/acronym/package.yaml +1 -1
  53. data/tracks/haskell/exercises/acronym/stack.yaml +1 -1
  54. data/tracks/haskell/exercises/all-your-base/package.yaml +1 -1
  55. data/tracks/haskell/exercises/all-your-base/stack.yaml +1 -1
  56. data/tracks/haskell/exercises/all-your-base/test/Tests.hs +6 -6
  57. data/tracks/haskell/exercises/allergies/package.yaml +1 -1
  58. data/tracks/haskell/exercises/allergies/stack.yaml +1 -1
  59. data/tracks/haskell/exercises/alphametics/stack.yaml +1 -1
  60. data/tracks/haskell/exercises/anagram/package.yaml +1 -1
  61. data/tracks/haskell/exercises/anagram/stack.yaml +1 -1
  62. data/tracks/haskell/exercises/atbash-cipher/package.yaml +1 -1
  63. data/tracks/haskell/exercises/atbash-cipher/stack.yaml +1 -1
  64. data/tracks/haskell/exercises/bank-account/stack.yaml +1 -1
  65. data/tracks/haskell/exercises/beer-song/stack.yaml +1 -1
  66. data/tracks/haskell/exercises/binary-search-tree/package.yaml +1 -1
  67. data/tracks/haskell/exercises/binary-search-tree/stack.yaml +1 -1
  68. data/tracks/haskell/exercises/binary-search-tree/test/Tests.hs +3 -0
  69. data/tracks/haskell/exercises/binary/stack.yaml +1 -1
  70. data/tracks/haskell/exercises/bob/package.yaml +1 -1
  71. data/tracks/haskell/exercises/bob/stack.yaml +1 -1
  72. data/tracks/haskell/exercises/bowling/stack.yaml +1 -1
  73. data/tracks/haskell/exercises/bracket-push/package.yaml +1 -1
  74. data/tracks/haskell/exercises/bracket-push/stack.yaml +1 -1
  75. data/tracks/haskell/exercises/change/package.yaml +1 -1
  76. data/tracks/haskell/exercises/change/stack.yaml +1 -1
  77. data/tracks/haskell/exercises/clock/stack.yaml +1 -1
  78. data/tracks/haskell/exercises/collatz-conjecture/package.yaml +1 -1
  79. data/tracks/haskell/exercises/collatz-conjecture/stack.yaml +1 -1
  80. data/tracks/haskell/exercises/complex-numbers/stack.yaml +1 -1
  81. data/tracks/haskell/exercises/connect/package.yaml +1 -1
  82. data/tracks/haskell/exercises/connect/stack.yaml +1 -1
  83. data/tracks/haskell/exercises/crypto-square/package.yaml +1 -1
  84. data/tracks/haskell/exercises/crypto-square/stack.yaml +1 -1
  85. data/tracks/haskell/exercises/custom-set/stack.yaml +1 -1
  86. data/tracks/haskell/exercises/diamond/package.yaml +1 -1
  87. data/tracks/haskell/exercises/diamond/stack.yaml +1 -1
  88. data/tracks/haskell/exercises/difference-of-squares/package.yaml +1 -1
  89. data/tracks/haskell/exercises/difference-of-squares/stack.yaml +1 -1
  90. data/tracks/haskell/exercises/dominoes/package.yaml +1 -1
  91. data/tracks/haskell/exercises/dominoes/stack.yaml +1 -1
  92. data/tracks/haskell/exercises/etl/stack.yaml +1 -1
  93. data/tracks/haskell/exercises/food-chain/stack.yaml +1 -1
  94. data/tracks/haskell/exercises/forth/stack.yaml +1 -1
  95. data/tracks/haskell/exercises/gigasecond/stack.yaml +1 -1
  96. data/tracks/haskell/exercises/go-counting/stack.yaml +1 -1
  97. data/tracks/haskell/exercises/grade-school/stack.yaml +1 -1
  98. data/tracks/haskell/exercises/grains/stack.yaml +1 -1
  99. data/tracks/haskell/exercises/hamming/stack.yaml +1 -1
  100. data/tracks/haskell/exercises/hello-world/stack.yaml +1 -1
  101. data/tracks/haskell/exercises/hexadecimal/stack.yaml +1 -1
  102. data/tracks/haskell/exercises/house/stack.yaml +1 -1
  103. data/tracks/haskell/exercises/isbn-verifier/examples/success-standard/src/IsbnVerifier.hs +1 -0
  104. data/tracks/haskell/exercises/isbn-verifier/package.yaml +1 -1
  105. data/tracks/haskell/exercises/isbn-verifier/stack.yaml +1 -1
  106. data/tracks/haskell/exercises/isbn-verifier/test/Tests.hs +4 -0
  107. data/tracks/haskell/exercises/isogram/stack.yaml +1 -1
  108. data/tracks/haskell/exercises/kindergarten-garden/stack.yaml +1 -1
  109. data/tracks/haskell/exercises/largest-series-product/stack.yaml +1 -1
  110. data/tracks/haskell/exercises/leap/stack.yaml +1 -1
  111. data/tracks/haskell/exercises/lens-person/stack.yaml +1 -1
  112. data/tracks/haskell/exercises/linked-list/stack.yaml +1 -1
  113. data/tracks/haskell/exercises/list-ops/stack.yaml +1 -1
  114. data/tracks/haskell/exercises/luhn/package.yaml +1 -1
  115. data/tracks/haskell/exercises/luhn/stack.yaml +1 -1
  116. data/tracks/haskell/exercises/luhn/test/Tests.hs +1 -1
  117. data/tracks/haskell/exercises/matrix/stack.yaml +1 -1
  118. data/tracks/haskell/exercises/meetup/package.yaml +1 -1
  119. data/tracks/haskell/exercises/meetup/stack.yaml +1 -1
  120. data/tracks/haskell/exercises/minesweeper/stack.yaml +1 -1
  121. data/tracks/haskell/exercises/nth-prime/stack.yaml +1 -1
  122. data/tracks/haskell/exercises/nucleotide-count/stack.yaml +1 -1
  123. data/tracks/haskell/exercises/ocr-numbers/stack.yaml +1 -1
  124. data/tracks/haskell/exercises/octal/stack.yaml +1 -1
  125. data/tracks/haskell/exercises/palindrome-products/stack.yaml +1 -1
  126. data/tracks/haskell/exercises/pangram/stack.yaml +1 -1
  127. data/tracks/haskell/exercises/parallel-letter-frequency/stack.yaml +1 -1
  128. data/tracks/haskell/exercises/pascals-triangle/stack.yaml +1 -1
  129. data/tracks/haskell/exercises/perfect-numbers/stack.yaml +1 -1
  130. data/tracks/haskell/exercises/phone-number/stack.yaml +1 -1
  131. data/tracks/haskell/exercises/pig-latin/stack.yaml +1 -1
  132. data/tracks/haskell/exercises/pov/stack.yaml +1 -1
  133. data/tracks/haskell/exercises/prime-factors/stack.yaml +1 -1
  134. data/tracks/haskell/exercises/pythagorean-triplet/stack.yaml +1 -1
  135. data/tracks/haskell/exercises/queen-attack/stack.yaml +1 -1
  136. data/tracks/haskell/exercises/rail-fence-cipher/package.yaml +1 -1
  137. data/tracks/haskell/exercises/rail-fence-cipher/stack.yaml +1 -1
  138. data/tracks/haskell/exercises/raindrops/stack.yaml +1 -1
  139. data/tracks/haskell/exercises/rna-transcription/package.yaml +1 -1
  140. data/tracks/haskell/exercises/rna-transcription/stack.yaml +1 -1
  141. data/tracks/haskell/exercises/rna-transcription/test/Tests.hs +0 -12
  142. data/tracks/haskell/exercises/robot-name/stack.yaml +1 -1
  143. data/tracks/haskell/exercises/robot-simulator/stack.yaml +1 -1
  144. data/tracks/haskell/exercises/roman-numerals/stack.yaml +1 -1
  145. data/tracks/haskell/exercises/rotational-cipher/stack.yaml +1 -1
  146. data/tracks/haskell/exercises/run-length-encoding/stack.yaml +1 -1
  147. data/tracks/haskell/exercises/saddle-points/stack.yaml +1 -1
  148. data/tracks/haskell/exercises/say/stack.yaml +1 -1
  149. data/tracks/haskell/exercises/scrabble-score/stack.yaml +1 -1
  150. data/tracks/haskell/exercises/secret-handshake/stack.yaml +1 -1
  151. data/tracks/haskell/exercises/series/stack.yaml +1 -1
  152. data/tracks/haskell/exercises/sgf-parsing/stack.yaml +1 -1
  153. data/tracks/haskell/exercises/sieve/stack.yaml +1 -1
  154. data/tracks/haskell/exercises/simple-cipher/stack.yaml +1 -1
  155. data/tracks/haskell/exercises/simple-linked-list/stack.yaml +1 -1
  156. data/tracks/haskell/exercises/space-age/stack.yaml +1 -1
  157. data/tracks/haskell/exercises/spiral-matrix/stack.yaml +1 -1
  158. data/tracks/haskell/exercises/strain/stack.yaml +1 -1
  159. data/tracks/haskell/exercises/sublist/stack.yaml +1 -1
  160. data/tracks/haskell/exercises/sum-of-multiples/stack.yaml +1 -1
  161. data/tracks/haskell/exercises/triangle/stack.yaml +1 -1
  162. data/tracks/haskell/exercises/trinary/stack.yaml +1 -1
  163. data/tracks/haskell/exercises/twelve-days/stack.yaml +1 -1
  164. data/tracks/haskell/exercises/word-count/stack.yaml +1 -1
  165. data/tracks/haskell/exercises/wordy/stack.yaml +1 -1
  166. data/tracks/haskell/exercises/zebra-puzzle/stack.yaml +1 -1
  167. data/tracks/haskell/exercises/zipper/stack.yaml +1 -1
  168. data/tracks/java/config.json +12 -0
  169. data/tracks/java/exercises/alphametics/.meta/src/reference/java/Alphametics.java +125 -0
  170. data/tracks/java/exercises/alphametics/.meta/src/reference/java/UnsolvablePuzzleException.java +2 -0
  171. data/tracks/java/exercises/alphametics/.meta/src/version +1 -0
  172. data/tracks/java/exercises/alphametics/README.md +47 -0
  173. data/tracks/java/exercises/alphametics/build.gradle +18 -0
  174. data/tracks/java/exercises/alphametics/src/main/java/.keep +0 -0
  175. data/tracks/java/exercises/alphametics/src/main/java/UnsolvablePuzzleException.java +2 -0
  176. data/tracks/java/exercises/alphametics/src/test/java/AlphameticsTest.java +150 -0
  177. data/tracks/java/exercises/beer-song/.meta/src/reference/java/BeerSong.java +5 -4
  178. data/tracks/java/exercises/beer-song/.meta/version +1 -0
  179. data/tracks/java/exercises/beer-song/src/test/java/BeerSongTest.java +24 -16
  180. data/tracks/java/exercises/binary-search/.meta/version +1 -0
  181. data/tracks/java/exercises/book-store/.meta/version +1 -0
  182. data/tracks/java/exercises/book-store/src/test/java/BookStoreTest.java +15 -8
  183. data/tracks/java/exercises/circular-buffer/.meta/version +1 -0
  184. data/tracks/java/exercises/list-ops/.meta/version +1 -1
  185. data/tracks/java/exercises/list-ops/src/test/java/ListOpsTest.java +1 -1
  186. data/tracks/java/exercises/nth-prime/.meta/version +1 -0
  187. data/tracks/java/exercises/settings.gradle +1 -0
  188. data/tracks/java/exercises/tournament/.meta/version +1 -0
  189. data/tracks/java/exercises/transpose/.meta/version +1 -0
  190. data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +29 -74
  191. data/tracks/java/exercises/wordy/.meta/version +1 -0
  192. data/tracks/javascript/.eslintignore +0 -1
  193. data/tracks/javascript/config.json +13 -3
  194. data/tracks/javascript/exercises/bowling/example.js +24 -10
  195. data/tracks/javascript/exercises/forth/README.md +56 -0
  196. data/tracks/javascript/exercises/forth/example.js +66 -0
  197. data/tracks/javascript/exercises/forth/forth.spec.js +259 -0
  198. data/tracks/lua/config.json +92 -81
  199. data/tracks/lua/exercises/accumulate/README.md +42 -0
  200. data/tracks/lua/exercises/beer-song/README.md +1 -1
  201. data/tracks/lua/exercises/bob/README.md +2 -0
  202. data/tracks/lua/exercises/crypto-square/README.md +6 -4
  203. data/tracks/lua/exercises/house/README.md +1 -1
  204. data/tracks/lua/exercises/isbn-verifier/README.md +25 -20
  205. data/tracks/lua/exercises/kindergarten-garden/README.md +3 -3
  206. data/tracks/lua/exercises/meetup/README.md +16 -12
  207. data/tracks/lua/exercises/nucleotide-count/README.md +2 -2
  208. data/tracks/lua/exercises/phone-number/README.md +1 -1
  209. data/tracks/lua/exercises/pov/README.md +0 -2
  210. data/tracks/lua/exercises/queen-attack/README.md +22 -22
  211. data/tracks/lua/exercises/rectangles/README.md +9 -9
  212. data/tracks/lua/exercises/reverse-string/README.md +23 -0
  213. data/tracks/lua/exercises/reverse-string/example.lua +7 -0
  214. data/tracks/lua/exercises/reverse-string/reverse-string_spec.lua +24 -0
  215. data/tracks/lua/exercises/secret-handshake/README.md +1 -1
  216. data/tracks/lua/exercises/space-age/README.md +1 -2
  217. data/tracks/lua/exercises/sum-of-multiples/README.md +3 -3
  218. data/tracks/perl6/exercises/two-fer/README.md +1 -1
  219. data/tracks/python/exercises/luhn/luhn_test.py +1 -1
  220. metadata +39 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7892432156062540719c56c731f29a416cd4bbbc
4
- data.tar.gz: be05d71f796bc3f7b829b2d5c09f5f02d91ddd4c
3
+ metadata.gz: ed4856a33354550c10dd3f5a784ad737040f67ae
4
+ data.tar.gz: 8f2cfa2607feca51f6966295583dd16c0de358d2
5
5
  SHA512:
6
- metadata.gz: 77e24716ea69a1a4603e27d4432d633f2c2420b9dbc929a41e706adf9b89c23eae10b3a9db02fa179305e6e294582766f7794525798a149e6a082f4bec9a4a72
7
- data.tar.gz: 6cf193ad2f4aaa78be8aeaaee7f3e7c694cfde813bd573d89f1753fadb9fd8d9f67991b35dad8e821174cca8a1d556eb916994f3190bc78f79b90e587690127c
6
+ metadata.gz: 69c3e3e3ab293cd4aa6633a183fc7627e7577cb679848e662acc4ada1fadaa2b74a73516e86cba35813e02e57ea84aa563095fce8fefc910c9cb7a94f98fa399
7
+ data.tar.gz: 59a594afa02d044bfc351325fe106fd7895a96f551d6e7223005665db42927189164563fdd56b4fd5499b6beed1c13a34f885edb254b04b11f0e2158d8f90b96
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.85"
2
+ VERSION = "2.2.1.86"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "alphametics",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "Solve the alphametics puzzle",
@@ -8,7 +8,9 @@
8
8
  {
9
9
  "description": "puzzle with three letters",
10
10
  "property": "solve",
11
- "puzzle": "I + BB == ILL",
11
+ "input": {
12
+ "puzzle": "I + BB == ILL"
13
+ },
12
14
  "expected": {
13
15
  "I": 1,
14
16
  "B": 9,
@@ -18,19 +20,25 @@
18
20
  {
19
21
  "description": "solution must have unique value for each letter",
20
22
  "property": "solve",
21
- "puzzle": "A == B",
23
+ "input": {
24
+ "puzzle": "A == B"
25
+ },
22
26
  "expected": null
23
27
  },
24
28
  {
25
29
  "description": "leading zero solution is invalid",
26
30
  "property": "solve",
27
- "puzzle": "ACA + DD == BD",
31
+ "input": {
32
+ "puzzle": "ACA + DD == BD"
33
+ },
28
34
  "expected": null
29
35
  },
30
36
  {
31
37
  "description": "puzzle with four letters",
32
38
  "property": "solve",
33
- "puzzle": "AS + A == MOM",
39
+ "input": {
40
+ "puzzle": "AS + A == MOM"
41
+ },
34
42
  "expected": {
35
43
  "A": 9,
36
44
  "S": 2,
@@ -41,7 +49,9 @@
41
49
  {
42
50
  "description": "puzzle with six letters",
43
51
  "property": "solve",
44
- "puzzle": "NO + NO + TOO == LATE",
52
+ "input": {
53
+ "puzzle": "NO + NO + TOO == LATE"
54
+ },
45
55
  "expected": {
46
56
  "N": 7,
47
57
  "O": 4,
@@ -54,7 +64,9 @@
54
64
  {
55
65
  "description": "puzzle with seven letters",
56
66
  "property": "solve",
57
- "puzzle": "HE + SEES + THE == LIGHT",
67
+ "input": {
68
+ "puzzle": "HE + SEES + THE == LIGHT"
69
+ },
58
70
  "expected": {
59
71
  "E": 4,
60
72
  "G": 2,
@@ -68,7 +80,9 @@
68
80
  {
69
81
  "description": "puzzle with eight letters",
70
82
  "property": "solve",
71
- "puzzle": "SEND + MORE == MONEY",
83
+ "input": {
84
+ "puzzle": "SEND + MORE == MONEY"
85
+ },
72
86
  "expected": {
73
87
  "S": 9,
74
88
  "E": 5,
@@ -83,7 +97,9 @@
83
97
  {
84
98
  "description": "puzzle with ten letters",
85
99
  "property": "solve",
86
- "puzzle": "AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE",
100
+ "input": {
101
+ "puzzle": "AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE"
102
+ },
87
103
  "expected": {
88
104
  "A": 5,
89
105
  "D": 3,
@@ -98,9 +114,11 @@
98
114
  }
99
115
  },
100
116
  {
101
- "description": "puzzle with ten letters and 41 addends",
117
+ "description": "puzzle with ten letters and 199 addends",
102
118
  "property": "solve",
103
- "puzzle": "THIS + A + FIRE + THEREFORE + FOR + ALL + HISTORIES + I + TELL + A + TALE + THAT + FALSIFIES + ITS + TITLE + TIS + A + LIE + THE + TALE + OF + THE + LAST + FIRE + HORSES + LATE + AFTER + THE + FIRST + FATHERS + FORESEE + THE + HORRORS + THE + LAST + FREE + TROLL + TERRIFIES + THE + HORSES + OF + FIRE + THE + TROLL + RESTS + AT + THE + HOLE + OF + LOSSES + IT + IS + THERE + THAT + SHE + STORES + ROLES + OF + LEATHERS + AFTER + SHE + SATISFIES + HER + HATE + OFF + THOSE + FEARS + A + TASTE + RISES + AS + SHE + HEARS + THE + LEAST + FAR + HORSE + THOSE + FAST + HORSES + THAT + FIRST + HEAR + THE + TROLL + FLEE + OFF + TO + THE + FOREST + THE + HORSES + THAT + ALERTS + RAISE + THE + STARES + OF + THE + OTHERS + AS + THE + TROLL + ASSAILS + AT + THE + TOTAL + SHIFT + HER + TEETH + TEAR + HOOF + OFF + TORSO + AS + THE + LAST + HORSE + FORFEITS + ITS + LIFE + THE + FIRST + FATHERS + HEAR + OF + THE + HORRORS + THEIR + FEARS + THAT + THE + FIRES + FOR + THEIR + FEASTS + ARREST + AS + THE + FIRST + FATHERS + RESETTLE + THE + LAST + OF + THE + FIRE + HORSES + THE + LAST + TROLL + HARASSES + THE + FOREST + HEART + FREE + AT + LAST + OF + THE + LAST + TROLL + ALL + OFFER + THEIR + FIRE + HEAT + TO + THE + ASSISTERS + FAR + OFF + THE + TROLL + FASTS + ITS + LIFE + SHORTER + AS + STARS + RISE + THE + HORSES + REST + SAFE + AFTER + ALL + SHARE + HOT + FISH + AS + THEIR + AFFILIATES + TAILOR + A + ROOFS + FOR + THEIR + SAFE == FORTRESSES",
119
+ "input": {
120
+ "puzzle": "THIS + A + FIRE + THEREFORE + FOR + ALL + HISTORIES + I + TELL + A + TALE + THAT + FALSIFIES + ITS + TITLE + TIS + A + LIE + THE + TALE + OF + THE + LAST + FIRE + HORSES + LATE + AFTER + THE + FIRST + FATHERS + FORESEE + THE + HORRORS + THE + LAST + FREE + TROLL + TERRIFIES + THE + HORSES + OF + FIRE + THE + TROLL + RESTS + AT + THE + HOLE + OF + LOSSES + IT + IS + THERE + THAT + SHE + STORES + ROLES + OF + LEATHERS + AFTER + SHE + SATISFIES + HER + HATE + OFF + THOSE + FEARS + A + TASTE + RISES + AS + SHE + HEARS + THE + LEAST + FAR + HORSE + THOSE + FAST + HORSES + THAT + FIRST + HEAR + THE + TROLL + FLEE + OFF + TO + THE + FOREST + THE + HORSES + THAT + ALERTS + RAISE + THE + STARES + OF + THE + OTHERS + AS + THE + TROLL + ASSAILS + AT + THE + TOTAL + SHIFT + HER + TEETH + TEAR + HOOF + OFF + TORSO + AS + THE + LAST + HORSE + FORFEITS + ITS + LIFE + THE + FIRST + FATHERS + HEAR + OF + THE + HORRORS + THEIR + FEARS + THAT + THE + FIRES + FOR + THEIR + FEASTS + ARREST + AS + THE + FIRST + FATHERS + RESETTLE + THE + LAST + OF + THE + FIRE + HORSES + THE + LAST + TROLL + HARASSES + THE + FOREST + HEART + FREE + AT + LAST + OF + THE + LAST + TROLL + ALL + OFFER + THEIR + FIRE + HEAT + TO + THE + ASSISTERS + FAR + OFF + THE + TROLL + FASTS + ITS + LIFE + SHORTER + AS + STARS + RISE + THE + HORSES + REST + SAFE + AFTER + ALL + SHARE + HOT + FISH + AS + THEIR + AFFILIATES + TAILOR + A + ROOFS + FOR + THEIR + SAFE == FORTRESSES"
121
+ },
104
122
  "expected": {
105
123
  "A": 1,
106
124
  "E": 0,
@@ -0,0 +1,177 @@
1
+ {
2
+ "exercise": "binary-search-tree",
3
+ "version": "1.0.0",
4
+ "comments": [
5
+ "Each test case assumes an empty/new tree.",
6
+ "As per exercism/problem-specifications#996 key 'treeData' counts as an input",
7
+ "to test generators.",
8
+ "The key 'treeData' represents an array of numbers for which the data should be ",
9
+ "inserted/added to the tree as it appears in the array from left to right.",
10
+ "e.g. treeData: ['2', '1', '3', '6', '7', '5']",
11
+ "Insert 2. Insert 1. Insert 3. Insert 6, so on...",
12
+ "This canonical-data does not restrict the data type of array elements to either",
13
+ "strings or integers.",
14
+ "The key 'expected' represents tree state as JSON object of schema :",
15
+ "{",
16
+ " 'title':'nodeObject',",
17
+ " 'type':'object',",
18
+ " 'properties':{",
19
+ " 'data':{",
20
+ " 'type':'string'",
21
+ " },",
22
+ " 'left':{",
23
+ " 'type':'nodeObject'",
24
+ " },",
25
+ " 'right':{",
26
+ " 'type':'nodeObject'",
27
+ " }",
28
+ " },",
29
+ " 'required':['data', 'left', 'right']",
30
+ "}"
31
+ ],
32
+ "cases": [{
33
+ "description": "data is retained",
34
+ "property": "data",
35
+ "input": {
36
+ "treeData": ["4"]
37
+ },
38
+ "expected": {
39
+ "data": "4",
40
+ "left": null,
41
+ "right": null
42
+ }
43
+ },
44
+ {
45
+ "description": "insert data at proper node",
46
+ "cases": [{
47
+ "description": "smaller number at left node",
48
+ "property": "data",
49
+ "input": {
50
+ "treeData": ["4", "2"]
51
+ },
52
+ "expected": {
53
+ "data": "4",
54
+ "left": {
55
+ "data": "2",
56
+ "left": null,
57
+ "right": null
58
+ },
59
+ "right": null
60
+ }
61
+ },
62
+ {
63
+ "description": "same number at left node",
64
+ "property": "data",
65
+ "input": {
66
+ "treeData": ["4", "4"]
67
+ },
68
+ "expected": {
69
+ "data": "4",
70
+ "left": {
71
+ "data": "4",
72
+ "left": null,
73
+ "right": null
74
+ },
75
+ "right": null
76
+ }
77
+ },
78
+ {
79
+ "description": "greater number at right node",
80
+ "property": "data",
81
+ "input": {
82
+ "treeData": ["4", "5"]
83
+ },
84
+ "expected": {
85
+ "data": "4",
86
+ "left": null,
87
+ "right": {
88
+ "data": "5",
89
+ "left": null,
90
+ "right": null
91
+ }
92
+ }
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "description": "can create complex tree",
98
+ "property": "data",
99
+ "input": {
100
+ "treeData": ["4", "2", "6", "1", "3", "5", "7"]
101
+ },
102
+ "expected": {
103
+ "data": "4",
104
+ "left": {
105
+ "data": "2",
106
+ "left": {
107
+ "data": "1",
108
+ "left": null,
109
+ "right": null
110
+ },
111
+ "right": {
112
+ "data": "3",
113
+ "left": null,
114
+ "right": null
115
+ }
116
+ },
117
+ "right": {
118
+ "data": "6",
119
+ "left": {
120
+ "data": "5",
121
+ "left": null,
122
+ "right": null
123
+ },
124
+ "right": {
125
+ "data": "7",
126
+ "left": null,
127
+ "right": null
128
+ }
129
+ }
130
+ }
131
+ },
132
+ {
133
+ "description": "can sort data",
134
+ "cases": [{
135
+ "description": "can sort single number",
136
+ "property": "sortedData",
137
+ "input": {
138
+ "treeData": ["2"]
139
+ },
140
+ "expected": ["2"]
141
+ },
142
+ {
143
+ "description": "can sort if second number is smaller than first",
144
+ "property": "sortedData",
145
+ "input": {
146
+ "treeData": ["2", "1"]
147
+ },
148
+ "expected": ["1", "2"]
149
+ },
150
+ {
151
+ "description": "can sort if second number is same as first",
152
+ "property": "sortedData",
153
+ "input": {
154
+ "treeData": ["2", "2"]
155
+ },
156
+ "expected": ["2", "2"]
157
+ },
158
+ {
159
+ "description": "can sort if second number is greater than first",
160
+ "property": "sortedData",
161
+ "input": {
162
+ "treeData": ["2", "3"]
163
+ },
164
+ "expected": ["2", "3"]
165
+ },
166
+ {
167
+ "description": "can sort complex tree",
168
+ "property": "sortedData",
169
+ "input": {
170
+ "treeData": ["2", "1", "3", "6", "7", "5"]
171
+ },
172
+ "expected": ["1", "2", "3", "5", "6", "7"]
173
+ }
174
+ ]
175
+ }
176
+ ]
177
+ }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "problem-specifications",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Shared metadata for exercism exercises.",
5
5
  "main": "index.js",
6
6
  "repository": "git@github.com:exercism/problem-specifications.git",
7
7
  "author": "Tejas Bubane <tejasbubane@gmail.com>",
8
8
  "license": "MIT",
9
9
  "dependencies": {
10
- "ajv-cli": "^1.1.1"
10
+ "ajv-cli": "^2.1.0"
11
11
  },
12
12
  "scripts": {
13
13
  "test": "ajv -s canonical-schema.json -d \"exercises/*/canonical-data.json\"",
@@ -3,46 +3,49 @@
3
3
 
4
4
 
5
5
  abbrev@1:
6
- version "1.1.0"
7
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
8
-
9
- ajv-cli@^1.1.1:
10
6
  version "1.1.1"
11
- resolved "https://registry.yarnpkg.com/ajv-cli/-/ajv-cli-1.1.1.tgz#08ba8006413e888973cfac650c3a95acc2e7c6be"
7
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
8
+
9
+ ajv-cli@^2.1.0:
10
+ version "2.1.0"
11
+ resolved "https://registry.yarnpkg.com/ajv-cli/-/ajv-cli-2.1.0.tgz#26f942ddf4b1d14d3c639cb28db807f02ca3787c"
12
12
  dependencies:
13
- ajv "^4.7.4"
14
- ajv-pack "^0.2.3"
13
+ ajv "^5.0.0"
14
+ ajv-pack "^0.3.0"
15
15
  fast-json-patch "^0.5.6"
16
16
  glob "^7.0.3"
17
+ json-schema-migrate "^0.2.0"
17
18
  minimist "^1.2.0"
18
19
 
19
- ajv-pack@^0.2.3:
20
- version "0.2.7"
21
- resolved "https://registry.yarnpkg.com/ajv-pack/-/ajv-pack-0.2.7.tgz#bdd340f1c6799108d7aac12975a000c6e2a362c8"
20
+ ajv-pack@^0.3.0:
21
+ version "0.3.1"
22
+ resolved "https://registry.yarnpkg.com/ajv-pack/-/ajv-pack-0.3.1.tgz#b72c4d4219e3928e62842d742ded93bf50796560"
22
23
  dependencies:
23
24
  js-beautify "^1.6.4"
24
25
  require-from-string "^1.2.0"
25
26
 
26
- ajv@^4.7.4:
27
- version "4.11.4"
28
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.4.tgz#ebf3a55d4b132ea60ff5847ae85d2ef069960b45"
27
+ ajv@^5.0.0:
28
+ version "5.5.2"
29
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
29
30
  dependencies:
30
31
  co "^4.6.0"
31
- json-stable-stringify "^1.0.1"
32
+ fast-deep-equal "^1.0.0"
33
+ fast-json-stable-stringify "^2.0.0"
34
+ json-schema-traverse "^0.3.0"
32
35
 
33
- balanced-match@^0.4.1:
34
- version "0.4.2"
35
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
36
+ balanced-match@^1.0.0:
37
+ version "1.0.0"
38
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
36
39
 
37
40
  bluebird@^3.0.5:
38
- version "3.5.0"
39
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
41
+ version "3.5.1"
42
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
40
43
 
41
- brace-expansion@^1.0.0:
42
- version "1.1.6"
43
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
44
+ brace-expansion@^1.1.7:
45
+ version "1.1.8"
46
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
44
47
  dependencies:
45
- balanced-match "^0.4.1"
48
+ balanced-match "^1.0.0"
46
49
  concat-map "0.0.1"
47
50
 
48
51
  co@^4.6.0:
@@ -50,10 +53,8 @@ co@^4.6.0:
50
53
  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
51
54
 
52
55
  commander@^2.9.0:
53
- version "2.9.0"
54
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
55
- dependencies:
56
- graceful-readlink ">= 1.0.0"
56
+ version "2.12.2"
57
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
57
58
 
58
59
  concat-map@0.0.1:
59
60
  version "0.0.1"
@@ -67,37 +68,42 @@ config-chain@~1.1.5:
67
68
  proto-list "~1.2.1"
68
69
 
69
70
  editorconfig@^0.13.2:
70
- version "0.13.2"
71
- resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.2.tgz#8e57926d9ee69ab6cb999f027c2171467acceb35"
71
+ version "0.13.3"
72
+ resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34"
72
73
  dependencies:
73
74
  bluebird "^3.0.5"
74
75
  commander "^2.9.0"
75
76
  lru-cache "^3.2.0"
77
+ semver "^5.1.0"
76
78
  sigmund "^1.0.1"
77
79
 
80
+ fast-deep-equal@^1.0.0:
81
+ version "1.0.0"
82
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
83
+
78
84
  fast-json-patch@^0.5.6:
79
85
  version "0.5.7"
80
86
  resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-0.5.7.tgz#b5a8f49d259624596ef98b872f3fda895b4d8665"
81
87
 
88
+ fast-json-stable-stringify@^2.0.0:
89
+ version "2.0.0"
90
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
91
+
82
92
  fs.realpath@^1.0.0:
83
93
  version "1.0.0"
84
94
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
85
95
 
86
96
  glob@^7.0.3:
87
- version "7.1.1"
88
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
97
+ version "7.1.2"
98
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
89
99
  dependencies:
90
100
  fs.realpath "^1.0.0"
91
101
  inflight "^1.0.4"
92
102
  inherits "2"
93
- minimatch "^3.0.2"
103
+ minimatch "^3.0.4"
94
104
  once "^1.3.0"
95
105
  path-is-absolute "^1.0.0"
96
106
 
97
- "graceful-readlink@>= 1.0.0":
98
- version "1.0.1"
99
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
100
-
101
107
  inflight@^1.0.4:
102
108
  version "1.0.6"
103
109
  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -110,27 +116,27 @@ inherits@2:
110
116
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
111
117
 
112
118
  ini@^1.3.4:
113
- version "1.3.4"
114
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
119
+ version "1.3.5"
120
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
115
121
 
116
122
  js-beautify@^1.6.4:
117
- version "1.6.11"
118
- resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.6.11.tgz#538a22867e669250935bcdc7b90a8cd6386ddab6"
123
+ version "1.7.5"
124
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919"
119
125
  dependencies:
120
126
  config-chain "~1.1.5"
121
127
  editorconfig "^0.13.2"
122
128
  mkdirp "~0.5.0"
123
129
  nopt "~3.0.1"
124
130
 
125
- json-stable-stringify@^1.0.1:
126
- version "1.0.1"
127
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
131
+ json-schema-migrate@^0.2.0:
132
+ version "0.2.0"
133
+ resolved "https://registry.yarnpkg.com/json-schema-migrate/-/json-schema-migrate-0.2.0.tgz#ba47a5b0072fc72396460e1bd60b44d52178bbc6"
128
134
  dependencies:
129
- jsonify "~0.0.0"
135
+ ajv "^5.0.0"
130
136
 
131
- jsonify@~0.0.0:
132
- version "0.0.0"
133
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
137
+ json-schema-traverse@^0.3.0:
138
+ version "0.3.1"
139
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
134
140
 
135
141
  lru-cache@^3.2.0:
136
142
  version "3.2.0"
@@ -138,11 +144,11 @@ lru-cache@^3.2.0:
138
144
  dependencies:
139
145
  pseudomap "^1.0.1"
140
146
 
141
- minimatch@^3.0.2:
142
- version "3.0.3"
143
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
147
+ minimatch@^3.0.4:
148
+ version "3.0.4"
149
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
144
150
  dependencies:
145
- brace-expansion "^1.0.0"
151
+ brace-expansion "^1.1.7"
146
152
 
147
153
  minimist@0.0.8:
148
154
  version "0.0.8"
@@ -186,6 +192,10 @@ require-from-string@^1.2.0:
186
192
  version "1.2.1"
187
193
  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
188
194
 
195
+ semver@^5.1.0:
196
+ version "5.4.1"
197
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
198
+
189
199
  sigmund@^1.0.1:
190
200
  version "1.0.1"
191
201
  resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"