trackler 2.1.0.36 → 2.1.0.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +1 -1
  3. data/lib/trackler/version.rb +1 -1
  4. data/lib/trackler.rb +0 -5
  5. data/tracks/c/config.json +0 -5
  6. data/tracks/clojure/config.json +177 -59
  7. data/tracks/clojure/exercises/kindergarten-garden/src/example.clj +10 -8
  8. data/tracks/elisp/config.json +60 -24
  9. data/tracks/elixir/exercises/poker/poker_test.exs +1 -1
  10. data/tracks/fortran/config.json +6 -0
  11. data/tracks/fortran/exercises/pangram/example.f90 +33 -0
  12. data/tracks/fortran/exercises/pangram/pangram.fun +42 -0
  13. data/tracks/go/config.json +10 -4
  14. data/tracks/go/exercises/acronym/acronym.go +1 -1
  15. data/tracks/groovy/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  16. data/tracks/haskell/config.json +1 -1
  17. data/tracks/java/bin/journey-test.sh +3 -0
  18. data/tracks/java/config.json +14 -14
  19. data/tracks/java/exercises/binary-search/src/test/java/BinarySearchTest.java +20 -20
  20. data/tracks/java/exercises/binary-search-tree/src/test/java/BSTTest.java +32 -32
  21. data/tracks/java/exercises/build.gradle +57 -31
  22. data/tracks/java/exercises/hello-world/GETTING_STARTED.md +4 -0
  23. data/tracks/java/exercises/pythagorean-triplet/src/test/java/PythagoreanTripletTest.java +8 -8
  24. data/tracks/java/exercises/scrabble-score/src/example/java/Scrabble.java +1 -1
  25. data/tracks/java/exercises/scrabble-score/src/test/java/ScrabbleScoreTest.java +10 -5
  26. data/tracks/java/exercises/series/src/test/java/SeriesTest.java +20 -20
  27. data/tracks/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  28. data/tracks/java/gradle/wrapper/gradle-wrapper.properties +2 -2
  29. data/tracks/julia/runtests.jl +1 -6
  30. data/tracks/kotlin/.gitignore +0 -5
  31. data/tracks/kotlin/.travis.yml +21 -1
  32. data/tracks/kotlin/bin/build-jq.sh +11 -0
  33. data/tracks/kotlin/bin/fetch-configlet +1 -1
  34. data/tracks/kotlin/bin/journey-test.sh +34 -14
  35. data/tracks/kotlin/bin/unit-tests.sh +2 -2
  36. data/tracks/kotlin/config.json +230 -160
  37. data/tracks/kotlin/exercises/build.gradle +3 -0
  38. data/tracks/kotlin/exercises/collatz-conjecture/src/test/kotlin/CollatzCalculatorTest.kt +7 -1
  39. data/tracks/kotlin/exercises/gradle.properties +1 -0
  40. data/tracks/kotlin/exercises/list-ops/HINTS.md +5 -0
  41. data/tracks/kotlin/exercises/list-ops/build.gradle +28 -0
  42. data/tracks/kotlin/exercises/list-ops/src/example/kotlin/CustomListExtensions.kt +43 -0
  43. data/tracks/kotlin/exercises/list-ops/src/main/kotlin/.keep +0 -0
  44. data/tracks/kotlin/exercises/list-ops/src/test/kotlin/ListExtensionsTest.kt +157 -0
  45. data/tracks/kotlin/exercises/settings.gradle +13 -12
  46. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.jar +0 -0
  47. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.properties +6 -0
  48. data/tracks/kotlin/gradlew +172 -0
  49. data/tracks/kotlin/gradlew.bat +84 -0
  50. data/tracks/lfe/config.json +90 -30
  51. data/tracks/ocaml/.travis-ci.sh +1 -1
  52. data/tracks/ocaml/.travis.yml +1 -1
  53. data/tracks/ocaml/README.md +1 -1
  54. data/tracks/perl5/.travis.yml +3 -2
  55. data/tracks/perl6/bin/exercise-gen.pl6 +6 -3
  56. data/tracks/racket/config.json +63 -21
  57. data/tracks/ruby/exercises/bob/bob_test.rb +0 -1
  58. data/tracks/ruby/lib/generator/command_line.rb +7 -3
  59. data/tracks/ruby/lib/generator/exercise.rb +19 -0
  60. data/tracks/ruby/lib/generator/files/generator_cases.rb +0 -4
  61. data/tracks/ruby/lib/generator/files/metadata_files.rb +1 -1
  62. data/tracks/ruby/lib/generator/files/track_files.rb +3 -3
  63. data/tracks/ruby/lib/generator/implementation.rb +7 -11
  64. data/tracks/ruby/lib/generator/template_values.rb +5 -9
  65. data/tracks/ruby/lib/generator/underscore.rb +4 -0
  66. data/tracks/ruby/lib/generator.rb +2 -2
  67. data/tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb +3 -3
  68. data/tracks/ruby/test/generator/exercise_test.rb +20 -0
  69. data/tracks/ruby/test/generator/files/generate_cases_test.rb +0 -4
  70. data/tracks/ruby/test/generator/files/metadata_files_test.rb +2 -2
  71. data/tracks/ruby/test/generator/files/track_files_test.rb +4 -5
  72. data/tracks/ruby/test/generator/implementation_test.rb +12 -20
  73. data/tracks/ruby/test/generator/template_values_test.rb +2 -33
  74. data/tracks/ruby/test/generator/underscore_test.rb +4 -0
  75. data/tracks/ruby/test/generator_test.rb +2 -2
  76. data/tracks/rust/exercises/gigasecond/Cargo.lock +58 -13
  77. data/tracks/rust/exercises/gigasecond/Cargo.toml +1 -1
  78. data/tracks/scala/exercises/acronym/src/test/scala/AcronymTest.scala +32 -12
  79. data/tracks/scala/exercises/hamming/example.scala +1 -1
  80. data/tracks/scala/exercises/hamming/src/test/scala/HammingTest.scala +55 -19
  81. data/tracks/scala/exercises/phone-number/example.scala +10 -20
  82. data/tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala +28 -81
  83. data/tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala +16 -0
  84. data/tracks/scala/testgen/src/main/scala/HammingTestGenerator.scala +34 -0
  85. data/tracks/scala/testgen/src/main/scala/PhoneNumberTestGenerator.scala +34 -0
  86. data/tracks/scheme/config.json +43 -16
  87. metadata +21 -5
  88. data/lib/trackler/problem.rb +0 -7
  89. data/lib/trackler/problems.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b811907abfe87f2a895d0d1e6b7ce113922fbc1
