trackler 2.0.8.13 → 2.0.8.14
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|