trackler 2.0.6.40 → 2.0.6.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/book-store/canonical-data.json +7 -1
  3. data/common/exercises/rotational-cipher/{cannonical-data.json → canonical-data.json} +0 -0
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/c/config.json +9 -0
  6. data/tracks/c/exercises/triangle/makefile +16 -0
  7. data/tracks/c/exercises/triangle/src/example.c +33 -0
  8. data/tracks/c/exercises/triangle/src/example.h +15 -0
  9. data/tracks/c/exercises/triangle/src/triangle.h +10 -0
  10. data/tracks/c/exercises/triangle/test/test_triangle.c +121 -0
  11. data/tracks/c/exercises/triangle/test/vendor/unity.c +1300 -0
  12. data/tracks/c/exercises/triangle/test/vendor/unity.h +274 -0
  13. data/tracks/c/exercises/triangle/test/vendor/unity_internals.h +701 -0
  14. data/tracks/clojure/.gitignore +1 -0
  15. data/tracks/clojure/_src/clock_generator.clj +5 -0
  16. data/tracks/clojure/_src/generator.clj +72 -0
  17. data/tracks/clojure/config.json +6 -0
  18. data/tracks/clojure/exercises/clock/clock.mustache +34 -0
  19. data/tracks/clojure/exercises/clock/project.clj +4 -0
  20. data/tracks/clojure/exercises/clock/src/example.clj +19 -0
  21. data/tracks/clojure/exercises/clock/test/clock_test.clj +177 -0
  22. data/tracks/clojure/project.clj +4 -1
  23. data/tracks/csharp/exercises/poker/Example.cs +1 -1
  24. data/tracks/csharp/exercises/poker/PokerTest.cs +10 -0
  25. data/tracks/erlang/docs/INSTALLATION.md +14 -3
  26. data/tracks/erlang/docs/LEARNING.md +1 -0
  27. data/tracks/go/exercises/gigasecond/gigasecond_test.go +5 -2
  28. data/tracks/go/exercises/grade-school/example.go +2 -0
  29. data/tracks/go/exercises/grade-school/grade_school_test.go +8 -0
  30. data/tracks/go/exercises/hamming/hamming_test.go +1 -1
  31. data/tracks/go/exercises/hello-world/hello_test.go +6 -4
  32. data/tracks/haskell/exercises/accumulate/src/Accumulate.hs +1 -1
  33. data/tracks/haskell/exercises/anagram/src/Anagram.hs +1 -1
  34. data/tracks/java/bin/journey-test.sh +21 -4
  35. data/tracks/java/exercises/allergies/src/example/java/Allergen.java +20 -0
  36. data/tracks/java/exercises/hamming/src/test/java/HammingTest.java +10 -3
  37. data/tracks/java/exercises/luhn/src/example/java/LuhnValidator.java +19 -11
  38. data/tracks/java/exercises/luhn/src/test/java/LuhnValidatorTest.java +43 -1
  39. data/tracks/java/exercises/meetup/src/example/java/MeetupSchedule.java +8 -0
  40. data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +91 -91
  41. data/tracks/java/exercises/perfect-numbers/src/example/java/Classification.java +5 -0
  42. data/tracks/java/exercises/robot-simulator/src/example/java/GridPosition.java +29 -0
  43. data/tracks/java/exercises/robot-simulator/src/example/java/Orientation.java +5 -0
  44. data/tracks/java/exercises/secret-handshake/src/example/java/Signal.java +5 -0
  45. data/tracks/java/exercises/sublist/src/example/java/Relationship.java +5 -0
  46. data/tracks/java/exercises/triangle/src/example/java/TriangleException.java +5 -0
  47. data/tracks/java/exercises/triangle/src/example/java/TriangleKind.java +5 -0
  48. data/tracks/julia/config.json +10 -1
  49. data/tracks/julia/exercises/atbash-cipher/runtests.jl +36 -36
  50. data/tracks/julia/exercises/pangram/example.jl +2 -0
  51. data/tracks/julia/exercises/pangram/pangram.jl +4 -0
  52. data/tracks/julia/exercises/pangram/runtests.jl +40 -0
  53. data/tracks/perl5/exercises/bob/Example.pm +1 -1
  54. data/tracks/perl5/exercises/bob/bob.t +27 -31
  55. data/tracks/php/exercises/accumulate/accumulate_test.php +1 -1
  56. data/tracks/php/exercises/acronym/acronym_test.php +1 -1
  57. data/tracks/php/exercises/allergies/allergies_test.php +1 -1
  58. data/tracks/php/exercises/anagram/anagram_test.php +1 -1
  59. data/tracks/php/exercises/atbash-cipher/atbash-cipher_test.php +1 -1
  60. data/tracks/php/exercises/beer-song/beer-song_test.php +1 -1
  61. data/tracks/php/exercises/binary/binary_test.php +2 -2
  62. data/tracks/php/exercises/bob/bob_test.php +1 -1
  63. data/tracks/php/exercises/book-store/book-store_test.php +1 -1
  64. data/tracks/php/exercises/bowling/bowling_test.php +1 -1
  65. data/tracks/php/exercises/bracket-push/bracket-push_test.php +1 -1
  66. data/tracks/php/exercises/change/change_test.php +3 -3
  67. data/tracks/php/exercises/clock/clock_test.php +1 -1
  68. data/tracks/php/exercises/connect/connect_test.php +1 -1
  69. data/tracks/php/exercises/difference-of-squares/difference-of-squares_test.php +1 -1
  70. data/tracks/php/exercises/etl/etl_test.php +1 -1
  71. data/tracks/php/exercises/gigasecond/gigasecond_test.php +1 -1
  72. data/tracks/php/exercises/grains/grains_test.php +1 -1
  73. data/tracks/php/exercises/hamming/hamming_test.php +2 -2
  74. data/tracks/php/exercises/hello-world/hello-world_test.php +1 -1
  75. data/tracks/php/exercises/isogram/isogram_test.php +1 -1
  76. data/tracks/php/exercises/largest-series-product/largest-series-product_test.php +1 -1
  77. data/tracks/php/exercises/leap/leap_test.php +1 -1
  78. data/tracks/php/exercises/markdown/markdown_test.php +1 -1
  79. data/tracks/php/exercises/minesweeper/minesweeper_test.php +7 -7
  80. data/tracks/php/exercises/nucleotide-count/nucleotide-count_test.php +1 -1
  81. data/tracks/php/exercises/ocr-numbers/ocr-numbers_test.php +1 -1
  82. data/tracks/php/exercises/pangram/pangram_test.php +1 -1
  83. data/tracks/php/exercises/phone-number/phone-number_test.php +1 -1
  84. data/tracks/php/exercises/pig-latin/pig-latin_test.php +1 -1
  85. data/tracks/php/exercises/raindrops/raindrops_test.php +1 -1
  86. data/tracks/php/exercises/rna-transcription/rna-transcription_test.php +1 -1
  87. data/tracks/php/exercises/robot-name/robot-name_test.php +1 -1
  88. data/tracks/php/exercises/robot-simulator/robot-simulator_test.php +1 -1
  89. data/tracks/php/exercises/roman-numerals/roman-numerals_test.php +1 -1
  90. data/tracks/php/exercises/sieve/sieve_test.php +1 -1
  91. data/tracks/php/exercises/space-age/space-age_test.php +1 -1
  92. data/tracks/php/exercises/triangle/triangle_test.php +1 -1
  93. data/tracks/php/exercises/trinary/trinary_test.php +1 -1
  94. data/tracks/php/exercises/variable-length-quantity/variable-length-quantity_test.php +3 -3
  95. data/tracks/php/exercises/word-count/word-count_test.php +1 -1
  96. data/tracks/php/exercises/wordy/wordy_test.php +3 -3
  97. data/tracks/python/config.json +3 -13
  98. data/tracks/python/exercises/rectangles/rectangles_count_test.py +15 -22
  99. data/tracks/scala/config.json +684 -665
  100. data/tracks/scala/exercises/binary-search/build.sbt +3 -0
  101. data/tracks/scala/exercises/binary-search/example.scala +23 -0
  102. data/tracks/scala/exercises/binary-search/src/main/scala/BinarySearch.scala +0 -0
  103. data/tracks/scala/exercises/binary-search/src/test/scala/BinarySearchTest.scala +63 -0
  104. data/tracks/scala/exercises/strain/build.sbt +3 -0
  105. data/tracks/scala/exercises/strain/example.scala +22 -0
  106. data/tracks/scala/exercises/strain/src/main/scala/Strain.scala +0 -0
  107. data/tracks/scala/exercises/strain/src/test/scala/StrainTest.scala +78 -0
  108. data/tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala +13 -20
  109. data/tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala +48 -0
  110. data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +24 -32
  111. data/tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala +148 -112
  112. data/tracks/scala/testgen/src/main/scala/TestBuilder.scala +86 -0
  113. metadata +30 -3
  114. data/tracks/java/exercises/allergies/src/example/java/Allergen.java +0 -1
  115. data/tracks/java/exercises/meetup/src/example/java/MeetupSchedule.java +0 -1
  116. data/tracks/java/exercises/perfect-numbers/src/example/java/Classification.java +0 -1
  117. data/tracks/java/exercises/robot-simulator/src/example/java/GridPosition.java +0 -1
  118. data/tracks/java/exercises/robot-simulator/src/example/java/Orientation.java +0 -1
  119. data/tracks/java/exercises/secret-handshake/src/example/java/Signal.java +0 -1
  120. data/tracks/java/exercises/sublist/src/example/java/Relationship.java +0 -1
  121. data/tracks/java/exercises/triangle/src/example/java/TriangleException.java +0 -1
  122. data/tracks/java/exercises/triangle/src/example/java/TriangleKind.java +0 -1
