trackler 2.2.1.84 → 2.2.1.85
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/atbash-cipher/canonical-data.json +38 -14
- data/problem-specifications/exercises/bracket-push/canonical-data.json +44 -16
- data/problem-specifications/exercises/change/canonical-data.json +46 -24
- data/problem-specifications/exercises/collatz-conjecture/canonical-data.json +20 -8
- data/problem-specifications/exercises/connect/canonical-data.json +87 -67
- data/problem-specifications/exercises/crypto-square/canonical-data.json +23 -9
- data/problem-specifications/exercises/diamond/canonical-data.json +16 -6
- data/problem-specifications/exercises/difference-of-squares/canonical-data.json +29 -11
- data/problem-specifications/exercises/dominoes/canonical-data.json +37 -13
- data/problem-specifications/exercises/flatten-array/canonical-data.json +19 -7
- data/problem-specifications/exercises/meetup/canonical-data.json +667 -477
- data/tracks/haskell/config.json +9 -0
- data/tracks/haskell/docs/LEARNING.md +3 -3
- data/tracks/haskell/exercises/food-chain/examples/success-standard/src/FoodChain.hs +1 -1
- data/tracks/haskell/exercises/forth/examples/success-standard/src/Forth.hs +2 -2
- data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/src/Frequency.hs +1 -1
- data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs +1 -1
- data/tracks/haskell/exercises/twelve-days/README.md +89 -0
- data/tracks/haskell/exercises/twelve-days/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/twelve-days/examples/success-standard/src/TwelveDays.hs +36 -0
- data/tracks/haskell/exercises/twelve-days/package.yaml +20 -0
- data/tracks/haskell/exercises/twelve-days/src/TwelveDays.hs +4 -0
- data/tracks/haskell/exercises/twelve-days/stack.yaml +1 -0
- data/tracks/haskell/exercises/twelve-days/test/Tests.hs +146 -0
- data/tracks/haskell/exercises/zipper/examples/success-standard/src/Zipper.hs +3 -3
- data/tracks/java/exercises/allergies/.meta/version +2 -0
- data/tracks/java/exercises/allergies/src/test/java/AllergiesTest.java +10 -65
- data/tracks/java/exercises/anagram/.meta/version +1 -0
- data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +36 -35
- data/tracks/java/exercises/atbash-cipher/.meta/version +1 -0
- data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +3 -2
- data/tracks/java/exercises/bob/.meta/src/reference/java/Bob.java +3 -0
- data/tracks/java/exercises/bob/.meta/version +1 -0
- data/tracks/java/exercises/bob/src/test/java/BobTest.java +79 -15
- data/tracks/java/exercises/crypto-square/.meta/src/reference/java/CryptoSquare.java +62 -0
- data/tracks/java/exercises/crypto-square/.meta/version +1 -0
- data/tracks/java/exercises/crypto-square/src/test/java/CryptoSquareTest.java +28 -101
- data/tracks/java/exercises/custom-set/.meta/version +1 -1
- data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +8 -0
- data/tracks/java/exercises/forth/.meta/version +1 -1
- data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +52 -12
- data/tracks/java/exercises/pascals-triangle/.meta/version +1 -1
- data/tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java +48 -0
- data/tracks/java/exercises/prime-factors/.meta/version +1 -0
- data/tracks/java/exercises/prime-factors/src/test/java/PrimeFactorsCalculatorTest.java +2 -6
- data/tracks/java/exercises/protein-translation/.meta/version +1 -1
- data/tracks/java/exercises/roman-numerals/.meta/version +1 -0
- data/tracks/java/exercises/roman-numerals/src/test/java/RomanNumeralsTest.java +0 -1
- data/tracks/java/exercises/rotational-cipher/.meta/version +1 -0
- data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +7 -7
- data/tracks/javascript/.eslintignore +0 -1
- data/tracks/javascript/README.md +1 -1
- data/tracks/javascript/exercises/clock/example.js +8 -11
- metadata +18 -3
- data/tracks/java/exercises/crypto-square/.meta/src/reference/java/Crypto.java +0 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7892432156062540719c56c731f29a416cd4bbbc
|
4
|
+
data.tar.gz: be05d71f796bc3f7b829b2d5c09f5f02d91ddd4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77e24716ea69a1a4603e27d4432d633f2c2420b9dbc929a41e706adf9b89c23eae10b3a9db02fa179305e6e294582766f7794525798a149e6a082f4bec9a4a72
|
7
|
+
data.tar.gz: 6cf193ad2f4aaa78be8aeaaee7f3e7c694cfde813bd573d89f1753fadb9fd8d9f67991b35dad8e821174cca8a1d556eb916994f3190bc78f79b90e587690127c
|
data/lib/trackler/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "atbash-cipher",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.0",
|
4
4
|
"comments": [
|
5
5
|
"The tests are divided into two groups: ",
|
6
6
|
"* Encoding from English to atbash cipher",
|
@@ -14,49 +14,65 @@
|
|
14
14
|
{
|
15
15
|
"description": "encode yes",
|
16
16
|
"property": "encode",
|
17
|
-
"
|
17
|
+
"input": {
|
18
|
+
"phrase": "yes"
|
19
|
+
},
|
18
20
|
"expected": "bvh"
|
19
21
|
},
|
20
22
|
{
|
21
23
|
"description": "encode no",
|
22
24
|
"property": "encode",
|
23
|
-
"
|
25
|
+
"input": {
|
26
|
+
"phrase": "no"
|
27
|
+
},
|
24
28
|
"expected": "ml"
|
25
29
|
},
|
26
30
|
{
|
27
31
|
"description": "encode OMG",
|
28
32
|
"property": "encode",
|
29
|
-
"
|
33
|
+
"input": {
|
34
|
+
"phrase": "OMG"
|
35
|
+
},
|
30
36
|
"expected": "lnt"
|
31
37
|
},
|
32
38
|
{
|
33
39
|
"description": "encode spaces",
|
34
40
|
"property": "encode",
|
35
|
-
"
|
41
|
+
"input": {
|
42
|
+
"phrase": "O M G"
|
43
|
+
},
|
36
44
|
"expected": "lnt"
|
37
45
|
},
|
38
46
|
{
|
39
47
|
"description": "encode mindblowingly",
|
40
48
|
"property": "encode",
|
41
|
-
"
|
49
|
+
"input": {
|
50
|
+
"phrase": "mindblowingly"
|
51
|
+
},
|
42
52
|
"expected": "nrmwy oldrm tob"
|
43
53
|
},
|
44
54
|
{
|
45
55
|
"description": "encode numbers",
|
46
56
|
"property": "encode",
|
47
|
-
"
|
57
|
+
"input": {
|
58
|
+
"phrase": "Testing,1 2 3, testing."
|
59
|
+
},
|
48
60
|
"expected": "gvhgr mt123 gvhgr mt"
|
49
61
|
},
|
50
62
|
{
|
51
63
|
"description": "encode deep thought",
|
52
64
|
"property": "encode",
|
53
|
-
"
|
65
|
+
"input": {
|
66
|
+
"phrase": "Truth is fiction."
|
67
|
+
},
|
54
68
|
"expected": "gifgs rhurx grlm"
|
55
69
|
},
|
56
70
|
{
|
57
71
|
"description": "encode all the letters",
|
58
72
|
"property": "encode",
|
59
|
-
"
|
73
|
+
"input": {
|
74
|
+
"phrase": "The quick brown fox jumps over the lazy dog."
|
75
|
+
},
|
60
76
|
"expected": "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"
|
61
77
|
}
|
62
78
|
]
|
@@ -68,28 +84,36 @@
|
|
68
84
|
{
|
69
85
|
"description": "decode exercism",
|
70
86
|
"property": "decode",
|
71
|
-
"
|
87
|
+
"input": {
|
88
|
+
"phrase": "vcvix rhn"
|
89
|
+
},
|
72
90
|
"expected": "exercism"
|
73
91
|
},
|
74
92
|
{
|
75
93
|
"description": "decode a sentence",
|
76
94
|
"property": "decode",
|
77
|
-
"
|
95
|
+
"input": {
|
96
|
+
"phrase": "zmlyh gzxov rhlug vmzhg vkkrm thglm v"
|
97
|
+
},
|
78
98
|
"expected": "anobstacleisoftenasteppingstone"
|
79
99
|
},
|
80
100
|
{
|
81
101
|
"description": "decode numbers",
|
82
102
|
"property": "decode",
|
83
|
-
"
|
103
|
+
"input": {
|
104
|
+
"phrase": "gvhgr mt123 gvhgr mt"
|
105
|
+
},
|
84
106
|
"expected": "testing123testing"
|
85
107
|
},
|
86
108
|
{
|
87
109
|
"description": "decode all the letters",
|
88
110
|
"property": "decode",
|
89
|
-
"
|
111
|
+
"input": {
|
112
|
+
"phrase": "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"
|
113
|
+
},
|
90
114
|
"expected": "thequickbrownfoxjumpsoverthelazydog"
|
91
115
|
}
|
92
116
|
]
|
93
117
|
}
|
94
118
|
]
|
95
|
-
}
|
119
|
+
}
|
@@ -1,90 +1,118 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "bracket-push",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.0",
|
4
4
|
"cases": [
|
5
5
|
{
|
6
6
|
"description": "paired square brackets",
|
7
7
|
"property": "isPaired",
|
8
|
-
"input":
|
8
|
+
"input": {
|
9
|
+
"value": "[]"
|
10
|
+
},
|
9
11
|
"expected": true
|
10
12
|
},
|
11
13
|
{
|
12
14
|
"description": "empty string",
|
13
15
|
"property": "isPaired",
|
14
|
-
"input":
|
16
|
+
"input": {
|
17
|
+
"value": ""
|
18
|
+
},
|
15
19
|
"expected": true
|
16
20
|
},
|
17
21
|
{
|
18
22
|
"description": "unpaired brackets",
|
19
23
|
"property": "isPaired",
|
20
|
-
"input":
|
24
|
+
"input": {
|
25
|
+
"value": "[["
|
26
|
+
},
|
21
27
|
"expected": false
|
22
28
|
},
|
23
29
|
{
|
24
30
|
"description": "wrong ordered brackets",
|
25
31
|
"property": "isPaired",
|
26
|
-
"input":
|
32
|
+
"input": {
|
33
|
+
"value": "}{"
|
34
|
+
},
|
27
35
|
"expected": false
|
28
36
|
},
|
29
37
|
{
|
30
38
|
"description": "wrong closing bracket",
|
31
39
|
"property": "isPaired",
|
32
|
-
"input":
|
40
|
+
"input": {
|
41
|
+
"value": "{]"
|
42
|
+
},
|
33
43
|
"expected": false
|
34
44
|
},
|
35
45
|
{
|
36
46
|
"description": "paired with whitespace",
|
37
47
|
"property": "isPaired",
|
38
|
-
"input":
|
48
|
+
"input": {
|
49
|
+
"value": "{ }"
|
50
|
+
},
|
39
51
|
"expected": true
|
40
52
|
},
|
41
53
|
{
|
42
54
|
"description": "simple nested brackets",
|
43
55
|
"property": "isPaired",
|
44
|
-
"input":
|
56
|
+
"input": {
|
57
|
+
"value": "{[]}"
|
58
|
+
},
|
45
59
|
"expected": true
|
46
60
|
},
|
47
61
|
{
|
48
62
|
"description": "several paired brackets",
|
49
63
|
"property": "isPaired",
|
50
|
-
"input":
|
64
|
+
"input": {
|
65
|
+
"value": "{}[]"
|
66
|
+
},
|
51
67
|
"expected": true
|
52
68
|
},
|
53
69
|
{
|
54
70
|
"description": "paired and nested brackets",
|
55
71
|
"property": "isPaired",
|
56
|
-
"input":
|
72
|
+
"input": {
|
73
|
+
"value": "([{}({}[])])"
|
74
|
+
},
|
57
75
|
"expected": true
|
58
76
|
},
|
59
77
|
{
|
60
78
|
"description": "unopened closing brackets",
|
61
79
|
"property": "isPaired",
|
62
|
-
"input":
|
80
|
+
"input": {
|
81
|
+
"value": "{[)][]}"
|
82
|
+
},
|
63
83
|
"expected": false
|
64
84
|
},
|
65
85
|
{
|
66
86
|
"description": "unpaired and nested brackets",
|
67
87
|
"property": "isPaired",
|
68
|
-
"input":
|
88
|
+
"input": {
|
89
|
+
"value": "([{])"
|
90
|
+
},
|
69
91
|
"expected": false
|
70
92
|
},
|
71
93
|
{
|
72
94
|
"description": "paired and wrong nested brackets",
|
73
95
|
"property": "isPaired",
|
74
|
-
"input":
|
96
|
+
"input": {
|
97
|
+
"value": "[({]})"
|
98
|
+
},
|
75
99
|
"expected": false
|
76
100
|
},
|
77
101
|
{
|
78
102
|
"description": "math expression",
|
79
103
|
"property": "isPaired",
|
80
|
-
"input":
|
104
|
+
"input": {
|
105
|
+
"value": "(((185 + 223.85) * 15) - 543)/2"
|
106
|
+
},
|
81
107
|
"expected": true
|
82
108
|
},
|
83
109
|
{
|
84
110
|
"description": "complex latex expression",
|
85
111
|
"property": "isPaired",
|
86
|
-
"input":
|
112
|
+
"input": {
|
113
|
+
"value": "\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)"
|
114
|
+
},
|
87
115
|
"expected": true
|
88
116
|
}
|
89
117
|
]
|
90
|
-
}
|
118
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "change",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.0",
|
4
4
|
"comments": [
|
5
5
|
"Given an infinite supply of coins with different values, ",
|
6
6
|
"find the smallest number of coins needed to make a desired ",
|
@@ -10,36 +10,46 @@
|
|
10
10
|
{
|
11
11
|
"description": "single coin change",
|
12
12
|
"property": "findFewestCoins",
|
13
|
-
"
|
14
|
-
|
13
|
+
"input": {
|
14
|
+
"coins": [1, 5, 10, 25, 100],
|
15
|
+
"target": 25
|
16
|
+
},
|
15
17
|
"expected": [25]
|
16
18
|
},
|
17
19
|
{
|
18
20
|
"description": "multiple coin change",
|
19
21
|
"property": "findFewestCoins",
|
20
|
-
"
|
21
|
-
|
22
|
+
"input": {
|
23
|
+
"coins": [1, 5, 10, 25, 100],
|
24
|
+
"target": 15
|
25
|
+
},
|
22
26
|
"expected": [5, 10]
|
23
27
|
},
|
24
28
|
{
|
25
29
|
"description": "change with Lilliputian Coins",
|
26
30
|
"property": "findFewestCoins",
|
27
|
-
"
|
28
|
-
|
31
|
+
"input": {
|
32
|
+
"coins": [1, 4, 15, 20, 50],
|
33
|
+
"target": 23
|
34
|
+
},
|
29
35
|
"expected": [4, 4, 15]
|
30
36
|
},
|
31
37
|
{
|
32
38
|
"description": "change with Lower Elbonia Coins",
|
33
39
|
"property": "findFewestCoins",
|
34
|
-
"
|
35
|
-
|
40
|
+
"input": {
|
41
|
+
"coins": [1, 5, 10, 21, 25],
|
42
|
+
"target": 63
|
43
|
+
},
|
36
44
|
"expected": [21, 21, 21]
|
37
45
|
},
|
38
46
|
{
|
39
47
|
"description": "large target values",
|
40
48
|
"property": "findFewestCoins",
|
41
|
-
"
|
42
|
-
|
49
|
+
"input": {
|
50
|
+
"coins": [1, 2, 5, 10, 20, 50, 100],
|
51
|
+
"target": 999
|
52
|
+
},
|
43
53
|
"expected": [ 2, 2, 5, 20, 20
|
44
54
|
, 50, 100, 100, 100, 100
|
45
55
|
, 100, 100, 100, 100, 100 ]
|
@@ -47,44 +57,56 @@
|
|
47
57
|
{
|
48
58
|
"description": "possible change without unit coins available",
|
49
59
|
"property": "findFewestCoins",
|
50
|
-
"
|
51
|
-
|
60
|
+
"input": {
|
61
|
+
"coins": [2, 5, 10, 20, 50],
|
62
|
+
"target": 21
|
63
|
+
},
|
52
64
|
"expected": [2, 2, 2, 5, 10]
|
53
65
|
},
|
54
66
|
{
|
55
67
|
"description": "another possible change without unit coins available",
|
56
68
|
"property": "findFewestCoins",
|
57
|
-
"
|
58
|
-
|
69
|
+
"input": {
|
70
|
+
"coins": [4, 5],
|
71
|
+
"target": 27
|
72
|
+
},
|
59
73
|
"expected": [4, 4, 4, 5, 5, 5]
|
60
74
|
},
|
61
75
|
{
|
62
76
|
"description": "no coins make 0 change",
|
63
77
|
"property": "findFewestCoins",
|
64
|
-
"
|
65
|
-
|
78
|
+
"input": {
|
79
|
+
"coins": [1, 5, 10, 21, 25],
|
80
|
+
"target": 0
|
81
|
+
},
|
66
82
|
"expected": []
|
67
83
|
},
|
68
84
|
{
|
69
85
|
"description": "error testing for change smaller than the smallest of coins",
|
70
86
|
"property": "findFewestCoins",
|
71
|
-
"
|
72
|
-
|
87
|
+
"input": {
|
88
|
+
"coins": [5, 10],
|
89
|
+
"target": 3
|
90
|
+
},
|
73
91
|
"expected": -1
|
74
92
|
},
|
75
93
|
{
|
76
94
|
"description": "error if no combination can add up to target",
|
77
95
|
"property": "findFewestCoins",
|
78
|
-
"
|
79
|
-
|
96
|
+
"input": {
|
97
|
+
"coins": [5, 10],
|
98
|
+
"target": 94
|
99
|
+
},
|
80
100
|
"expected": -1
|
81
101
|
},
|
82
102
|
{
|
83
103
|
"description": "cannot find negative change values",
|
84
104
|
"property": "findFewestCoins",
|
85
|
-
"
|
86
|
-
|
105
|
+
"input": {
|
106
|
+
"coins": [1, 2, 5],
|
107
|
+
"target": -5
|
108
|
+
},
|
87
109
|
"expected": -1
|
88
110
|
}
|
89
111
|
]
|
90
|
-
}
|
112
|
+
}
|
@@ -1,42 +1,54 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "collatz-conjecture",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.0",
|
4
4
|
"cases": [
|
5
5
|
{
|
6
6
|
"description": "zero steps for one",
|
7
7
|
"property": "steps",
|
8
|
-
"
|
8
|
+
"input": {
|
9
|
+
"number": 1
|
10
|
+
},
|
9
11
|
"expected": 0
|
10
12
|
},
|
11
13
|
{
|
12
14
|
"description": "divide if even",
|
13
15
|
"property": "steps",
|
14
|
-
"
|
16
|
+
"input": {
|
17
|
+
"number": 16
|
18
|
+
},
|
15
19
|
"expected": 4
|
16
20
|
},
|
17
21
|
{
|
18
22
|
"description": "even and odd steps",
|
19
23
|
"property": "steps",
|
20
|
-
"
|
24
|
+
"input": {
|
25
|
+
"number": 12
|
26
|
+
},
|
21
27
|
"expected": 9
|
22
28
|
},
|
23
29
|
{
|
24
30
|
"description": "Large number of even and odd steps",
|
25
31
|
"property": "steps",
|
26
|
-
"
|
32
|
+
"input": {
|
33
|
+
"number": 1000000
|
34
|
+
},
|
27
35
|
"expected": 152
|
28
36
|
},
|
29
37
|
{
|
30
38
|
"description": "zero is an error",
|
31
39
|
"property": "steps",
|
32
|
-
"
|
40
|
+
"input": {
|
41
|
+
"number": 0
|
42
|
+
},
|
33
43
|
"expected": { "error": "Only positive numbers are allowed" }
|
34
44
|
},
|
35
45
|
{
|
36
46
|
"description": "negative value is an error",
|
37
47
|
"property": "steps",
|
38
|
-
"
|
48
|
+
"input": {
|
49
|
+
"number": -15
|
50
|
+
},
|
39
51
|
"expected": { "error": "Only positive numbers are allowed" }
|
40
52
|
}
|
41
53
|
]
|
42
|
-
}
|
54
|
+
}
|