trackler 2.2.1.88 → 2.2.1.89
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/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/bowling/canonical-data.json +95 -39
- data/problem-specifications/exercises/gigasecond/canonical-data.json +17 -7
- data/problem-specifications/exercises/pangram/canonical-data.json +32 -12
- data/problem-specifications/exercises/say/canonical-data.json +47 -17
- data/problem-specifications/exercises/sum-of-multiples/canonical-data.json +54 -28
- data/problem-specifications/exercises/triangle/canonical-data.json +52 -18
- data/problem-specifications/exercises/two-bucket/canonical-data.json +38 -26
- data/problem-specifications/exercises/two-fer/canonical-data.json +14 -8
- data/problem-specifications/exercises/word-count/canonical-data.json +35 -13
- data/problem-specifications/exercises/wordy/canonical-data.json +50 -18
- data/tracks/bash/exercises/leap/.meta/version +1 -0
- data/tracks/bash/exercises/leap/example.sh +9 -9
- data/tracks/bash/exercises/leap/leap_test.sh +17 -33
- data/tracks/ceylon/exercises/anagram/source/anagram/AnagramTest.ceylon +1 -1
- data/tracks/ceylon/exercises/bracket-push/source/bracketpush/BracketsTest.ceylon +1 -1
- data/tracks/ceylon/exercises/rna-transcription/source/rnatranscription/RNATest.ceylon +2 -1
- data/tracks/fsharp/build.cake +2 -7
- data/tracks/fsharp/exercises/acronym/AcronymTest.fs +1 -1
- data/tracks/fsharp/exercises/all-your-base/AllYourBase.fs +1 -1
- data/tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs +43 -43
- data/tracks/fsharp/exercises/all-your-base/Example.fs +5 -5
- data/tracks/fsharp/exercises/allergies/AllergiesTest.fs +1 -1
- data/tracks/fsharp/exercises/alphametics/AlphameticsTest.fs +19 -1
- data/tracks/fsharp/exercises/alphametics/Example.fs +53 -34
- data/tracks/fsharp/exercises/anagram/AnagramTest.fs +1 -1
- data/tracks/fsharp/exercises/atbash-cipher/AtbashCipherTest.fs +1 -1
- data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +1 -1
- data/tracks/fsharp/exercises/binary-search/BinarySearchTest.fs +1 -1
- data/tracks/fsharp/exercises/bob/BobTest.fs +1 -1
- data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +1 -1
- data/tracks/fsharp/exercises/bracket-push/BracketPushTest.fs +1 -1
- data/tracks/fsharp/exercises/change/ChangeTest.fs +1 -1
- data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjectureTest.fs +1 -1
- data/tracks/fsharp/exercises/connect/ConnectTest.fs +1 -1
- data/tracks/fsharp/exercises/crypto-square/CryptoSquareTest.fs +1 -1
- data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquaresTest.fs +1 -1
- data/tracks/fsharp/exercises/dominoes/DominoesTest.fs +25 -25
- data/tracks/fsharp/exercises/etl/EtlTest.fs +8 -8
- data/tracks/fsharp/exercises/isbn-verifier/IsbnVerifierTest.fs +5 -1
- data/tracks/fsharp/exercises/luhn/LuhnTest.fs +1 -1
- data/tracks/fsharp/exercises/meetup/Example.fs +11 -11
- data/tracks/fsharp/exercises/meetup/Meetup.fs +2 -2
- data/tracks/fsharp/exercises/meetup/MeetupTest.fs +96 -96
- data/tracks/fsharp/exercises/robot-simulator/Example.fs +21 -21
- data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fs +5 -5
- data/tracks/fsharp/exercises/robot-simulator/RobotSimulatorTest.fs +78 -96
- data/tracks/fsharp/generators/CanonicalData.fs +50 -4
- data/tracks/fsharp/generators/Common.fs +4 -13
- data/tracks/fsharp/generators/Exercise.fs +31 -15
- data/tracks/fsharp/generators/Generators.fs +76 -111
- data/tracks/haskell/exercises/alphametics/package.yaml +1 -1
- data/tracks/haskell/exercises/alphametics/test/Tests.hs +5 -0
- data/tracks/haskell/exercises/bowling/package.yaml +1 -1
- data/tracks/haskell/exercises/pangram/package.yaml +1 -1
- data/tracks/haskell/exercises/say/package.yaml +1 -1
- data/tracks/haskell/exercises/sum-of-multiples/package.yaml +1 -1
- data/tracks/haskell/exercises/word-count/package.yaml +1 -1
- data/tracks/haskell/exercises/wordy/package.yaml +1 -1
- data/tracks/java/exercises/nucleotide-count/.meta/hints.md +58 -0
- data/tracks/java/exercises/nucleotide-count/README.md +62 -0
- metadata +4 -2
|
@@ -1,97 +1,123 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "sum-of-multiples",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"description": "multiples of 3 or 5 up to 1",
|
|
7
7
|
"property": "sum",
|
|
8
|
-
"
|
|
9
|
-
|
|
8
|
+
"input": {
|
|
9
|
+
"factors": [3, 5],
|
|
10
|
+
"limit": 1
|
|
11
|
+
},
|
|
10
12
|
"expected": 0
|
|
11
13
|
},
|
|
12
14
|
{
|
|
13
15
|
"description": "multiples of 3 or 5 up to 4",
|
|
14
16
|
"property": "sum",
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
+
"input": {
|
|
18
|
+
"factors": [3, 5],
|
|
19
|
+
"limit": 4
|
|
20
|
+
},
|
|
17
21
|
"expected": 3
|
|
18
22
|
},
|
|
19
23
|
{
|
|
20
24
|
"description": "multiples of 3 up to 7",
|
|
21
25
|
"property": "sum",
|
|
22
|
-
"
|
|
23
|
-
|
|
26
|
+
"input": {
|
|
27
|
+
"factors": [3],
|
|
28
|
+
"limit": 7
|
|
29
|
+
},
|
|
24
30
|
"expected": 9
|
|
25
31
|
},
|
|
26
32
|
{
|
|
27
33
|
"description": "multiples of 3 or 5 up to 10",
|
|
28
34
|
"property": "sum",
|
|
29
|
-
"
|
|
30
|
-
|
|
35
|
+
"input": {
|
|
36
|
+
"factors": [3, 5],
|
|
37
|
+
"limit": 10
|
|
38
|
+
},
|
|
31
39
|
"expected": 23
|
|
32
40
|
},
|
|
33
41
|
{
|
|
34
42
|
"description": "multiples of 3 or 5 up to 100",
|
|
35
43
|
"property": "sum",
|
|
36
|
-
"
|
|
37
|
-
|
|
44
|
+
"input": {
|
|
45
|
+
"factors": [3, 5],
|
|
46
|
+
"limit": 100
|
|
47
|
+
},
|
|
38
48
|
"expected": 2318
|
|
39
49
|
},
|
|
40
50
|
{
|
|
41
51
|
"description": "multiples of 3 or 5 up to 1000",
|
|
42
52
|
"property": "sum",
|
|
43
|
-
"
|
|
44
|
-
|
|
53
|
+
"input": {
|
|
54
|
+
"factors": [3, 5],
|
|
55
|
+
"limit": 1000
|
|
56
|
+
},
|
|
45
57
|
"expected": 233168
|
|
46
58
|
},
|
|
47
59
|
{
|
|
48
60
|
"description": "multiples of 7, 13 or 17 up to 20",
|
|
49
61
|
"property": "sum",
|
|
50
|
-
"
|
|
51
|
-
|
|
62
|
+
"input": {
|
|
63
|
+
"factors": [7, 13, 17],
|
|
64
|
+
"limit": 20
|
|
65
|
+
},
|
|
52
66
|
"expected": 51
|
|
53
67
|
},
|
|
54
68
|
{
|
|
55
69
|
"description": "multiples of 4 or 6 up to 15",
|
|
56
70
|
"property": "sum",
|
|
57
|
-
"
|
|
58
|
-
|
|
71
|
+
"input": {
|
|
72
|
+
"factors": [4, 6],
|
|
73
|
+
"limit": 15
|
|
74
|
+
},
|
|
59
75
|
"expected": 30
|
|
60
76
|
},
|
|
61
77
|
{
|
|
62
78
|
"description": "multiples of 5, 6 or 8 up to 150",
|
|
63
79
|
"property": "sum",
|
|
64
|
-
"
|
|
65
|
-
|
|
80
|
+
"input": {
|
|
81
|
+
"factors": [5, 6, 8],
|
|
82
|
+
"limit": 150
|
|
83
|
+
},
|
|
66
84
|
"expected": 4419
|
|
67
85
|
},
|
|
68
86
|
{
|
|
69
87
|
"description": "multiples of 5 or 25 up to 51",
|
|
70
88
|
"property": "sum",
|
|
71
|
-
"
|
|
72
|
-
|
|
89
|
+
"input": {
|
|
90
|
+
"factors": [5, 25],
|
|
91
|
+
"limit": 51
|
|
92
|
+
},
|
|
73
93
|
"expected": 275
|
|
74
94
|
},
|
|
75
95
|
{
|
|
76
96
|
"description": "multiples of 43 or 47 up to 10000",
|
|
77
97
|
"property": "sum",
|
|
78
|
-
"
|
|
79
|
-
|
|
98
|
+
"input": {
|
|
99
|
+
"factors": [43, 47],
|
|
100
|
+
"limit": 10000
|
|
101
|
+
},
|
|
80
102
|
"expected": 2203160
|
|
81
103
|
},
|
|
82
104
|
{
|
|
83
105
|
"description": "multiples of 1 up to 100",
|
|
84
106
|
"property": "sum",
|
|
85
|
-
"
|
|
86
|
-
|
|
107
|
+
"input": {
|
|
108
|
+
"factors": [1],
|
|
109
|
+
"limit": 100
|
|
110
|
+
},
|
|
87
111
|
"expected": 4950
|
|
88
112
|
},
|
|
89
113
|
{
|
|
90
114
|
"description": "multiples of an empty list up to 10000",
|
|
91
115
|
"property": "sum",
|
|
92
|
-
"
|
|
93
|
-
|
|
116
|
+
"input": {
|
|
117
|
+
"factors": [],
|
|
118
|
+
"limit": 10000
|
|
119
|
+
},
|
|
94
120
|
"expected": 0
|
|
95
121
|
}
|
|
96
122
|
]
|
|
97
|
-
}
|
|
123
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "triangle",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
" Pursuant to discussion in #202, we have decided NOT to test triangles ",
|
|
6
6
|
" where all side lengths are positive but a + b = c. e.g: ",
|
|
@@ -24,25 +24,33 @@
|
|
|
24
24
|
{
|
|
25
25
|
"description": "true if all sides are equal",
|
|
26
26
|
"property": "equilateral",
|
|
27
|
-
"
|
|
27
|
+
"input": {
|
|
28
|
+
"sides": [2, 2, 2]
|
|
29
|
+
},
|
|
28
30
|
"expected": true
|
|
29
31
|
},
|
|
30
32
|
{
|
|
31
33
|
"description": "false if any side is unequal",
|
|
32
34
|
"property": "equilateral",
|
|
33
|
-
"
|
|
35
|
+
"input": {
|
|
36
|
+
"sides": [2, 3, 2]
|
|
37
|
+
},
|
|
34
38
|
"expected": false
|
|
35
39
|
},
|
|
36
40
|
{
|
|
37
41
|
"description": "false if no sides are equal",
|
|
38
42
|
"property": "equilateral",
|
|
39
|
-
"
|
|
43
|
+
"input": {
|
|
44
|
+
"sides": [5, 4, 6]
|
|
45
|
+
},
|
|
40
46
|
"expected": false
|
|
41
47
|
},
|
|
42
48
|
{
|
|
43
49
|
"description": "All zero sides are illegal, so the triangle is not equilateral",
|
|
44
50
|
"property": "equilateral",
|
|
45
|
-
"
|
|
51
|
+
"input": {
|
|
52
|
+
"sides": [0, 0, 0]
|
|
53
|
+
},
|
|
46
54
|
"expected": false
|
|
47
55
|
},
|
|
48
56
|
{
|
|
@@ -52,7 +60,9 @@
|
|
|
52
60
|
],
|
|
53
61
|
"description": "sides may be floats",
|
|
54
62
|
"property": "equilateral",
|
|
55
|
-
"
|
|
63
|
+
"input": {
|
|
64
|
+
"sides": [0.5, 0.5, 0.5]
|
|
65
|
+
},
|
|
56
66
|
"expected": true
|
|
57
67
|
}
|
|
58
68
|
]
|
|
@@ -63,37 +73,49 @@
|
|
|
63
73
|
{
|
|
64
74
|
"description": "true if last two sides are equal",
|
|
65
75
|
"property": "isosceles",
|
|
66
|
-
"
|
|
76
|
+
"input": {
|
|
77
|
+
"sides": [3, 4, 4]
|
|
78
|
+
},
|
|
67
79
|
"expected": true
|
|
68
80
|
},
|
|
69
81
|
{
|
|
70
82
|
"description": "true if first two sides are equal",
|
|
71
83
|
"property": "isosceles",
|
|
72
|
-
"
|
|
84
|
+
"input": {
|
|
85
|
+
"sides": [4, 4, 3]
|
|
86
|
+
},
|
|
73
87
|
"expected": true
|
|
74
88
|
},
|
|
75
89
|
{
|
|
76
90
|
"description": "true if first and last sides are equal",
|
|
77
91
|
"property": "isosceles",
|
|
78
|
-
"
|
|
92
|
+
"input": {
|
|
93
|
+
"sides": [4, 3, 4]
|
|
94
|
+
},
|
|
79
95
|
"expected": true
|
|
80
96
|
},
|
|
81
97
|
{
|
|
82
98
|
"description": "equilateral triangles are also isosceles",
|
|
83
99
|
"property": "isosceles",
|
|
84
|
-
"
|
|
100
|
+
"input": {
|
|
101
|
+
"sides": [4, 4, 4]
|
|
102
|
+
},
|
|
85
103
|
"expected": true
|
|
86
104
|
},
|
|
87
105
|
{
|
|
88
106
|
"description": "false if no sides are equal",
|
|
89
107
|
"property": "isosceles",
|
|
90
|
-
"
|
|
108
|
+
"input": {
|
|
109
|
+
"sides": [2, 3, 4]
|
|
110
|
+
},
|
|
91
111
|
"expected": false
|
|
92
112
|
},
|
|
93
113
|
{
|
|
94
114
|
"description": "Sides that violate triangle inequality are not isosceles, even if two are equal",
|
|
95
115
|
"property": "isosceles",
|
|
96
|
-
"
|
|
116
|
+
"input": {
|
|
117
|
+
"sides": [1, 1, 3]
|
|
118
|
+
},
|
|
97
119
|
"expected": false
|
|
98
120
|
},
|
|
99
121
|
{
|
|
@@ -103,7 +125,9 @@
|
|
|
103
125
|
],
|
|
104
126
|
"property": "isosceles",
|
|
105
127
|
"description": "sides may be floats",
|
|
106
|
-
"
|
|
128
|
+
"input": {
|
|
129
|
+
"sides": [0.5, 0.4, 0.5]
|
|
130
|
+
},
|
|
107
131
|
"expected": true
|
|
108
132
|
}
|
|
109
133
|
]
|
|
@@ -114,25 +138,33 @@
|
|
|
114
138
|
{
|
|
115
139
|
"description": "true if no sides are equal",
|
|
116
140
|
"property": "scalene",
|
|
117
|
-
"
|
|
141
|
+
"input": {
|
|
142
|
+
"sides": [5, 4, 6]
|
|
143
|
+
},
|
|
118
144
|
"expected": true
|
|
119
145
|
},
|
|
120
146
|
{
|
|
121
147
|
"description": "false if all sides are equal",
|
|
122
148
|
"property": "scalene",
|
|
123
|
-
"
|
|
149
|
+
"input": {
|
|
150
|
+
"sides": [4, 4, 4]
|
|
151
|
+
},
|
|
124
152
|
"expected": false
|
|
125
153
|
},
|
|
126
154
|
{
|
|
127
155
|
"description": "false if two sides are equal",
|
|
128
156
|
"property": "scalene",
|
|
129
|
-
"
|
|
157
|
+
"input": {
|
|
158
|
+
"sides": [4, 4, 3]
|
|
159
|
+
},
|
|
130
160
|
"expected": false
|
|
131
161
|
},
|
|
132
162
|
{
|
|
133
163
|
"description": "Sides that violate triangle inequality are not scalene, even if they are all different",
|
|
134
164
|
"property": "scalene",
|
|
135
|
-
"
|
|
165
|
+
"input": {
|
|
166
|
+
"sides": [7, 3, 2]
|
|
167
|
+
},
|
|
136
168
|
"expected": false
|
|
137
169
|
},
|
|
138
170
|
{
|
|
@@ -142,7 +174,9 @@
|
|
|
142
174
|
],
|
|
143
175
|
"description": "sides may be floats",
|
|
144
176
|
"property": "scalene",
|
|
145
|
-
"
|
|
177
|
+
"input": {
|
|
178
|
+
"sides": [0.5, 0.4, 0.6]
|
|
179
|
+
},
|
|
146
180
|
"expected": true
|
|
147
181
|
}
|
|
148
182
|
]
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "two-bucket",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"description": "Measure using bucket one of size 3 and bucket two of size 5 - start with bucket one",
|
|
7
7
|
"property": "measure",
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
"input": {
|
|
9
|
+
"bucket_one": 3,
|
|
10
|
+
"bucket_two": 5,
|
|
11
|
+
"goal": 1,
|
|
12
|
+
"start_bucket": "one"
|
|
13
|
+
},
|
|
12
14
|
"expected": {
|
|
13
15
|
"moves": 4,
|
|
14
16
|
"goal_bucket": "one",
|
|
@@ -18,10 +20,12 @@
|
|
|
18
20
|
{
|
|
19
21
|
"description": "Measure using bucket one of size 3 and bucket two of size 5 - start with bucket two",
|
|
20
22
|
"property": "measure",
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
"input": {
|
|
24
|
+
"bucket_one": 3,
|
|
25
|
+
"bucket_two": 5,
|
|
26
|
+
"goal": 1,
|
|
27
|
+
"start_bucket": "two"
|
|
28
|
+
},
|
|
25
29
|
"expected": {
|
|
26
30
|
"moves": 8,
|
|
27
31
|
"goal_bucket": "two",
|
|
@@ -31,10 +35,12 @@
|
|
|
31
35
|
{
|
|
32
36
|
"description": "Measure using bucket one of size 7 and bucket two of size 11 - start with bucket one",
|
|
33
37
|
"property": "measure",
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
"input": {
|
|
39
|
+
"bucket_one": 7,
|
|
40
|
+
"bucket_two": 11,
|
|
41
|
+
"goal": 2,
|
|
42
|
+
"start_bucket": "one"
|
|
43
|
+
},
|
|
38
44
|
"expected": {
|
|
39
45
|
"moves": 14,
|
|
40
46
|
"goal_bucket": "one",
|
|
@@ -44,10 +50,12 @@
|
|
|
44
50
|
{
|
|
45
51
|
"description": "Measure using bucket one of size 7 and bucket two of size 11 - start with bucket two",
|
|
46
52
|
"property": "measure",
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
"input": {
|
|
54
|
+
"bucket_one": 7,
|
|
55
|
+
"bucket_two": 11,
|
|
56
|
+
"goal": 2,
|
|
57
|
+
"start_bucket": "two"
|
|
58
|
+
},
|
|
51
59
|
"expected": {
|
|
52
60
|
"moves": 18,
|
|
53
61
|
"goal_bucket": "two",
|
|
@@ -57,10 +65,12 @@
|
|
|
57
65
|
{
|
|
58
66
|
"description": "Measure one step using bucket one of size 1 and bucket two of size 3 - start with bucket two",
|
|
59
67
|
"property": "measure",
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
"input": {
|
|
69
|
+
"bucket_one": 1,
|
|
70
|
+
"bucket_two": 3,
|
|
71
|
+
"goal": 3,
|
|
72
|
+
"start_bucket": "two"
|
|
73
|
+
},
|
|
64
74
|
"expected": {
|
|
65
75
|
"moves": 1,
|
|
66
76
|
"goal_bucket": "two",
|
|
@@ -70,10 +80,12 @@
|
|
|
70
80
|
{
|
|
71
81
|
"description": "Measure using bucket one of size 2 and bucket two of size 3 - start with bucket one and end with bucket two",
|
|
72
82
|
"property": "measure",
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
"input": {
|
|
84
|
+
"bucket_one": 2,
|
|
85
|
+
"bucket_two": 3,
|
|
86
|
+
"goal": 3,
|
|
87
|
+
"start_bucket": "one"
|
|
88
|
+
},
|
|
77
89
|
"expected": {
|
|
78
90
|
"moves": 2,
|
|
79
91
|
"goal_bucket": "two",
|
|
@@ -81,4 +93,4 @@
|
|
|
81
93
|
}
|
|
82
94
|
}
|
|
83
95
|
]
|
|
84
|
-
}
|
|
96
|
+
}
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "two-fer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"description": "no name given",
|
|
7
|
-
"property": "
|
|
8
|
-
"input":
|
|
7
|
+
"property": "twoFer",
|
|
8
|
+
"input": {
|
|
9
|
+
"name": null
|
|
10
|
+
},
|
|
9
11
|
"expected": "One for you, one for me."
|
|
10
12
|
},
|
|
11
13
|
{
|
|
12
14
|
"description": "a name given",
|
|
13
|
-
"property": "
|
|
14
|
-
"input":
|
|
15
|
+
"property": "twoFer",
|
|
16
|
+
"input": {
|
|
17
|
+
"name": "Alice"
|
|
18
|
+
},
|
|
15
19
|
"expected": "One for Alice, one for me."
|
|
16
20
|
},
|
|
17
21
|
{
|
|
18
22
|
"description": "another name given",
|
|
19
|
-
"property": "
|
|
20
|
-
"input":
|
|
23
|
+
"property": "twoFer",
|
|
24
|
+
"input": {
|
|
25
|
+
"name": "Bob"
|
|
26
|
+
},
|
|
21
27
|
"expected": "One for Bob, one for me."
|
|
22
28
|
}
|
|
23
29
|
]
|
|
24
|
-
}
|
|
30
|
+
}
|