@@ -1,666 +1,685 @@
1
- {
2
- "slug": "scala",
3
- "language": "Scala",
4
- "repository": "https://github.com/exercism/xscala",
5
- "active": true,
6
- "exercises": [
7
- {
8
- "slug": "hello-world",
9
- "difficulty": 1,
10
- "topics": [
11
- "Strings"
12
- ]
13
- },
14
- {
15
- "slug": "bob",
16
- "difficulty": 1,
17
- "topics": [
18
- "Strings",
19
- "Control-flow (if-else statements)",
20
- "Pattern matching"
21
- ]
22
- },
23
- {
24
- "slug": "sum-of-multiples",
25
- "difficulty": 1,
26
- "topics": [
27
- "Filtering",
28
- "Sets"
29
- ]
30
- },
31
- {
32
- "slug": "run-length-encoding",
33
- "difficulty": 1,
34
- "topics": [
35
- "Algorithms",
36
- "Transforming",
37
- "Strings"
38
- ]
39
- },
40
- {
41
- "slug": "hamming",
42
- "difficulty": 2,
43
- "topics": [
44
- "Strings",
45
- "Filtering",
46
- "Optional values"
47
- ]
48
- },
49
- {
50
- "slug": "word-count",
51
- "difficulty": 1,
52
- "topics": [
53
- "Maps",
54
- "Strings",
55
- "Transforming"
56
- ]
57
- },
58
- {
59
- "slug": "pangram",
60
- "difficulty": 1,
61
- "topics": [
62
- "Strings"
63
- ]
64
- },
65
- {
66
- "slug": "anagram",
67
- "difficulty": 1,
68
- "topics": [
69
- "Sequences",
70
- "Strings",
71
- "Filtering"
72
- ]
73
- },
74
- {
75
- "slug": "nucleotide-count",
76
- "difficulty": 1,
77
- "topics": [
78
- "Maps",
79
- "Strings"
80
- ]
81
- },
82
- {
83
- "slug": "phone-number",
84
- "difficulty": 1,
85
- "topics": [
86
- "Optional values",
87
- "Strings",
88
- "Parsing",
89
- "Transforming"
90
- ]
91
- },
92
- {
93
- "slug": "grade-school",
94
- "difficulty": 1,
95
- "topics": [
96
- "Maps",
97
- "Sequences",
98
- "Sorting"
99
- ]
100
- },
101
- {
102
- "slug": "robot-name",
103
- "difficulty": 1,
104
- "topics": [
105
- "Strings",
106
- "Randomness"
107
- ]
108
- },
109
- {
110
- "slug": "leap",
111
- "difficulty": 1,
112
- "topics": [
113
- "Integers",
114
- "Mathematics"
115
- ]
116
- },
117
- {
118
- "slug": "etl",
119
- "difficulty": 1,
120
- "topics": [
121
- "Lists",
122
- "Maps",
123
- "Sequences",
124
- "Strings",
125
- "Transforming"
126
- ]
127
- },
128
- {
129
- "slug": "meetup",
130
- "difficulty": 1,
131
- "topics": [
132
- "Dates"
133
- ]
134
- },
135
- {
136
- "slug": "space-age",
137
- "difficulty": 1,
138
- "topics": [
139
- "Dates",
140
- "Enumerations",
141
- "Domain-specific languages"
142
- ]
143
- },
144
- {
145
- "slug": "grains",
146
- "difficulty": 1,
147
- "topics": [
148
- "Optional values",
149
- "Mathematics"
150
- ]
151
- },
152
- {
153
- "slug": "gigasecond",
154
- "difficulty": 1,
155
- "topics": [
156
- "Dates",
157
- "Time",
158
- "Function Overloading"
159
- ]
160
- },
161
- {
162
- "slug": "scrabble-score",
163
- "difficulty": 1,
164
- "topics": [
165
- "Strings",
166
- "Transforming"
167
- ]
168
- },
169
- {
170
- "slug": "difference-of-squares",
171
- "difficulty": 1,
172
- "topics": [
173
- "Integers",
174
- "Mathematics"
175
- ]
176
- },
177
- {
178
- "slug": "accumulate",
179
- "difficulty": 1,
180
- "topics": [
181
- "Generics",
182
- "Lists",
183
- "Transforming"
184
- ]
185
- },
186
- {
187
- "slug": "sublist",
188
- "difficulty": 1,
189
- "topics": [
190
- "Generics",
191
- "Enumerations",
192
- "Lists"
193
- ]
194
- },
195
- {
196
- "slug": "rna-transcription",
197
- "difficulty": 1,
198
- "topics": [
199
- "Optional values",
200
- "Strings",
201
- "Transforming"
202
- ]
203
- },
204
- {
205
- "slug": "triangle",
206
- "difficulty": 1,
207
- "topics": [
208
- "Enumerations",
209
- "Mathematics"
210
- ]
211
- },
212
- {
213
- "slug": "roman-numerals",
214
- "difficulty": 1,
215
- "topics": [
216
- "Sequences",
217
- "Algorithms",
218
- "Transforming"
219
- ]
220
- },
221
- {
222
- "slug": "prime-factors",
223
- "difficulty": 1,
224
- "topics": [
225
- "Lists",
226
- "Integers",
227
- "Algorithms",
228
- "Mathematics"
229
- ]
230
- },
231
- {
232
- "slug": "raindrops",
233
- "difficulty": 1,
234
- "topics": [
235
- "Strings",
236
- "Logic",
237
- "Transforming"
238
- ]
239
- },
240
- {
241
- "slug": "allergies",
242
- "difficulty": 1,
243
- "topics": [
244
- "Lists",
245
- "Enumerations",
246
- "Filtering"
247
- ]
248
- },
249
- {
250
- "slug": "atbash-cipher",
251
- "difficulty": 1,
252
- "topics": [
253
- "Strings",
254
- "Transforming",
255
- "Security"
256
- ]
257
- },
258
- {
259
- "slug": "all-your-base",
260
- "difficulty": 1,
261
- "topics": [
262
- "Integers",
263
- "Lists",
264
- "Optional values",
265
- "Mathematics",
266
- "Transforming"
267
- ]
268
- },
269
- {
270
- "slug": "bank-account",
271
- "difficulty": 1,
272
- "topics": [
273
- "Parallellism"
274
- ]
275
- },
276
- {
277
- "slug": "crypto-square",
278
- "difficulty": 1,
279
- "topics": [
280
- "Strings",
281
- "Lists",
282
- "Security",
283
- "Transforming"
284
- ]
285
- },
286
- {
287
- "slug": "kindergarten-garden",
288
- "difficulty": 1,
289
- "topics": [
290
- "Enumerations",
291
- "Transforming",
292
- "Lists"
293
- ]
294
- },
295
- {
296
- "slug": "robot-simulator",
297
- "difficulty": 1,
298
- "topics": [
299
- "Enumerations",
300
- "Tuples"
301
- ]
302
- },
303
- {
304
- "slug": "bracket-push",
305
- "difficulty": 1,
306
- "topics": [
307
- "Strings",
308
- "Parsing"
309
- ]
310
- },
311
- {
312
- "slug": "queen-attack",
313
- "difficulty": 1,
314
- "topics": [
315
- "Strings",
316
- "Optional values",
317
- "Logic",
318
- "Games"
319
- ]
320
- },
321
- {
322
- "slug": "binary-search-tree",
323
- "difficulty": 1,
324
- "topics": [
325
- "Searching",
326
- "Lists",
327
- "Trees",
328
- "Generics"
329
- ]
330
- },
331
- {
332
- "slug": "largest-series-product",
333
- "difficulty": 1,
334
- "topics": [
335
- "Strings",
336
- "Integers",
337
- "Optional values",
338
- "Transforming",
339
- "Mathematics"
340
- ]
341
- },
342
- {
343
- "slug": "luhn",
344
- "difficulty": 1,
345
- "topics": [
346
- "Strings",
347
- "Algorithms",
348
- "Transforming"
349
- ]
350
- },
351
- {
352
- "slug": "clock",
353
- "difficulty": 1,
354
- "topics": [
355
- "Time",
356
- "Structural equality"
357
- ]
358
- },
359
- {
360
- "slug": "matrix",
361
- "difficulty": 1,
362
- "topics": [
363
- "Strings",
364
- "Matrices",
365
- "Parsing",
366
- "Vectors"
367
- ]
368
- },
369
- {
370
- "slug": "house",
371
- "difficulty": 1,
372
- "topics": [
373
- "Strings",
374
- "Text formatting",
375
- "Algorithms"
376
- ]
377
- },
378
- {
379
- "slug": "zebra-puzzle",
380
- "difficulty": 1,
381
- "topics": [
382
- "Logic"
383
- ]
384
- },
385
- {
386
- "slug": "minesweeper",
387
- "difficulty": 1,
388
- "topics": [
389
- "Lists",
390
- "Strings",
391
- "Parsing",
392
- "Transforming"
393
- ]
394
- },
395
- {
396
- "slug": "ocr-numbers",
397
- "difficulty": 1,
398
- "topics": [
399
- "Lists",
400
- "Strings",
401
- "Parsing",
402
- "Pattern recognition",
403
- "Transforming"
404
- ]
405
- },
406
- {
407
- "slug": "wordy",
408
- "difficulty": 1,
409
- "topics": [
410
- "Mathematics",
411
- "Optional values",
412
- "Parsing",
413
- "Strings",
414
- "Transforming"
415
- ]
416
- },
417
- {
418
- "slug": "food-chain",
419
- "difficulty": 1,
420
- "topics": [
421
- "Text formatting",
422
- "Algorithms"
423
- ]
424
- },
425
- {
426
- "slug": "linked-list",
427
- "difficulty": 1,
428
- "topics": [
429
- "Lists",
430
- "Generics",
431
- "Optional values"
432
- ]
433
- },
434
- {
435
- "slug": "custom-set",
436
- "difficulty": 1,
437
- "topics": [
438
- "Sets",
439
- "Lists",
440
- "Generics"
441
- ]
442
- },
443
- {
444
- "slug": "nth-prime",
445
- "difficulty": 1,
446
- "topics": [
447
- "Optional values",
448
- "Algorithms",
449
- "Mathematics"
450
- ]
451
- },
452
- {
453
- "slug": "palindrome-products",
454
- "difficulty": 1,
455
- "topics": [
456
- "Sets",
457
- "Strings",
458
- "Tuples",
459
- "Algorithms"
460
- ]
461
- },
462
- {
463
- "slug": "pascals-triangle",
464
- "difficulty": 1,
465
- "topics": [
466
- "Control-flow (loops)",
467
- "Lists",
468
- "Mathematics"
469
- ]
470
- },
471
- {
472
- "slug": "pig-latin",
473
- "difficulty": 1,
474
- "topics": [
475
- "Strings",
476
- "Transforming"
477
- ]
478
- },
479
- {
480
- "slug": "pythagorean-triplet",
481
- "difficulty": 1,
482
- "topics": [
483
- "Integers",
484
- "Mathematics",
485
- "Sequences",
486
- "Tuples"
487
- ]
488
- },
489
- {
490
- "slug": "saddle-points",
491
- "difficulty": 1,
492
- "topics": [
493
- "Matrices",
494
- "Lists",
495
- "Sets",
496
- "Tuples"
497
- ]
498
- },
499
- {
500
- "slug": "say",
501
- "difficulty": 1,
502
- "topics": [
503
- "Strings",
504
- "Transforming",
505
- "Text formatting",
506
- "Optional values"
507
- ]
508
- },
509
- {
510
- "slug": "alphametics",
511
- "difficulty": 1,
512
- "topics": [
513
- "Maps",
514
- "Optional values",
515
- "Strings",
516
- "Parsing"
517
- ]
518
- },
519
- {
520
- "slug": "secret-handshake",
521
- "difficulty": 1,
522
- "topics": [
523
- "Lists",
524
- "Strings",
525
- "Bitwise operations"
526
- ]
527
- },
528
- {
529
- "slug": "series",
530
- "difficulty": 1,
531
- "topics": [
532
- "Strings",
533
- "Sequences",
534
- "Transforming"
535
- ]
536
- },
537
- {
538
- "slug": "sieve",
539
- "difficulty": 1,
540
- "topics": [
541
- "Filtering",
542
- "Mathematics",
543
- "Lists"
544
- ]
545
- },
546
- {
547
- "slug": "simple-cipher",
548
- "difficulty": 1,
549
- "topics": [
550
- "Optional values",
551
- "Strings",
552
- "Algorithms",
553
- "Transforming"
554
- ]
555
- },
556
- {
557
- "slug": "change",
558
- "difficulty": 1,
559
- "topics": [
560
- "Integers",
561
- "Lists",
562
- "Optional values",
563
- "Mathematics"
564
- ]
565
- },
566
- {
567
- "slug": "connect",
568
- "difficulty": 1,
569
- "topics": [
570
- "Recursion",
571
- "Graphs",
572
- "Optional values",
573
- "Algorithms",
574
- "Games",
575
- "Searching"
576
- ]
577
- },
578
- {
579
- "slug": "dominoes",
580
- "difficulty": 1,
581
- "topics": [
582
- "Lists",
583
- "Optional values",
584
- "Tuples",
585
- "Games"
586
- ]
587
- },
588
- {
589
- "slug": "parallel-letter-frequency",
590
- "difficulty": 1,
591
- "topics": [
592
- "Maps",
593
- "Sequences",
594
- "Strings",
595
- "Parallellism",
596
- "Transforming",
597
- "Dictionaries"
598
- ]
599
- },
600
- {
601
- "slug": "sgf-parsing",
602
- "difficulty": 1,
603
- "topics": [
604
- "Parsing",
605
- "Transforming"
606
- ]
607
- },
608
- {
609
- "slug": "acronym",
610
- "difficulty": 1,
611
- "topics": [
612
- "Strings",
613
- "Transforming"
614
- ]
615
- },
616
- {
617
- "slug": "zipper",
618
- "difficulty": 1,
619
- "topics": [
620
- "Generics",
621
- "Optional values",
622
- "Trees"
623
- ]
624
- },
625
- {
626
- "slug": "forth",
627
- "difficulty": 1,
628
- "topics": [
629
- "Strings",
630
- "Mathematics",
631
- "Parsing"
632
- ]
633
- },
634
- {
635
- "slug": "lens-person",
636
- "difficulty": 1,
637
- "topics": [
638
- ]
639
- },
640
- {
641
- "slug": "bowling",
642
- "difficulty": 6,
643
- "topics": [
644
- "Algorithms",
645
- "Control-flow (if-else statements)",
646
- "Lists"
647
- ]
648
- }
649
- ],
650
- "deprecated": [
651
- "binary",
652
- "hexadecimal",
653
- "octal",
654
- "trinary"
655
- ],
656
- "ignored": [
657
- "docs",
658
- "img",
659
- "project",
660
- "target",
661
- "testgen"
662
- ],
663
- "foregone": [
1
+ {
2
+ "slug":"scala",
3
+ "language":"Scala",
4
+ "repository":"https://github.com/exercism/xscala",
5
+ "active":true,
6
+ "exercises":[
7
+ {
8
+ "slug":"hello-world",
9
+ "difficulty":1,
10
+ "topics":[
11
+ "Strings"
12
+ ]
13
+ },
14
+ {
15
+ "slug":"bob",
16
+ "difficulty":1,
17
+ "topics":[
18
+ "Strings",
19
+ "Control-flow (if-else statements)",
20
+ "Pattern matching"
21
+ ]
22
+ },
23
+ {
24
+ "slug":"sum-of-multiples",
25
+ "difficulty":1,
26
+ "topics":[
27
+ "Filtering",
28
+ "Sets"
29
+ ]
30
+ },
31
+ {
32
+ "slug":"run-length-encoding",
33
+ "difficulty":1,
34
+ "topics":[
35
+ "Algorithms",
36
+ "Transforming",
37
+ "Strings"
38
+ ]
39
+ },
40
+ {
41
+ "slug":"hamming",
42
+ "difficulty":2,
43
+ "topics":[
44
+ "Strings",
45
+ "Filtering",
46
+ "Optional values"
47
+ ]
48
+ },
49
+ {
50
+ "slug":"word-count",
51
+ "difficulty":1,
52
+ "topics":[
53
+ "Maps",
54
+ "Strings",
55
+ "Transforming"
56
+ ]
57
+ },
58
+ {
59
+ "slug":"pangram",
60
+ "difficulty":1,
61
+ "topics":[
62
+ "Strings"
63
+ ]
64
+ },
65
+ {
66
+ "slug":"anagram",
67
+ "difficulty":1,
68
+ "topics":[
69
+ "Sequences",
70
+ "Strings",
71
+ "Filtering"
72
+ ]
73
+ },
74
+ {
75
+ "slug":"nucleotide-count",
76
+ "difficulty":1,
77
+ "topics":[
78
+ "Maps",
79
+ "Strings"
80
+ ]
81
+ },
82
+ {
83
+ "slug":"phone-number",
84
+ "difficulty":1,
85
+ "topics":[
86
+ "Optional values",
87
+ "Strings",
88
+ "Parsing",
89
+ "Transforming"
90
+ ]
91
+ },
92
+ {
93
+ "slug":"strain",
94
+ "difficulty":1,
95
+ "topics":[
96
+ "Generics",
97
+ "Sequences",
98
+ "Filtering"
99
+ ]
100
+ },
101
+ {
102
+ "slug":"grade-school",
103
+ "difficulty":1,
104
+ "topics":[
105
+ "Maps",
106
+ "Sequences",
107
+ "Sorting"
108
+ ]
109
+ },
110
+ {
111
+ "slug":"robot-name",
112
+ "difficulty":1,
113
+ "topics":[
114
+ "Strings",
115
+ "Randomness"
116
+ ]
117
+ },
118
+ {
119
+ "slug":"leap",
120
+ "difficulty":1,
121
+ "topics":[
122
+ "Integers",
123
+ "Mathematics"
124
+ ]
125
+ },
126
+ {
127
+ "slug":"etl",
128
+ "difficulty":1,
129
+ "topics":[
130
+ "Lists",
131
+ "Maps",
132
+ "Sequences",
133
+ "Strings",
134
+ "Transforming"
135
+ ]
136
+ },
137
+ {
138
+ "slug":"meetup",
139
+ "difficulty":1,
140
+ "topics":[
141
+ "Dates"
142
+ ]
143
+ },
144
+ {
145
+ "slug":"space-age",
146
+ "difficulty":1,
147
+ "topics":[
148
+ "Dates",
149
+ "Enumerations",
150
+ "Domain-specific languages"
151
+ ]
152
+ },
153
+ {
154
+ "slug":"grains",
155
+ "difficulty":1,
156
+ "topics":[
157
+ "Optional values",
158
+ "Mathematics"
159
+ ]
160
+ },
161
+ {
162
+ "slug":"gigasecond",
163
+ "difficulty":1,
164
+ "topics":[
165
+ "Dates",
166
+ "Time",
167
+ "Function Overloading"
168
+ ]
169
+ },
170
+ {
171
+ "slug":"scrabble-score",
172
+ "difficulty":1,
173
+ "topics":[
174
+ "Strings",
175
+ "Transforming"
176
+ ]
177
+ },
178
+ {
179
+ "slug":"difference-of-squares",
180
+ "difficulty":1,
181
+ "topics":[
182
+ "Integers",
183
+ "Mathematics"
184
+ ]
185
+ },
186
+ {
187
+ "slug":"accumulate",
188
+ "difficulty":1,
189
+ "topics":[
190
+ "Generics",
191
+ "Lists",
192
+ "Transforming"
193
+ ]
194
+ },
195
+ {
196
+ "slug":"sublist",
197
+ "difficulty":1,
198
+ "topics":[
199
+ "Generics",
200
+ "Enumerations",
201
+ "Lists"
202
+ ]
203
+ },
204
+ {
205
+ "slug":"rna-transcription",
206
+ "difficulty":1,
207
+ "topics":[
208
+ "Optional values",
209
+ "Strings",
210
+ "Transforming"
211
+ ]
212
+ },
213
+ {
214
+ "slug":"triangle",
215
+ "difficulty":1,
216
+ "topics":[
217
+ "Enumerations",
218
+ "Mathematics"
219
+ ]
220
+ },
221
+ {
222
+ "slug":"roman-numerals",
223
+ "difficulty":1,
224
+ "topics":[
225
+ "Sequences",
226
+ "Algorithms",
227
+ "Transforming"
228
+ ]
229
+ },
230
+ {
231
+ "slug":"binary-search",
232
+ "difficulty":1,
233
+ "topics":[
234
+ "Searching",
235
+ "Arrays",
236
+ "Optional values"
237
+ ]
238
+ },
239
+ {
240
+ "slug":"prime-factors",
241
+ "difficulty":1,
242
+ "topics":[
243
+ "Lists",
244
+ "Integers",
245
+ "Algorithms",
246
+ "Mathematics"
247
+ ]
248
+ },
249
+ {
250
+ "slug":"raindrops",
251
+ "difficulty":1,
252
+ "topics":[
253
+ "Strings",
254
+ "Logic",
255
+ "Transforming"
256
+ ]
257
+ },
258
+ {
259
+ "slug":"allergies",
260
+ "difficulty":1,
261
+ "topics":[
262
+ "Lists",
263
+ "Enumerations",
264
+ "Filtering"
265
+ ]
266
+ },
267
+ {
268
+ "slug":"atbash-cipher",
269
+ "difficulty":1,
270
+ "topics":[
271
+ "Strings",
272
+ "Transforming",
273
+ "Security"
274
+ ]
275
+ },
276
+ {
277
+ "slug":"all-your-base",
278
+ "difficulty":1,
279
+ "topics":[
280
+ "Integers",
281
+ "Lists",
282
+ "Optional values",
283
+ "Mathematics",
284
+ "Transforming"
285
+ ]
286
+ },
287
+ {
288
+ "slug":"bank-account",
289
+ "difficulty":1,
290
+ "topics":[
291
+ "Parallellism"
292
+ ]
293
+ },
294
+ {
295
+ "slug":"crypto-square",
296
+ "difficulty":1,
297
+ "topics":[
298
+ "Strings",
299
+ "Lists",
300
+ "Security",
301
+ "Transforming"
302
+ ]
303
+ },
304
+ {
305
+ "slug":"kindergarten-garden",
306
+ "difficulty":1,
307
+ "topics":[
308
+ "Enumerations",
309
+ "Transforming",
310
+ "Lists"
311
+ ]
312
+ },
313
+ {
314
+ "slug":"robot-simulator",
315
+ "difficulty":1,
316
+ "topics":[
317
+ "Enumerations",
318
+ "Tuples"
319
+ ]
320
+ },
321
+ {
322
+ "slug":"bracket-push",
323
+ "difficulty":1,
324
+ "topics":[
325
+ "Strings",
326
+ "Parsing"
327
+ ]
328
+ },
329
+ {
330
+ "slug":"queen-attack",
331
+ "difficulty":1,
332
+ "topics":[
333
+ "Strings",
334
+ "Optional values",
335
+ "Logic",
336
+ "Games"
337
+ ]
338
+ },
339
+ {
340
+ "slug":"binary-search-tree",
341
+ "difficulty":1,
342
+ "topics":[
343
+ "Searching",
344
+ "Lists",
345
+ "Trees",
346
+ "Generics"
347
+ ]
348
+ },
349
+ {
350
+ "slug":"largest-series-product",
351
+ "difficulty":1,
352
+ "topics":[
353
+ "Strings",
354
+ "Integers",
355
+ "Optional values",
356
+ "Transforming",
357
+ "Mathematics"
358
+ ]
359
+ },
360
+ {
361
+ "slug":"luhn",
362
+ "difficulty":1,
363
+ "topics":[
364
+ "Strings",
365
+ "Algorithms",
366
+ "Transforming"
367
+ ]
368
+ },
369
+ {
370
+ "slug":"clock",
371
+ "difficulty":1,
372
+ "topics":[
373
+ "Time",
374
+ "Structural equality"
375
+ ]
376
+ },
377
+ {
378
+ "slug":"matrix",
379
+ "difficulty":1,
380
+ "topics":[
381
+ "Strings",
382
+ "Matrices",
383
+ "Parsing",
384
+ "Vectors"
385
+ ]
386
+ },
387
+ {
388
+ "slug":"house",
389
+ "difficulty":1,
390
+ "topics":[
391
+ "Strings",
392
+ "Text formatting",
393
+ "Algorithms"
394
+ ]
395
+ },
396
+ {
397
+ "slug":"zebra-puzzle",
398
+ "difficulty":1,
399
+ "topics":[
400
+ "Logic"
401
+ ]
402
+ },
403
+ {
404
+ "slug":"minesweeper",
405
+ "difficulty":1,
406
+ "topics":[
407
+ "Lists",
408
+ "Strings",
409
+ "Parsing",
410
+ "Transforming"
411
+ ]
412
+ },
413
+ {
414
+ "slug":"ocr-numbers",
415
+ "difficulty":1,
416
+ "topics":[
417
+ "Lists",
418
+ "Strings",
419
+ "Parsing",
420
+ "Pattern recognition",
421
+ "Transforming"
422
+ ]
423
+ },
424
+ {
425
+ "slug":"wordy",
426
+ "difficulty":1,
427
+ "topics":[
428
+ "Mathematics",
429
+ "Optional values",
430
+ "Parsing",
431
+ "Strings",
432
+ "Transforming"
433
+ ]
434
+ },
435
+ {
436
+ "slug":"food-chain",
437
+ "difficulty":1,
438
+ "topics":[
439
+ "Text formatting",
440
+ "Algorithms"
441
+ ]
442
+ },
443
+ {
444
+ "slug":"linked-list",
445
+ "difficulty":1,
446
+ "topics":[
447
+ "Lists",
448
+ "Generics",
449
+ "Optional values"
450
+ ]
451
+ },
452
+ {
453
+ "slug":"custom-set",
454
+ "difficulty":1,
455
+ "topics":[
456
+ "Sets",
457
+ "Lists",
458
+ "Generics"
459
+ ]
460
+ },
461
+ {
462
+ "slug":"nth-prime",
463
+ "difficulty":1,
464
+ "topics":[
465
+ "Optional values",
466
+ "Algorithms",
467
+ "Mathematics"
468
+ ]
469
+ },
470
+ {
471
+ "slug":"palindrome-products",
472
+ "difficulty":1,
473
+ "topics":[
474
+ "Sets",
475
+ "Strings",
476
+ "Tuples",
477
+ "Algorithms"
478
+ ]
479
+ },
480
+ {
481
+ "slug":"pascals-triangle",
482
+ "difficulty":1,
483
+ "topics":[
484
+ "Control-flow (loops)",
485
+ "Lists",
486
+ "Mathematics"
487
+ ]
488
+ },
489
+ {
490
+ "slug":"pig-latin",
491
+ "difficulty":1,
492
+ "topics":[
493
+ "Strings",
494
+ "Transforming"
495
+ ]
496
+ },
497
+ {
498
+ "slug":"pythagorean-triplet",
499
+ "difficulty":1,
500
+ "topics":[
501
+ "Integers",
502
+ "Mathematics",
503
+ "Sequences",
504
+ "Tuples"
505
+ ]
506
+ },
507
+ {
508
+ "slug":"saddle-points",
509
+ "difficulty":1,
510
+ "topics":[
511
+ "Matrices",
512
+ "Lists",
513
+ "Sets",
514
+ "Tuples"
515
+ ]
516
+ },
517
+ {
518
+ "slug":"say",
519
+ "difficulty":1,
520
+ "topics":[
521
+ "Strings",
522
+ "Transforming",
523
+ "Text formatting",
524
+ "Optional values"
525
+ ]
526
+ },
527
+ {
528
+ "slug":"alphametics",
529
+ "difficulty":1,
530
+ "topics":[
531
+ "Maps",
532
+ "Optional values",
533
+ "Strings",
534
+ "Parsing"
535
+ ]
536
+ },
537
+ {
538
+ "slug":"secret-handshake",
539
+ "difficulty":1,
540
+ "topics":[
541
+ "Lists",
542
+ "Strings",
543
+ "Bitwise operations"
544
+ ]
545
+ },
546
+ {
547
+ "slug":"series",
548
+ "difficulty":1,
549
+ "topics":[
550
+ "Strings",
551
+ "Sequences",
552
+ "Transforming"
553
+ ]
554
+ },
555
+ {
556
+ "slug":"sieve",
557
+ "difficulty":1,
558
+ "topics":[
559
+ "Filtering",
560
+ "Mathematics",
561
+ "Lists"
562
+ ]
563
+ },
564
+ {
565
+ "slug":"simple-cipher",
566
+ "difficulty":1,
567
+ "topics":[
568
+ "Optional values",
569
+ "Strings",
570
+ "Algorithms",
571
+ "Transforming"
572
+ ]
573
+ },
574
+ {
575
+ "slug":"change",
576
+ "difficulty":1,
577
+ "topics":[
578
+ "Integers",
579
+ "Lists",
580
+ "Optional values",
581
+ "Mathematics"
582
+ ]
583
+ },
584
+ {
585
+ "slug":"connect",
586
+ "difficulty":1,
587
+ "topics":[
588
+ "Recursion",
589
+ "Graphs",
590
+ "Optional values",
591
+ "Algorithms",
592
+ "Games",
593
+ "Searching"
594
+ ]
595
+ },
596
+ {
597
+ "slug":"dominoes",
598
+ "difficulty":1,
599
+ "topics":[
600
+ "Lists",
601
+ "Optional values",
602
+ "Tuples",
603
+ "Games"
604
+ ]
605
+ },
606
+ {
607
+ "slug":"parallel-letter-frequency",
608
+ "difficulty":1,
609
+ "topics":[
610
+ "Maps",
611
+ "Sequences",
612
+ "Strings",
613
+ "Parallellism",
614
+ "Transforming",
615
+ "Dictionaries"
616
+ ]
617
+ },
618
+ {
619
+ "slug":"sgf-parsing",
620
+ "difficulty":1,
621
+ "topics":[
622
+ "Parsing",
623
+ "Transforming"
624
+ ]
625
+ },
626
+ {
627
+ "slug":"acronym",
628
+ "difficulty":1,
629
+ "topics":[
630
+ "Strings",
631
+ "Transforming"
632
+ ]
633
+ },
634
+ {
635
+ "slug":"zipper",
636
+ "difficulty":1,
637
+ "topics":[
638
+ "Generics",
639
+ "Optional values",
640
+ "Trees"
641
+ ]
642
+ },
643
+ {
644
+ "slug":"forth",
645
+ "difficulty":1,
646
+ "topics":[
647
+ "Strings",
648
+ "Mathematics",
649
+ "Parsing"
650
+ ]
651
+ },
652
+ {
653
+ "slug":"lens-person",
654
+ "difficulty":1,
655
+ "topics":[
664
656
 
665
- ]
666
- }
657
+ ]
658
+ },
659
+ {
660
+ "slug":"bowling",
661
+ "difficulty":6,
662
+ "topics":[
663
+ "Algorithms",
664
+ "Control-flow (if-else statements)",
665
+ "Lists"
666
+ ]
667
+ }
668
+ ],
669
+ "deprecated":[
670
+ "binary",
671
+ "hexadecimal",
672
+ "octal",
673
+ "trinary"
674
+ ],
675
+ "ignored":[
676
+ "docs",
677
+ "img",
678
+ "project",
679
+ "target",
680
+ "testgen"
681
+ ],
682
+ "foregone":[
683
+
684
+ ]
685
+ }