trackler 2.0.8.13 → 2.0.8.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/common/exercises/acronym/canonical-data.json +50 -39
- data/common/exercises/all-your-base/canonical-data.json +192 -146
- data/common/exercises/allergies/canonical-data.json +133 -93
- data/common/exercises/anagram/canonical-data.json +128 -106
- data/common/exercises/atbash-cipher/canonical-data.json +92 -74
- data/common/exercises/binary/canonical-data.json +94 -77
- data/common/exercises/bob/canonical-data.json +154 -127
- data/common/exercises/book-store/canonical-data.json +106 -92
- data/common/exercises/change/canonical-data.json +80 -68
- data/common/exercises/grains/canonical-data.json +75 -60
- data/common/exercises/hello-world/canonical-data.json +6 -6
- data/common/exercises/leap/canonical-data.json +28 -22
- data/common/exercises/luhn/canonical-data.json +16 -1
- data/common/exercises/pig-latin/canonical-data.json +93 -75
- data/common/exercises/raindrops/canonical-data.json +112 -92
- data/common/exercises/rna-transcription/canonical-data.json +64 -54
- data/common/exercises/run-length-encoding/canonical-data.json +20 -0
- data/common/exercises/run-length-encoding/description.md +3 -7
- data/common/exercises/say/canonical-data.json +98 -81
- data/common/exercises/scrabble-score/canonical-data.json +13 -0
- data/common/exercises/sieve/canonical-data.json +48 -42
- data/common/exercises/trinary/canonical-data.json +75 -60
- data/common/exercises/word-count/canonical-data.json +116 -54
- data/common/exercises/wordy/canonical-data.json +101 -83
- data/lib/trackler/version.rb +1 -1
- data/tracks/delphi/SETUP.md +10 -1
- data/tracks/delphi/config.json +8 -0
- data/tracks/delphi/docs/TESTS.md +4 -0
- data/tracks/delphi/exercises/hello-world/uTestHelloWorld.pas +49 -27
- data/tracks/delphi/exercises/triangle/Triangle.dpr +60 -0
- data/tracks/delphi/exercises/triangle/uTestTriangle.pas +186 -0
- data/tracks/delphi/exercises/triangle/uTriangleExample.pas +64 -0
- data/tracks/go/exercises/poker/poker_test.go +6 -6
- data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +2 -1
- data/tracks/scala/config.json +10 -0
- data/tracks/scala/exercises/variable-length-quantity/HINTS.md +2 -0
- data/tracks/scala/exercises/variable-length-quantity/build.sbt +3 -0
- data/tracks/scala/exercises/variable-length-quantity/example.scala +56 -0
- data/tracks/scala/exercises/variable-length-quantity/src/main/scala/VariableLengthQuantity.scala +0 -0
- data/tracks/scala/exercises/variable-length-quantity/src/test/scala/VariableLengthQuantityTest.scala +162 -0
- data/tracks/scala/testgen/src/main/scala/VariableLengthQuantityTestGenerator.scala +80 -0
- data/tracks/typescript/common/package.json +6 -7
- data/tracks/typescript/common/yarn.lock +422 -380
- data/tracks/typescript/config.json +12 -0
- data/tracks/typescript/exercises/anagram/package.json +6 -7
- data/tracks/typescript/exercises/anagram/yarn.lock +422 -380
- data/tracks/typescript/exercises/beer-song/package.json +6 -7
- data/tracks/typescript/exercises/beer-song/yarn.lock +422 -380
- data/tracks/typescript/exercises/bob/package.json +6 -7
- data/tracks/typescript/exercises/bob/yarn.lock +422 -380
- data/tracks/typescript/exercises/food-chain/package.json +6 -7
- data/tracks/typescript/exercises/food-chain/yarn.lock +422 -380
- data/tracks/typescript/exercises/gigasecond/package.json +6 -7
- data/tracks/typescript/exercises/gigasecond/yarn.lock +422 -380
- data/tracks/typescript/exercises/grade-school/grade-school.example.ts +31 -0
- data/tracks/typescript/exercises/grade-school/grade-school.test.ts +81 -0
- data/tracks/typescript/exercises/grade-school/package.json +36 -0
- data/tracks/typescript/exercises/grade-school/tsconfig.json +21 -0
- data/tracks/typescript/exercises/grade-school/tslint.json +127 -0
- data/tracks/typescript/exercises/grade-school/yarn.lock +2739 -0
- data/tracks/typescript/exercises/hamming/package.json +6 -7
- data/tracks/typescript/exercises/hamming/yarn.lock +422 -380
- data/tracks/typescript/exercises/hello-world/package.json +6 -7
- data/tracks/typescript/exercises/hello-world/yarn.lock +422 -380
- data/tracks/typescript/exercises/leap/package.json +6 -7
- data/tracks/typescript/exercises/leap/yarn.lock +422 -380
- data/tracks/typescript/exercises/pangram/package.json +6 -7
- data/tracks/typescript/exercises/pangram/yarn.lock +422 -380
- data/tracks/typescript/exercises/phone-number/package.json +6 -7
- data/tracks/typescript/exercises/phone-number/yarn.lock +422 -380
- data/tracks/typescript/exercises/rna-transcription/package.json +6 -7
- data/tracks/typescript/exercises/rna-transcription/yarn.lock +422 -380
- data/tracks/typescript/exercises/robot-name/package.json +36 -0
- data/tracks/typescript/exercises/robot-name/robot-name.example.ts +36 -0
- data/tracks/typescript/exercises/robot-name/robot-name.test.ts +86 -0
- data/tracks/typescript/exercises/robot-name/tsconfig.json +21 -0
- data/tracks/typescript/exercises/robot-name/tslint.json +127 -0
- data/tracks/typescript/exercises/robot-name/yarn.lock +2739 -0
- data/tracks/typescript/exercises/say/package.json +6 -7
- data/tracks/typescript/exercises/say/yarn.lock +422 -380
- data/tracks/typescript/exercises/word-count/package.json +6 -7
- data/tracks/typescript/exercises/word-count/yarn.lock +422 -380
- data/tracks/typescript/exercises/wordy/package.json +6 -7
- data/tracks/typescript/exercises/wordy/yarn.lock +422 -380
- metadata +23 -2
@@ -1,108 +1,130 @@
|
|
1
1
|
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
2
|
+
"exercise": "anagram",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"comments": [
|
5
|
+
"The string argument cases possible matches are passed in as",
|
6
|
+
"individual arguments rather than arrays. Languages can include",
|
7
|
+
"these string argument cases if passing individual arguments is",
|
8
|
+
"idiomatic in that language."
|
9
|
+
],
|
10
|
+
"cases": [
|
11
|
+
{
|
12
|
+
"description": "no matches",
|
13
|
+
"property": "anagrams",
|
14
|
+
"subject": "diaper",
|
15
|
+
"candidates": ["hello", "world", "zombies", "pants"],
|
16
|
+
"expected": []
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"description": "detects simple anagram",
|
20
|
+
"property": "anagrams",
|
21
|
+
"subject": "ant",
|
22
|
+
"candidates": ["tan", "stand", "at"],
|
23
|
+
"expected": ["tan"]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"description": "does not detect false positives",
|
27
|
+
"property": "anagrams",
|
28
|
+
"subject": "galea",
|
29
|
+
"candidates": ["eagle"],
|
30
|
+
"expected": []
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"description": "detects multiple anagrams",
|
34
|
+
"property": "anagrams",
|
35
|
+
"subject": "master",
|
36
|
+
"candidates": ["stream", "pigeon", "maters"],
|
37
|
+
"expected": ["stream", "maters"]
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"description": "does not detect anagram subsets",
|
41
|
+
"property": "anagrams",
|
42
|
+
"subject": "good",
|
43
|
+
"candidates": ["dog", "goody"],
|
44
|
+
"expected": []
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"description": "detects anagram",
|
48
|
+
"property": "anagrams",
|
49
|
+
"subject": "listen",
|
50
|
+
"candidates": ["enlists", "google", "inlets", "banana"],
|
51
|
+
"expected": ["inlets"]
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"description": "detects multiple anagrams",
|
55
|
+
"property": "anagrams",
|
56
|
+
"subject": "allergy",
|
57
|
+
"candidates": [ "gallery",
|
58
|
+
"ballerina",
|
59
|
+
"regally",
|
60
|
+
"clergy",
|
61
|
+
"largely",
|
62
|
+
"leading"
|
63
|
+
],
|
64
|
+
"expected": ["gallery", "regally", "largely"]
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"description": "does not detect identical words",
|
68
|
+
"property": "anagrams",
|
69
|
+
"subject": "corn",
|
70
|
+
"candidates": ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"],
|
71
|
+
"expected": ["cron"]
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"description": "does not detect non-anagrams with identical checksum",
|
75
|
+
"property": "anagrams",
|
76
|
+
"subject": "mass",
|
77
|
+
"candidates": ["last"],
|
78
|
+
"expected": []
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"description": "detects anagrams case-insensitively",
|
82
|
+
"property": "anagrams",
|
83
|
+
"subject": "Orchestra",
|
84
|
+
"candidates": ["cashregister", "Carthorse", "radishes"],
|
85
|
+
"expected": ["Carthorse"]
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"description": "detects anagrams using case-insensitive subject",
|
89
|
+
"property": "anagrams",
|
90
|
+
"subject": "Orchestra",
|
91
|
+
"candidates": ["cashregister", "carthorse", "radishes"],
|
92
|
+
"expected": ["carthorse"]
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"description": "detects anagrams using case-insensitive possible matches",
|
96
|
+
"property": "anagrams",
|
97
|
+
"subject": "orchestra",
|
98
|
+
"candidates": ["cashregister", "Carthorse", "radishes"],
|
99
|
+
"expected": ["Carthorse"]
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"description": "does not detect a word as its own anagram",
|
103
|
+
"property": "anagrams",
|
104
|
+
"subject": "banana",
|
105
|
+
"candidates": ["Banana"],
|
106
|
+
"expected": []
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"description": "does not detect a anagram if the original word is repeated",
|
110
|
+
"property": "anagrams",
|
111
|
+
"subject": "go",
|
112
|
+
"candidates": ["go Go GO"],
|
113
|
+
"expected": []
|
114
|
+
},
|
115
|
+
{
|
116
|
+
"description": "anagrams must use all letters exactly once",
|
117
|
+
"property": "anagrams",
|
118
|
+
"subject": "tapper",
|
119
|
+
"candidates": ["patter"],
|
120
|
+
"expected": []
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"description": "capital word is not own anagram",
|
124
|
+
"property": "anagrams",
|
125
|
+
"subject": "BANANA",
|
126
|
+
"candidates": ["Banana"],
|
127
|
+
"expected": []
|
128
|
+
}
|
129
|
+
]
|
108
130
|
}
|
@@ -1,77 +1,95 @@
|
|
1
|
-
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
"
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
1
|
+
{
|
2
|
+
"exercise": "atbash-cipher",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"comments": [
|
5
|
+
"The tests are divided into two groups: ",
|
6
|
+
"* Encoding from English to atbash cipher",
|
7
|
+
"* Decoding from atbash cipher to all-lowercase-mashed-together English"
|
8
|
+
],
|
9
|
+
"cases": [
|
10
|
+
{
|
11
|
+
"description": "encode",
|
12
|
+
"comments": [ "Test encoding from English to atbash" ],
|
13
|
+
"cases": [
|
14
|
+
{
|
15
|
+
"description": "encode yes",
|
16
|
+
"property": "encode",
|
17
|
+
"phrase": "yes",
|
18
|
+
"expected": "bvh"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"description": "encode no",
|
22
|
+
"property": "encode",
|
23
|
+
"phrase": "no",
|
24
|
+
"expected": "ml"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"description": "encode OMG",
|
28
|
+
"property": "encode",
|
29
|
+
"phrase": "OMG",
|
30
|
+
"expected": "lnt"
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"description": "encode spaces",
|
34
|
+
"property": "encode",
|
35
|
+
"phrase": "O M G",
|
36
|
+
"expected": "lnt"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"description": "encode mindblowingly",
|
40
|
+
"property": "encode",
|
41
|
+
"phrase": "mindblowingly",
|
42
|
+
"expected": "nrmwy oldrm tob"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"description": "encode numbers",
|
46
|
+
"property": "encode",
|
47
|
+
"phrase": "Testing,1 2 3, testing.",
|
48
|
+
"expected": "gvhgr mt123 gvhgr mt"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"description": "encode deep thought",
|
52
|
+
"property": "encode",
|
53
|
+
"phrase": "Truth is fiction.",
|
54
|
+
"expected": "gifgs rhurx grlm"
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"description": "encode all the letters",
|
58
|
+
"property": "encode",
|
59
|
+
"phrase": "The quick brown fox jumps over the lazy dog.",
|
60
|
+
"expected": "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"
|
61
|
+
}
|
62
|
+
]
|
51
63
|
},
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
64
|
+
{
|
65
|
+
"description": "decode",
|
66
|
+
"comments": [ "Test decoding from atbash to English" ],
|
67
|
+
"cases": [
|
68
|
+
{
|
69
|
+
"description": "decode exercism",
|
70
|
+
"property": "decode",
|
71
|
+
"phrase": "vcvix rhn",
|
72
|
+
"expected": "exercism"
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"description": "decode a sentence",
|
76
|
+
"property": "decode",
|
77
|
+
"phrase": "zmlyh gzxov rhlug vmzhg vkkrm thglm v",
|
78
|
+
"expected": "anobstacleisoftenasteppingstone"
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"description": "decode numbers",
|
82
|
+
"property": "decode",
|
83
|
+
"phrase": "gvhgr mt123 gvhgr mt",
|
84
|
+
"expected": "testing123testing"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"description": "decode all the letters",
|
88
|
+
"property": "decode",
|
89
|
+
"phrase": "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt",
|
90
|
+
"expected": "thequickbrownfoxjumpsoverthelazydog"
|
91
|
+
}
|
92
|
+
]
|
76
93
|
}
|
94
|
+
]
|
77
95
|
}
|
@@ -1,79 +1,96 @@
|
|
1
1
|
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
2
|
+
"exercise": "binary",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"cases": [
|
5
|
+
{
|
6
|
+
"description": "binary 0 is decimal 0",
|
7
|
+
"property": "decimal",
|
8
|
+
"binary": "0",
|
9
|
+
"expected": 0
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"description": "binary 1 is decimal 1",
|
13
|
+
"property": "decimal",
|
14
|
+
"binary": "1",
|
15
|
+
"expected": 1
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"description": "binary 10 is decimal 2",
|
19
|
+
"property": "decimal",
|
20
|
+
"binary": "10",
|
21
|
+
"expected": 2
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"description": "binary 11 is decimal 3",
|
25
|
+
"property": "decimal",
|
26
|
+
"binary": "11",
|
27
|
+
"expected": 3
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"description": "binary 100 is decimal 4",
|
31
|
+
"property": "decimal",
|
32
|
+
"binary": "100",
|
33
|
+
"expected": 4
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"description": "binary 1001 is decimal 9",
|
37
|
+
"property": "decimal",
|
38
|
+
"binary": "1001",
|
39
|
+
"expected": 9
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"description": "binary 11010 is decimal 26",
|
43
|
+
"property": "decimal",
|
44
|
+
"binary": "11010",
|
45
|
+
"expected": 26
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"description": "binary 10001101000 is decimal 1128",
|
49
|
+
"property": "decimal",
|
50
|
+
"binary": "10001101000",
|
51
|
+
"expected": 1128
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"description": "binary ignores leading zeros",
|
55
|
+
"property": "decimal",
|
56
|
+
"binary": "000011111",
|
57
|
+
"expected": 31
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"description": "2 is not a valid binary digit",
|
61
|
+
"property": "decimal",
|
62
|
+
"binary": "2",
|
63
|
+
"expected": null
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"description": "a number containing a non-binary digit is invalid",
|
67
|
+
"property": "decimal",
|
68
|
+
"binary": "01201",
|
69
|
+
"expected": null
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"description": "a number with trailing non-binary characters is invalid",
|
73
|
+
"property": "decimal",
|
74
|
+
"binary": "10nope",
|
75
|
+
"expected": null
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"description": "a number with leading non-binary characters is invalid",
|
79
|
+
"property": "decimal",
|
80
|
+
"binary": "nope10",
|
81
|
+
"expected": null
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"description": "a number with internal non-binary characters is invalid",
|
85
|
+
"property": "decimal",
|
86
|
+
"binary": "10nope10",
|
87
|
+
"expected": null
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"description": "a number and a word whitespace spearated is invalid",
|
91
|
+
"property": "decimal",
|
92
|
+
"binary": "001 nope",
|
93
|
+
"expected": null
|
94
|
+
}
|
95
|
+
]
|
79
96
|
}
|