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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/bowling/canonical-data.json +95 -39
  4. data/problem-specifications/exercises/gigasecond/canonical-data.json +17 -7
  5. data/problem-specifications/exercises/pangram/canonical-data.json +32 -12
  6. data/problem-specifications/exercises/say/canonical-data.json +47 -17
  7. data/problem-specifications/exercises/sum-of-multiples/canonical-data.json +54 -28
  8. data/problem-specifications/exercises/triangle/canonical-data.json +52 -18
  9. data/problem-specifications/exercises/two-bucket/canonical-data.json +38 -26
  10. data/problem-specifications/exercises/two-fer/canonical-data.json +14 -8
  11. data/problem-specifications/exercises/word-count/canonical-data.json +35 -13
  12. data/problem-specifications/exercises/wordy/canonical-data.json +50 -18
  13. data/tracks/bash/exercises/leap/.meta/version +1 -0
  14. data/tracks/bash/exercises/leap/example.sh +9 -9
  15. data/tracks/bash/exercises/leap/leap_test.sh +17 -33
  16. data/tracks/ceylon/exercises/anagram/source/anagram/AnagramTest.ceylon +1 -1
  17. data/tracks/ceylon/exercises/bracket-push/source/bracketpush/BracketsTest.ceylon +1 -1
  18. data/tracks/ceylon/exercises/rna-transcription/source/rnatranscription/RNATest.ceylon +2 -1
  19. data/tracks/fsharp/build.cake +2 -7
  20. data/tracks/fsharp/exercises/acronym/AcronymTest.fs +1 -1
  21. data/tracks/fsharp/exercises/all-your-base/AllYourBase.fs +1 -1
  22. data/tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs +43 -43
  23. data/tracks/fsharp/exercises/all-your-base/Example.fs +5 -5
  24. data/tracks/fsharp/exercises/allergies/AllergiesTest.fs +1 -1
  25. data/tracks/fsharp/exercises/alphametics/AlphameticsTest.fs +19 -1
  26. data/tracks/fsharp/exercises/alphametics/Example.fs +53 -34
  27. data/tracks/fsharp/exercises/anagram/AnagramTest.fs +1 -1
  28. data/tracks/fsharp/exercises/atbash-cipher/AtbashCipherTest.fs +1 -1
  29. data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +1 -1
  30. data/tracks/fsharp/exercises/binary-search/BinarySearchTest.fs +1 -1
  31. data/tracks/fsharp/exercises/bob/BobTest.fs +1 -1
  32. data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +1 -1
  33. data/tracks/fsharp/exercises/bracket-push/BracketPushTest.fs +1 -1
  34. data/tracks/fsharp/exercises/change/ChangeTest.fs +1 -1
  35. data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjectureTest.fs +1 -1
  36. data/tracks/fsharp/exercises/connect/ConnectTest.fs +1 -1
  37. data/tracks/fsharp/exercises/crypto-square/CryptoSquareTest.fs +1 -1
  38. data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquaresTest.fs +1 -1
  39. data/tracks/fsharp/exercises/dominoes/DominoesTest.fs +25 -25
  40. data/tracks/fsharp/exercises/etl/EtlTest.fs +8 -8
  41. data/tracks/fsharp/exercises/isbn-verifier/IsbnVerifierTest.fs +5 -1
  42. data/tracks/fsharp/exercises/luhn/LuhnTest.fs +1 -1
  43. data/tracks/fsharp/exercises/meetup/Example.fs +11 -11
  44. data/tracks/fsharp/exercises/meetup/Meetup.fs +2 -2
  45. data/tracks/fsharp/exercises/meetup/MeetupTest.fs +96 -96
  46. data/tracks/fsharp/exercises/robot-simulator/Example.fs +21 -21
  47. data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fs +5 -5
  48. data/tracks/fsharp/exercises/robot-simulator/RobotSimulatorTest.fs +78 -96
  49. data/tracks/fsharp/generators/CanonicalData.fs +50 -4
  50. data/tracks/fsharp/generators/Common.fs +4 -13
  51. data/tracks/fsharp/generators/Exercise.fs +31 -15
  52. data/tracks/fsharp/generators/Generators.fs +76 -111
  53. data/tracks/haskell/exercises/alphametics/package.yaml +1 -1
  54. data/tracks/haskell/exercises/alphametics/test/Tests.hs +5 -0
  55. data/tracks/haskell/exercises/bowling/package.yaml +1 -1
  56. data/tracks/haskell/exercises/pangram/package.yaml +1 -1
  57. data/tracks/haskell/exercises/say/package.yaml +1 -1
  58. data/tracks/haskell/exercises/sum-of-multiples/package.yaml +1 -1
  59. data/tracks/haskell/exercises/word-count/package.yaml +1 -1
  60. data/tracks/haskell/exercises/wordy/package.yaml +1 -1
  61. data/tracks/java/exercises/nucleotide-count/.meta/hints.md +58 -0
  62. data/tracks/java/exercises/nucleotide-count/README.md +62 -0
  63. metadata +4 -2
