trackler 2.2.1.84 → 2.2.1.85

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/atbash-cipher/canonical-data.json +38 -14
  4. data/problem-specifications/exercises/bracket-push/canonical-data.json +44 -16
  5. data/problem-specifications/exercises/change/canonical-data.json +46 -24
  6. data/problem-specifications/exercises/collatz-conjecture/canonical-data.json +20 -8
  7. data/problem-specifications/exercises/connect/canonical-data.json +87 -67
  8. data/problem-specifications/exercises/crypto-square/canonical-data.json +23 -9
  9. data/problem-specifications/exercises/diamond/canonical-data.json +16 -6
  10. data/problem-specifications/exercises/difference-of-squares/canonical-data.json +29 -11
  11. data/problem-specifications/exercises/dominoes/canonical-data.json +37 -13
  12. data/problem-specifications/exercises/flatten-array/canonical-data.json +19 -7
  13. data/problem-specifications/exercises/meetup/canonical-data.json +667 -477
  14. data/tracks/haskell/config.json +9 -0
  15. data/tracks/haskell/docs/LEARNING.md +3 -3
  16. data/tracks/haskell/exercises/food-chain/examples/success-standard/src/FoodChain.hs +1 -1
  17. data/tracks/haskell/exercises/forth/examples/success-standard/src/Forth.hs +2 -2
  18. data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/src/Frequency.hs +1 -1
  19. data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs +1 -1
  20. data/tracks/haskell/exercises/twelve-days/README.md +89 -0
  21. data/tracks/haskell/exercises/twelve-days/examples/success-standard/package.yaml +16 -0
  22. data/tracks/haskell/exercises/twelve-days/examples/success-standard/src/TwelveDays.hs +36 -0
  23. data/tracks/haskell/exercises/twelve-days/package.yaml +20 -0
  24. data/tracks/haskell/exercises/twelve-days/src/TwelveDays.hs +4 -0
  25. data/tracks/haskell/exercises/twelve-days/stack.yaml +1 -0
  26. data/tracks/haskell/exercises/twelve-days/test/Tests.hs +146 -0
  27. data/tracks/haskell/exercises/zipper/examples/success-standard/src/Zipper.hs +3 -3
  28. data/tracks/java/exercises/allergies/.meta/version +2 -0
  29. data/tracks/java/exercises/allergies/src/test/java/AllergiesTest.java +10 -65
  30. data/tracks/java/exercises/anagram/.meta/version +1 -0
  31. data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +36 -35
  32. data/tracks/java/exercises/atbash-cipher/.meta/version +1 -0
  33. data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +3 -2
  34. data/tracks/java/exercises/bob/.meta/src/reference/java/Bob.java +3 -0
  35. data/tracks/java/exercises/bob/.meta/version +1 -0
  36. data/tracks/java/exercises/bob/src/test/java/BobTest.java +79 -15
  37. data/tracks/java/exercises/crypto-square/.meta/src/reference/java/CryptoSquare.java +62 -0
  38. data/tracks/java/exercises/crypto-square/.meta/version +1 -0
  39. data/tracks/java/exercises/crypto-square/src/test/java/CryptoSquareTest.java +28 -101
  40. data/tracks/java/exercises/custom-set/.meta/version +1 -1
  41. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +8 -0
  42. data/tracks/java/exercises/forth/.meta/version +1 -1
  43. data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +52 -12
  44. data/tracks/java/exercises/pascals-triangle/.meta/version +1 -1
  45. data/tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java +48 -0
  46. data/tracks/java/exercises/prime-factors/.meta/version +1 -0
  47. data/tracks/java/exercises/prime-factors/src/test/java/PrimeFactorsCalculatorTest.java +2 -6
  48. data/tracks/java/exercises/protein-translation/.meta/version +1 -1
  49. data/tracks/java/exercises/roman-numerals/.meta/version +1 -0
  50. data/tracks/java/exercises/roman-numerals/src/test/java/RomanNumeralsTest.java +0 -1
  51. data/tracks/java/exercises/rotational-cipher/.meta/version +1 -0
  52. data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +7 -7
  53. data/tracks/javascript/.eslintignore +0 -1
  54. data/tracks/javascript/README.md +1 -1
  55. data/tracks/javascript/exercises/clock/example.js +8 -11
  56. metadata +18 -3
  57. 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: d3ec763db2b39453f204556765096d8b89410636