4
- data.tar.gz: 17ffdbc50f11cf05aecbe6a800bd7d6414e29fa5
3
+ metadata.gz: 2d78bc5ced63bb0a166c07ed433a7010cdca3f03
4
+ data.tar.gz: 4ddacb3577a7abf62626ede5d16eeb2e35b2b590
5
5
  SHA512:
6
- metadata.gz: 312a430e4335107c35b178d708e15ae72cd7eed754e8eb0e0d4465e2e1cf054eab4133ef6283478452f706b3027416d230c75eb10ed7ea3a71c9cd95ae6cfd5b
7
- data.tar.gz: 27c7d2aca14113fdcabfd20ccfe0c1b97980ee9a26e78c9b110dc19a24e5a60d693bc4ea1b95d7818e26f643554452e0960fabe6e986a3628750cfa18ba4b31f
6
+ metadata.gz: 99d663d8120f35a29f4e021057f76dadd8c9da3582090b0aaeff7d5937235e8b57e0040d1d5533f463709f16b2e3f42bfb4ec36f0eb8db4c8ce765c1d2599ca7
7
+ data.tar.gz: e908a609b5991912c2670eb060698e3c7754079a629ef41b764fd53d7ec50d24712ca167726ee667c08da8235acb88c8d323b8618a80dc6d0a6ad3c421506706
@@ -38,7 +38,7 @@ themselves. There are other guides about contributing to other parts of the Exer
38
38
  * [Track configuration file (config.json)](#track-configuration-file)
39
39
  * [Track-Level Linting With Configlet](#track-level-linting-with-configlet)
40
40
  * [Git Basics](#git-basics)
41
- [Improving Consistency By Extracting Shared Test Data](#improving-consistency-by-extracting-shared-test-data)
41
+ * [Improving Consistency By Extracting Shared Test Data](#improving-consistency-by-extracting-shared-test-data)
42
42
 
43
43
  ## We Will Gladly Help You Help Us
44
44
 
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.1.0.36"
2
+ VERSION = "2.1.0.37"
3
3
  end
data/lib/trackler.rb CHANGED
@@ -5,7 +5,6 @@ module Trackler
5
5
  def self.reset
6
6
  @path = nil
7
7
  @implementations = nil
8
- @problems = nil
9
8
  @specifications = nil
10
9
  @tracks = nil
11
10
  @todos = nil
@@ -29,10 +28,6 @@ module Trackler
29
28
  @specifications ||= Specifications.new(path)
30
29
  end
31
30
 
32
- def self.problems
33
- @problems ||= Problems.new(path)
34
- end
35
-
36
31
  def self.tracks
37
32
  @tracks ||= Tracks.new(path)
38
33
  end
data/tracks/c/config.json CHANGED
@@ -326,11 +326,6 @@
326
326
  ],
327
327
  "deprecated": [
328
328
 
329
- ],
330
- "ignored": [
331
- "vendor",
332
- "docs",
333
- "img"
334
329
  ],
335
330
  "foregone": [
336
331
 
@@ -20,297 +20,415 @@
20
20
  {
21
21
  "difficulty": 1,
22
22
  "slug": "hello-world",
23
- "topics": []
23
+ "topics": [
24
+
25
+ ]
24
26
  },
25
27
  {
26
28
  "difficulty": 1,
27
29
  "slug": "bob",
28
- "topics": []
30
+ "topics": [
31
+
32
+ ]
29
33
  },
30
34
  {
31
35
  "difficulty": 1,
32
36
  "slug": "rna-transcription",
33
- "topics": []
37
+ "topics": [
38
+
39
+ ]
34
40
  },
35
41
  {
36
42
  "difficulty": 1,
37
43
  "slug": "word-count",
38
- "topics": []
44
+ "topics": [
45
+
46
+ ]
39
47
  },
40
48
  {
41
49
  "difficulty": 1,
42
50
  "slug": "anagram",
43
- "topics": []
51
+ "topics": [
52
+
53
+ ]
44
54
  },
45
55
  {
46
56
  "difficulty": 1,
47
57
  "slug": "beer-song",
48
- "topics": []
58
+ "topics": [
59
+
60
+ ]
49
61
  },
50
62
  {
51
63
  "difficulty": 1,
52
64
  "slug": "nucleotide-count",
53
- "topics": []
65
+ "topics": [
66
+
67
+ ]
54
68
  },
55
69
  {
56
70
  "difficulty": 1,
57
71
  "slug": "hamming",
58
- "topics": []
72
+ "topics": [
73
+
74
+ ]
59
75
  },
60
76
  {
61
77
  "difficulty": 1,
62
78
  "slug": "phone-number",
63
- "topics": []
79
+ "topics": [
80
+
81
+ ]
64
82
  },
65
83
  {
66
84
  "difficulty": 1,
67
85
  "slug": "clock",
68
- "topics": []
86
+ "topics": [
87
+
88
+ ]
69
89
  },
70
90
  {
71
91
  "difficulty": 1,
72
92
  "slug": "grade-school",
73
- "topics": []
93
+ "topics": [
94
+
95
+ ]
74
96
  },
75
97
  {
76
98
  "difficulty": 1,
77
99
  "slug": "robot-name",
78
- "topics": []
100
+ "topics": [
101
+
102
+ ]
79
103
  },
80
104
  {
81
105
  "difficulty": 1,
82
106
  "slug": "leap",
83
- "topics": []
107
+ "topics": [
108
+
109
+ ]
84
110
  },
85
111
  {
86
112
  "difficulty": 1,
87
113
  "slug": "etl",
88
- "topics": []
114
+ "topics": [
115
+
116
+ ]
89
117
  },
90
118
  {
91
119
  "difficulty": 1,
92
120
  "slug": "flatten-array",
93
- "topics": []
121
+ "topics": [
122
+
123
+ ]
94
124
  },
95
125
  {
96
126
  "difficulty": 1,
97
127
  "slug": "sublist",
98
- "topics": []
128
+ "topics": [
129
+
130
+ ]
99
131
  },
100
132
  {
101
133
  "difficulty": 1,
102
134
  "slug": "binary-search",
103
- "topics": []
135
+ "topics": [
136
+
137
+ ]
104
138
  },
105
139
  {
106
140
  "difficulty": 1,
107
141
  "slug": "perfect-numbers",
108
- "topics": []
142
+ "topics": [
143
+
144
+ ]
109
145
  },
110
146
  {
111
147
  "difficulty": 1,
112
148
  "slug": "meetup",
113
- "topics": []
149
+ "topics": [
150
+
151
+ ]
114
152
  },
115
153
  {
116
154
  "difficulty": 1,
117
155
  "slug": "space-age",
118
- "topics": []
156
+ "topics": [
157
+
158
+ ]
119
159
  },
120
160
  {
121
161
  "difficulty": 1,
122
162
  "slug": "grains",
123
- "topics": []
163
+ "topics": [
164
+
165
+ ]
124
166
  },
125
167
  {
126
168
  "difficulty": 1,
127
169
  "slug": "gigasecond",
128
- "topics": []
170
+ "topics": [
171
+
172
+ ]
129
173
  },
130
174
  {
131
175
  "difficulty": 1,
132
176
  "slug": "triangle",
133
- "topics": []
177
+ "topics": [
178
+
179
+ ]
134
180
  },
135
181
  {
136
182
  "difficulty": 1,
137
183
  "slug": "scrabble-score",
138
- "topics": []
184
+ "topics": [
185
+
186
+ ]
139
187
  },
140
188
  {
141
189
  "difficulty": 1,
142
190
  "slug": "roman-numerals",
143
- "topics": []
191
+ "topics": [
192
+
193
+ ]
144
194
  },
145
195
  {
146
196
  "difficulty": 1,
147
197
  "slug": "binary",
148
- "topics": []
198
+ "topics": [
199
+
200
+ ]
149
201
  },
150
202
  {
151
203
  "difficulty": 1,
152
204
  "slug": "trinary",
153
- "topics": []
205
+ "topics": [
206
+
207
+ ]
154
208
  },
155
209
  {
156
210
  "difficulty": 1,
157
211
  "slug": "prime-factors",
158
- "topics": []
212
+ "topics": [
213
+
214
+ ]
159
215
  },
160
216
  {
161
217
  "difficulty": 1,
162
218
  "slug": "raindrops",
163
- "topics": []
219
+ "topics": [
220
+
221
+ ]
164
222
  },
165
223
  {
166
224
  "difficulty": 1,
167
225
  "slug": "allergies",
168
- "topics": []
226
+ "topics": [
227
+
228
+ ]
169
229
  },
170
230
  {
171
231
  "difficulty": 1,
172
232
  "slug": "octal",
173
- "topics": []
233
+ "topics": [
234
+
235
+ ]
174
236
  },
175
237
  {
176
238
  "difficulty": 1,
177
239
  "slug": "strain",
178
- "topics": []
240
+ "topics": [
241
+
242
+ ]
179
243
  },
180
244
  {
181
245
  "difficulty": 1,
182
246
  "slug": "atbash-cipher",
183
- "topics": []
247
+ "topics": [
248
+
249
+ ]
184
250
  },
185
251
  {
186
252
  "difficulty": 1,
187
253
  "slug": "bank-account",
188
- "topics": []
254
+ "topics": [
255
+
256
+ ]
189
257
  },
190
258
  {
191
259
  "difficulty": 1,
192
260
  "slug": "crypto-square",
193
- "topics": []
261
+ "topics": [
262
+
263
+ ]
194
264
  },
195
265
  {
196
266
  "difficulty": 1,
197
267
  "slug": "pascals-triangle",
198
- "topics": []
268
+ "topics": [
269
+
270
+ ]
199
271
  },
200
272
  {
201
273
  "difficulty": 1,
202
274
  "slug": "sum-of-multiples",
203
- "topics": []
275
+ "topics": [
276
+
277
+ ]
204
278
  },
205
279
  {
206
280
  "difficulty": 1,
207
281
  "slug": "sieve",
208
- "topics": []
282
+ "topics": [
283
+
284
+ ]
209
285
  },
210
286
  {
211
287
  "difficulty": 1,
212
288
  "slug": "luhn",
213
- "topics": []
289
+ "topics": [
290
+
291
+ ]
214
292
  },
215
293
  {
216
294
  "difficulty": 1,
217
295
  "slug": "kindergarten-garden",
218
- "topics": []
296
+ "topics": [
297
+
298
+ ]
219
299
  },
220
300
  {
221
301
  "difficulty": 1,
222
302
  "slug": "robot-simulator",
223
- "topics": []
303
+ "topics": [
304
+
305
+ ]
224
306
  },
225
307
  {
226
308
  "difficulty": 1,
227
309
  "slug": "queen-attack",
228
- "topics": []
310
+ "topics": [
311
+
312
+ ]
229
313
  },
230
314
  {
231
315
  "difficulty": 1,
232
316
  "slug": "accumulate",
233
- "topics": []
317
+ "topics": [
318
+
319
+ ]
234
320
  },
235
321
  {
236
322
  "difficulty": 1,
237
323
  "slug": "binary-search-tree",
238
- "topics": []
324
+ "topics": [
325
+
326
+ ]
239
327
  },
240
328
  {
241
329
  "difficulty": 1,
242
330
  "slug": "difference-of-squares",
243
- "topics": []
331
+ "topics": [
332
+
333
+ ]
244
334
  },
245
335
  {
246
336
  "difficulty": 1,
247
337
  "slug": "hexadecimal",
248
- "topics": []
338
+ "topics": [
339
+
340
+ ]
249
341
  },
250
342
  {
251
343
  "difficulty": 1,
252
344
  "slug": "all-your-base",
253
- "topics": []
345
+ "topics": [
346
+
347
+ ]
254
348
  },
255
349
  {
256
350
  "difficulty": 1,
257
351
  "slug": "largest-series-product",
258
- "topics": []
352
+ "topics": [
353
+
354
+ ]
259
355
  },
260
356
  {
261
357
  "difficulty": 1,
262
358
  "slug": "pov",
263
- "topics": []
359
+ "topics": [
360
+
361
+ ]
264
362
  },
265
363
  {
266
364
  "difficulty": 1,
267
365
  "slug": "bracket-push",
268
- "topics": []
366
+ "topics": [
367
+
368
+ ]
269
369
  },
270
370
  {
271
371
  "difficulty": 1,
272
372
  "slug": "minesweeper",
273
- "topics": []
373
+ "topics": [
374
+
375
+ ]
274
376
  },
275
377
  {
276
378
  "difficulty": 1,
277
379
  "slug": "change",
278
- "topics": []
380
+ "topics": [
381
+
382
+ ]
279
383
  },
280
384
  {
281
385
  "difficulty": 1,
282
386
  "slug": "pangram",
283
- "topics": []
387
+ "topics": [
388
+
389
+ ]
284
390
  },
285
391
  {
286
392
  "difficulty": 1,
287
393
  "slug": "wordy",
288
- "topics": []
394
+ "topics": [
395
+
396
+ ]
289
397
  },
290
398
  {
291
399
  "difficulty": 1,
292
400
  "slug": "isogram",
293
- "topics": []
401
+ "topics": [
402
+
403
+ ]
294
404
  },
295
405
  {
296
406
  "difficulty": 1,
297
407
  "slug": "acronym",
298
- "topics": []
408
+ "topics": [
409
+
410
+ ]
299
411
  },
300
412
  {
301
413
  "difficulty": 1,
302
414
  "slug": "nth-prime",
303
- "topics": []
415
+ "topics": [
416
+
417
+ ]
304
418
  },
305
419
  {
306
420
  "difficulty": 1,
307
421
  "slug": "pig-latin",
308
- "topics": []
422
+ "topics": [
423
+
424
+ ]
309
425
  },
310
426
  {
311
427
  "difficulty": 1,
312
428
  "slug": "secret-handshake",
313
- "topics": []
429
+ "topics": [
430
+
431
+ ]
314
432
  }
315
433
  ]
316
434
  }
@@ -3,7 +3,7 @@
3
3
  (def default-students ["Alice" "Bob" "Charlie" "David" "Eve" "Fred" "Ginny"
4
4
  "Harriet" "Ileana" "Joseph" "Kincaid" "Larry"])
5
5
 
6
- (def seeds { \G :grass \C :clover \R :radishes \V :violets })
6
+ (def seeds {\G :grass \C :clover \R :radishes \V :violets})
7
7
 
8
8
  (defn row-to-seeds [row-string]
9
9
  (map seeds row-string))
@@ -13,11 +13,13 @@
13
13
 
14
14
  (defn garden
15
15
  ([string]
16
- (garden string default-students))
16
+ (garden string default-students))
17
17
  ([string students]
18
- (let [students (map #(keyword (.toLowerCase %1)) (sort students))
19
- [front back] (map #(partition 2 %1)
20
- (map row-to-seeds (garden-to-rows string)))]
21
- (zipmap students (map vec
22
- (map flatten
23
- (partition 2 (interleave front back))))))))
18
+ (let [students (map #(keyword (clojure.string/lower-case %1)) (sort students))
19
+ [front back] (map #(partition 2 %1)
20
+ (map row-to-seeds (garden-to-rows string)))]
21
+ (->> (interleave front back)
22
+ (partition 2)
23
+ (map flatten)
24
+ (map vec)
25
+ (zipmap students)))))