@@ -1,97 +1,123 @@
1
1
  {
2
2
  "exercise": "sum-of-multiples",
3
- "version": "1.1.0",
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
- "factors": [3, 5],
9
- "limit": 1,
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
- "factors": [3, 5],
16
- "limit": 4,
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
- "factors": [3],
23
- "limit": 7,
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
- "factors": [3, 5],
30
- "limit": 10,
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
- "factors": [3, 5],
37
- "limit": 100,
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
- "factors": [3, 5],
44
- "limit": 1000,
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
- "factors": [7, 13, 17],
51
- "limit": 20,
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
- "factors": [4, 6],
58
- "limit": 15,
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
- "factors": [5, 6, 8],
65
- "limit": 150,
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
- "factors": [5, 25],
72
- "limit": 51,
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
- "factors": [43, 47],
79
- "limit": 10000,
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
- "factors": [1],
86
- "limit": 100,
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
- "factors": [],
93
- "limit": 10000,
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.0.0",
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
- "sides": [2, 2, 2],
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
- "sides": [2, 3, 2],
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
- "sides": [5, 4, 6],
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
- "sides": [0, 0, 0],
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
- "sides": [0.5, 0.5, 0.5],
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
- "sides": [3, 4, 4],
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
- "sides": [4, 4, 3],
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
- "sides": [4, 3, 4],
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
- "sides": [4, 4, 4],
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
- "sides": [2, 3, 4],
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
- "sides": [1, 1, 3],
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
- "sides": [0.5, 0.4, 0.5],
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
- "sides": [5, 4, 6],
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
- "sides": [4, 4, 4],
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
- "sides": [4, 4, 3],
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
- "sides": [7, 3, 2],
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
- "sides": [0.5, 0.4, 0.6],
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.2.0",
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
- "bucket_one": 3,
9
- "bucket_two": 5,
10
- "goal": 1,
11
- "start_bucket": "one",
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
- "bucket_one": 3,
22
- "bucket_two": 5,
23
- "goal": 1,
24
- "start_bucket": "two",
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
- "bucket_one": 7,
35
- "bucket_two": 11,
36
- "goal": 2,
37
- "start_bucket": "one",
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
- "bucket_one": 7,
48
- "bucket_two": 11,
49
- "goal": 2,
50
- "start_bucket": "two",
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
- "bucket_one": 1,
61
- "bucket_two": 3,
62
- "goal": 3,
63
- "start_bucket": "two",
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
- "bucket_one": 2,
74
- "bucket_two": 3,
75
- "goal": 3,
76
- "start_bucket": "one",
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.1.0",
3
+ "version": "1.2.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "no name given",
7
- "property": "name",
8
- "input": null,
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": "name",
14
- "input": "Alice",
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": "name",
20
- "input": "Bob",
23
+ "property": "twoFer",
24
+ "input": {
25
+ "name": "Bob"
26
+ },
21
27
  "expected": "One for Bob, one for me."
22
28
  }
23
29
  ]
24
- }
30
+ }