4
- data.tar.gz: 0b10a5133a6d4f9fa08142ae215484fd257b8bc7
3
+ metadata.gz: 7892432156062540719c56c731f29a416cd4bbbc
4
+ data.tar.gz: be05d71f796bc3f7b829b2d5c09f5f02d91ddd4c
5
5
  SHA512:
6
- metadata.gz: 136ccecbe72a54b7da0c44b660a02b8dbe4e0304d0e42360f71f53937617221936a011a525b5f6ccd00f98e7ba969b7ddf52f8c16d4725c247a80d078c3731ce
7
- data.tar.gz: 3d20a2d47b630cc688667dc3ad626e13c603f50c61a969b19a4059cc3a4ed61b74d72a7ef57ac09340cfb84d8d9502f9a637e1b4e88f8f61b15611010d561639
6
+ metadata.gz: 77e24716ea69a1a4603e27d4432d633f2c2420b9dbc929a41e706adf9b89c23eae10b3a9db02fa179305e6e294582766f7794525798a149e6a082f4bec9a4a72
7
+ data.tar.gz: 6cf193ad2f4aaa78be8aeaaee7f3e7c694cfde813bd573d89f1753fadb9fd8d9f67991b35dad8e821174cca8a1d556eb916994f3190bc78f79b90e587690127c
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.84"
2
+ VERSION = "2.2.1.85"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "atbash-cipher",
3
- "version": "1.0.0",
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
- "phrase": "yes",
17
+ "input": {
18
+ "phrase": "yes"
19
+ },
18
20
  "expected": "bvh"
19
21
  },
20
22
  {
21
23
  "description": "encode no",
22
24
  "property": "encode",
23
- "phrase": "no",
25
+ "input": {
26
+ "phrase": "no"
27
+ },
24
28
  "expected": "ml"
25
29
  },
26
30
  {
27
31
  "description": "encode OMG",
28
32
  "property": "encode",
29
- "phrase": "OMG",
33
+ "input": {
34
+ "phrase": "OMG"
35
+ },
30
36
  "expected": "lnt"
31
37
  },
32
38
  {
33
39
  "description": "encode spaces",
34
40
  "property": "encode",
35
- "phrase": "O M G",
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
- "phrase": "mindblowingly",
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
- "phrase": "Testing,1 2 3, testing.",
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
- "phrase": "Truth is fiction.",
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
- "phrase": "The quick brown fox jumps over the lazy dog.",
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
- "phrase": "vcvix rhn",
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
- "phrase": "zmlyh gzxov rhlug vmzhg vkkrm thglm v",
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
- "phrase": "gvhgr mt123 gvhgr mt",
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
- "phrase": "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt",
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.1.0",
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": "(((185 + 223.85) * 15) - 543)/2",
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": "\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)",
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.1.0",
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
- "coins": [1, 5, 10, 25, 100],
14
- "target": 25,
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
- "coins": [1, 5, 10, 25, 100],
21
- "target": 15,
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
- "coins": [1, 4, 15, 20, 50],
28
- "target": 23,
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
- "coins": [1, 5, 10, 21, 25],
35
- "target": 63,
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
- "coins": [1, 2, 5, 10, 20, 50, 100],
42
- "target": 999,
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
- "coins": [2, 5, 10, 20, 50],
51
- "target": 21,
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
- "coins": [4, 5],
58
- "target": 27,
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
- "coins": [1, 5, 10, 21, 25],
65
- "target": 0,
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
- "coins": [5, 10],
72
- "target": 3,
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
- "coins": [5, 10],
79
- "target": 94,
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
- "coins": [1, 2, 5],
86
- "target": -5,
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.1.1",
3
+ "version": "1.2.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "zero steps for one",
7
7
  "property": "steps",
8
- "number": 1,
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
- "number": 16,
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
- "number": 12,
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
- "number": 1000000,
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
- "number": 0,
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
- "number": -15,
48
+ "input": {
49
+ "number": -15
50
+ },
39
51
  "expected": { "error": "Only positive numbers are allowed" }
40
52
  }
41
53
  ]
42
- }
54
+ }