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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/alphametics/canonical-data.json +29 -11
- data/problem-specifications/exercises/binary-search-tree/canonical-data.json +177 -0
- data/problem-specifications/package.json +2 -2
- data/problem-specifications/yarn.lock +61 -51
- data/tracks/bash/CONTRIBUTING.md +10 -6
- data/tracks/bash/README.md +1 -0
- data/tracks/bash/exercises/acronym/README.md +1 -1
- data/tracks/bash/exercises/anagram/README.md +1 -1
- data/tracks/bash/exercises/anagram/{anagram_tests.sh → anagram_test.sh} +0 -0
- data/tracks/bash/exercises/armstrong-numbers/armstrong_numbers_test.sh +25 -17
- data/tracks/bash/exercises/armstrong-numbers/example.sh +18 -12
- data/tracks/bash/exercises/atbash-cipher/README.md +1 -1
- data/tracks/bash/exercises/atbash-cipher/{atbash_cipher_tests.sh → atbash_cipher_test.sh} +0 -0
- data/tracks/bash/exercises/difference-of-squares/README.md +1 -1
- data/tracks/bash/exercises/gigasecond/README.md +1 -1
- data/tracks/bash/exercises/hamming/README.md +1 -1
- data/tracks/bash/exercises/hello-world/README.md +1 -1
- data/tracks/bash/exercises/leap/README.md +1 -1
- data/tracks/bash/exercises/luhn/README.md +1 -1
- data/tracks/bash/exercises/nucleotide-count/README.md +1 -1
- data/tracks/bash/exercises/pangram/README.md +1 -1
- data/tracks/bash/exercises/pangram/{pangram_tests.sh → pangram_test.sh} +0 -0
- data/tracks/bash/exercises/phone-number/README.md +1 -1
- data/tracks/bash/exercises/phone-number/{phone_number_tests.sh → phone_number_test.sh} +0 -0
- data/tracks/bash/exercises/raindrops/README.md +1 -1
- data/tracks/bash/exercises/rna-transcription/README.md +1 -1
- data/tracks/bash/exercises/triangle/example.sh +23 -4
- data/tracks/bash/exercises/triangle/triangle_test.sh +17 -0
- data/tracks/bash/exercises/two-fer/README.md +1 -1
- data/tracks/bash/exercises/word-count/README.md +1 -1
- data/tracks/c/config.json +11 -0
- data/tracks/c/exercises/complex-numbers/README.md +67 -0
- data/tracks/c/exercises/complex-numbers/makefile +27 -0
- data/tracks/c/exercises/complex-numbers/src/complex_numbers.c +46 -0
- data/tracks/c/exercises/complex-numbers/src/complex_numbers.h +19 -0
- data/tracks/c/exercises/complex-numbers/src/example.c +80 -0
- data/tracks/c/exercises/complex-numbers/test/test_complex_numbers.c +397 -0
- data/tracks/c/exercises/complex-numbers/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/complex-numbers/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/complex-numbers/test/vendor/unity_internals.h +701 -0
- data/tracks/crystal/.github/stale.yml +18 -0
- data/tracks/csharp/exercises/bob/README.md +3 -2
- data/tracks/ecmascript/config.json +4 -4
- data/tracks/fsharp/exercises/bob/README.md +4 -2
- data/tracks/fsharp/exercises/react/ReactTest.fs +137 -74
- data/tracks/fsharp/generators/Generators.fs +76 -0
- data/tracks/go/exercises/tree-building/tree_test.go +15 -0
- data/tracks/haskell/.travis.yml +1 -1
- data/tracks/haskell/exercises/accumulate/stack.yaml +1 -1
- data/tracks/haskell/exercises/acronym/package.yaml +1 -1
- data/tracks/haskell/exercises/acronym/stack.yaml +1 -1
- data/tracks/haskell/exercises/all-your-base/package.yaml +1 -1
- data/tracks/haskell/exercises/all-your-base/stack.yaml +1 -1
- data/tracks/haskell/exercises/all-your-base/test/Tests.hs +6 -6
- data/tracks/haskell/exercises/allergies/package.yaml +1 -1
- data/tracks/haskell/exercises/allergies/stack.yaml +1 -1
- data/tracks/haskell/exercises/alphametics/stack.yaml +1 -1
- data/tracks/haskell/exercises/anagram/package.yaml +1 -1
- data/tracks/haskell/exercises/anagram/stack.yaml +1 -1
- data/tracks/haskell/exercises/atbash-cipher/package.yaml +1 -1
- data/tracks/haskell/exercises/atbash-cipher/stack.yaml +1 -1
- data/tracks/haskell/exercises/bank-account/stack.yaml +1 -1
- data/tracks/haskell/exercises/beer-song/stack.yaml +1 -1
- data/tracks/haskell/exercises/binary-search-tree/package.yaml +1 -1
- data/tracks/haskell/exercises/binary-search-tree/stack.yaml +1 -1
- data/tracks/haskell/exercises/binary-search-tree/test/Tests.hs +3 -0
- data/tracks/haskell/exercises/binary/stack.yaml +1 -1
- data/tracks/haskell/exercises/bob/package.yaml +1 -1
- data/tracks/haskell/exercises/bob/stack.yaml +1 -1
- data/tracks/haskell/exercises/bowling/stack.yaml +1 -1
- data/tracks/haskell/exercises/bracket-push/package.yaml +1 -1
- data/tracks/haskell/exercises/bracket-push/stack.yaml +1 -1
- data/tracks/haskell/exercises/change/package.yaml +1 -1
- data/tracks/haskell/exercises/change/stack.yaml +1 -1
- data/tracks/haskell/exercises/clock/stack.yaml +1 -1
- data/tracks/haskell/exercises/collatz-conjecture/package.yaml +1 -1
- data/tracks/haskell/exercises/collatz-conjecture/stack.yaml +1 -1
- data/tracks/haskell/exercises/complex-numbers/stack.yaml +1 -1
- data/tracks/haskell/exercises/connect/package.yaml +1 -1
- data/tracks/haskell/exercises/connect/stack.yaml +1 -1
- data/tracks/haskell/exercises/crypto-square/package.yaml +1 -1
- data/tracks/haskell/exercises/crypto-square/stack.yaml +1 -1
- data/tracks/haskell/exercises/custom-set/stack.yaml +1 -1
- data/tracks/haskell/exercises/diamond/package.yaml +1 -1
- data/tracks/haskell/exercises/diamond/stack.yaml +1 -1
- data/tracks/haskell/exercises/difference-of-squares/package.yaml +1 -1
- data/tracks/haskell/exercises/difference-of-squares/stack.yaml +1 -1
- data/tracks/haskell/exercises/dominoes/package.yaml +1 -1
- data/tracks/haskell/exercises/dominoes/stack.yaml +1 -1
- data/tracks/haskell/exercises/etl/stack.yaml +1 -1
- data/tracks/haskell/exercises/food-chain/stack.yaml +1 -1
- data/tracks/haskell/exercises/forth/stack.yaml +1 -1
- data/tracks/haskell/exercises/gigasecond/stack.yaml +1 -1
- data/tracks/haskell/exercises/go-counting/stack.yaml +1 -1
- data/tracks/haskell/exercises/grade-school/stack.yaml +1 -1
- data/tracks/haskell/exercises/grains/stack.yaml +1 -1
- data/tracks/haskell/exercises/hamming/stack.yaml +1 -1
- data/tracks/haskell/exercises/hello-world/stack.yaml +1 -1
- data/tracks/haskell/exercises/hexadecimal/stack.yaml +1 -1
- data/tracks/haskell/exercises/house/stack.yaml +1 -1
- data/tracks/haskell/exercises/isbn-verifier/examples/success-standard/src/IsbnVerifier.hs +1 -0
- data/tracks/haskell/exercises/isbn-verifier/package.yaml +1 -1
- data/tracks/haskell/exercises/isbn-verifier/stack.yaml +1 -1
- data/tracks/haskell/exercises/isbn-verifier/test/Tests.hs +4 -0
- data/tracks/haskell/exercises/isogram/stack.yaml +1 -1
- data/tracks/haskell/exercises/kindergarten-garden/stack.yaml +1 -1
- data/tracks/haskell/exercises/largest-series-product/stack.yaml +1 -1
- data/tracks/haskell/exercises/leap/stack.yaml +1 -1
- data/tracks/haskell/exercises/lens-person/stack.yaml +1 -1
- data/tracks/haskell/exercises/linked-list/stack.yaml +1 -1
- data/tracks/haskell/exercises/list-ops/stack.yaml +1 -1
- data/tracks/haskell/exercises/luhn/package.yaml +1 -1
- data/tracks/haskell/exercises/luhn/stack.yaml +1 -1
- data/tracks/haskell/exercises/luhn/test/Tests.hs +1 -1
- data/tracks/haskell/exercises/matrix/stack.yaml +1 -1
- data/tracks/haskell/exercises/meetup/package.yaml +1 -1
- data/tracks/haskell/exercises/meetup/stack.yaml +1 -1
- data/tracks/haskell/exercises/minesweeper/stack.yaml +1 -1
- data/tracks/haskell/exercises/nth-prime/stack.yaml +1 -1
- data/tracks/haskell/exercises/nucleotide-count/stack.yaml +1 -1
- data/tracks/haskell/exercises/ocr-numbers/stack.yaml +1 -1
- data/tracks/haskell/exercises/octal/stack.yaml +1 -1
- data/tracks/haskell/exercises/palindrome-products/stack.yaml +1 -1
- data/tracks/haskell/exercises/pangram/stack.yaml +1 -1
- data/tracks/haskell/exercises/parallel-letter-frequency/stack.yaml +1 -1
- data/tracks/haskell/exercises/pascals-triangle/stack.yaml +1 -1
- data/tracks/haskell/exercises/perfect-numbers/stack.yaml +1 -1
- data/tracks/haskell/exercises/phone-number/stack.yaml +1 -1
- data/tracks/haskell/exercises/pig-latin/stack.yaml +1 -1
- data/tracks/haskell/exercises/pov/stack.yaml +1 -1
- data/tracks/haskell/exercises/prime-factors/stack.yaml +1 -1
- data/tracks/haskell/exercises/pythagorean-triplet/stack.yaml +1 -1
- data/tracks/haskell/exercises/queen-attack/stack.yaml +1 -1
- data/tracks/haskell/exercises/rail-fence-cipher/package.yaml +1 -1
- data/tracks/haskell/exercises/rail-fence-cipher/stack.yaml +1 -1
- data/tracks/haskell/exercises/raindrops/stack.yaml +1 -1
- data/tracks/haskell/exercises/rna-transcription/package.yaml +1 -1
- data/tracks/haskell/exercises/rna-transcription/stack.yaml +1 -1
- data/tracks/haskell/exercises/rna-transcription/test/Tests.hs +0 -12
- data/tracks/haskell/exercises/robot-name/stack.yaml +1 -1
- data/tracks/haskell/exercises/robot-simulator/stack.yaml +1 -1
- data/tracks/haskell/exercises/roman-numerals/stack.yaml +1 -1
- data/tracks/haskell/exercises/rotational-cipher/stack.yaml +1 -1
- data/tracks/haskell/exercises/run-length-encoding/stack.yaml +1 -1
- data/tracks/haskell/exercises/saddle-points/stack.yaml +1 -1
- data/tracks/haskell/exercises/say/stack.yaml +1 -1
- data/tracks/haskell/exercises/scrabble-score/stack.yaml +1 -1
- data/tracks/haskell/exercises/secret-handshake/stack.yaml +1 -1
- data/tracks/haskell/exercises/series/stack.yaml +1 -1
- data/tracks/haskell/exercises/sgf-parsing/stack.yaml +1 -1
- data/tracks/haskell/exercises/sieve/stack.yaml +1 -1
- data/tracks/haskell/exercises/simple-cipher/stack.yaml +1 -1
- data/tracks/haskell/exercises/simple-linked-list/stack.yaml +1 -1
- data/tracks/haskell/exercises/space-age/stack.yaml +1 -1
- data/tracks/haskell/exercises/spiral-matrix/stack.yaml +1 -1
- data/tracks/haskell/exercises/strain/stack.yaml +1 -1
- data/tracks/haskell/exercises/sublist/stack.yaml +1 -1
- data/tracks/haskell/exercises/sum-of-multiples/stack.yaml +1 -1
- data/tracks/haskell/exercises/triangle/stack.yaml +1 -1
- data/tracks/haskell/exercises/trinary/stack.yaml +1 -1
- data/tracks/haskell/exercises/twelve-days/stack.yaml +1 -1
- data/tracks/haskell/exercises/word-count/stack.yaml +1 -1
- data/tracks/haskell/exercises/wordy/stack.yaml +1 -1
- data/tracks/haskell/exercises/zebra-puzzle/stack.yaml +1 -1
- data/tracks/haskell/exercises/zipper/stack.yaml +1 -1
- data/tracks/java/config.json +12 -0
- data/tracks/java/exercises/alphametics/.meta/src/reference/java/Alphametics.java +125 -0
- data/tracks/java/exercises/alphametics/.meta/src/reference/java/UnsolvablePuzzleException.java +2 -0
- data/tracks/java/exercises/alphametics/.meta/src/version +1 -0
- data/tracks/java/exercises/alphametics/README.md +47 -0
- data/tracks/java/exercises/alphametics/build.gradle +18 -0
- data/tracks/java/exercises/alphametics/src/main/java/.keep +0 -0
- data/tracks/java/exercises/alphametics/src/main/java/UnsolvablePuzzleException.java +2 -0
- data/tracks/java/exercises/alphametics/src/test/java/AlphameticsTest.java +150 -0
- data/tracks/java/exercises/beer-song/.meta/src/reference/java/BeerSong.java +5 -4
- data/tracks/java/exercises/beer-song/.meta/version +1 -0
- data/tracks/java/exercises/beer-song/src/test/java/BeerSongTest.java +24 -16
- data/tracks/java/exercises/binary-search/.meta/version +1 -0
- data/tracks/java/exercises/book-store/.meta/version +1 -0
- data/tracks/java/exercises/book-store/src/test/java/BookStoreTest.java +15 -8
- data/tracks/java/exercises/circular-buffer/.meta/version +1 -0
- data/tracks/java/exercises/list-ops/.meta/version +1 -1
- data/tracks/java/exercises/list-ops/src/test/java/ListOpsTest.java +1 -1
- data/tracks/java/exercises/nth-prime/.meta/version +1 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/tournament/.meta/version +1 -0
- data/tracks/java/exercises/transpose/.meta/version +1 -0
- data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +29 -74
- data/tracks/java/exercises/wordy/.meta/version +1 -0
- data/tracks/javascript/.eslintignore +0 -1
- data/tracks/javascript/config.json +13 -3
- data/tracks/javascript/exercises/bowling/example.js +24 -10
- data/tracks/javascript/exercises/forth/README.md +56 -0
- data/tracks/javascript/exercises/forth/example.js +66 -0
- data/tracks/javascript/exercises/forth/forth.spec.js +259 -0
- data/tracks/lua/config.json +92 -81
- data/tracks/lua/exercises/accumulate/README.md +42 -0
- data/tracks/lua/exercises/beer-song/README.md +1 -1
- data/tracks/lua/exercises/bob/README.md +2 -0
- data/tracks/lua/exercises/crypto-square/README.md +6 -4
- data/tracks/lua/exercises/house/README.md +1 -1
- data/tracks/lua/exercises/isbn-verifier/README.md +25 -20
- data/tracks/lua/exercises/kindergarten-garden/README.md +3 -3
- data/tracks/lua/exercises/meetup/README.md +16 -12
- data/tracks/lua/exercises/nucleotide-count/README.md +2 -2
- data/tracks/lua/exercises/phone-number/README.md +1 -1
- data/tracks/lua/exercises/pov/README.md +0 -2
- data/tracks/lua/exercises/queen-attack/README.md +22 -22
- data/tracks/lua/exercises/rectangles/README.md +9 -9
- data/tracks/lua/exercises/reverse-string/README.md +23 -0
- data/tracks/lua/exercises/reverse-string/example.lua +7 -0
- data/tracks/lua/exercises/reverse-string/reverse-string_spec.lua +24 -0
- data/tracks/lua/exercises/secret-handshake/README.md +1 -1
- data/tracks/lua/exercises/space-age/README.md +1 -2
- data/tracks/lua/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/perl6/exercises/two-fer/README.md +1 -1
- data/tracks/python/exercises/luhn/luhn_test.py +1 -1
- metadata +39 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed4856a33354550c10dd3f5a784ad737040f67ae
|
4
|
+
data.tar.gz: 8f2cfa2607feca51f6966295583dd16c0de358d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69c3e3e3ab293cd4aa6633a183fc7627e7577cb679848e662acc4ada1fadaa2b74a73516e86cba35813e02e57ea84aa563095fce8fefc910c9cb7a94f98fa399
|
7
|
+
data.tar.gz: 59a594afa02d044bfc351325fe106fd7895a96f551d6e7223005665db42927189164563fdd56b4fd5499b6beed1c13a34f885edb254b04b11f0e2158d8f90b96
|
data/lib/trackler/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "alphametics",
|
3
|
-
"version": "1.
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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
|
117
|
+
"description": "puzzle with ten letters and 199 addends",
|
102
118
|
"property": "solve",
|
103
|
-
"
|
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.
|
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": "^
|
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/
|
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 "^
|
14
|
-
ajv-pack "^0.
|
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.
|
20
|
-
version "0.
|
21
|
-
resolved "https://registry.yarnpkg.com/ajv-pack/-/ajv-pack-0.
|
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@^
|
27
|
-
version "
|
28
|
-
resolved "https://registry.yarnpkg.com/ajv/-/ajv-
|
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
|
-
|
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.
|
34
|
-
version "0.
|
35
|
-
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.
|
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.
|
39
|
-
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.
|
41
|
+
version "3.5.1"
|
42
|
+
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
40
43
|
|
41
|
-
brace-expansion@^1.
|
42
|
-
version "1.1.
|
43
|
-
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.
|
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.
|
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.
|
54
|
-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.
|
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.
|
71
|
-
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.
|
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.
|
88
|
-
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.
|
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.
|
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.
|
114
|
-
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.
|
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.
|
118
|
-
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.
|
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-
|
126
|
-
version "
|
127
|
-
resolved "https://registry.yarnpkg.com/json-
|
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
|
-
|
135
|
+
ajv "^5.0.0"
|
130
136
|
|
131
|
-
|
132
|
-
version "0.
|
133
|
-
resolved "https://registry.yarnpkg.com/
|
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.
|
142
|
-
version "3.0.
|
143
|
-
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.
|
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.
|
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"
|