trackler 2.2.1.6 → 2.2.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/README.md +27 -0
  4. data/tracks/coffeescript/config.json +1 -0
  5. data/tracks/coldfusion/config.json +1 -1
  6. data/tracks/crystal/README.md +27 -7
  7. data/tracks/crystal/config/maintainers.json +25 -0
  8. data/tracks/crystal/generator/spec/remote_data_file_spec.cr +1 -1
  9. data/tracks/crystal/generator/src/exercise_generator.cr +1 -1
  10. data/tracks/crystal/generator/src/remote_data_file.cr +2 -2
  11. data/tracks/csharp/config.json +1 -2
  12. data/tracks/csharp/config/maintainers.json +55 -0
  13. data/tracks/csharp/docs/EXERCISE_README_INSERT.md +1 -1
  14. data/tracks/csharp/exercises/accumulate/README.md +1 -1
  15. data/tracks/csharp/exercises/acronym/README.md +1 -1
  16. data/tracks/csharp/exercises/all-your-base/README.md +1 -1
  17. data/tracks/csharp/exercises/allergies/README.md +1 -1
  18. data/tracks/csharp/exercises/alphametics/README.md +1 -1
  19. data/tracks/csharp/exercises/anagram/README.md +1 -1
  20. data/tracks/csharp/exercises/atbash-cipher/README.md +1 -1
  21. data/tracks/csharp/exercises/bank-account/README.md +1 -1
  22. data/tracks/csharp/exercises/beer-song/README.md +1 -1
  23. data/tracks/csharp/exercises/binary-search-tree/README.md +1 -1
  24. data/tracks/csharp/exercises/binary-search/README.md +1 -1
  25. data/tracks/csharp/exercises/bob/README.md +1 -1
  26. data/tracks/csharp/exercises/book-store/README.md +1 -1
  27. data/tracks/csharp/exercises/bowling/README.md +1 -1
  28. data/tracks/csharp/exercises/bracket-push/README.md +1 -1
  29. data/tracks/csharp/exercises/change/README.md +1 -1
  30. data/tracks/csharp/exercises/circular-buffer/README.md +1 -1
  31. data/tracks/csharp/exercises/clock/README.md +1 -1
  32. data/tracks/csharp/exercises/connect/README.md +1 -1
  33. data/tracks/csharp/exercises/crypto-square/README.md +1 -1
  34. data/tracks/csharp/exercises/custom-set/README.md +1 -1
  35. data/tracks/csharp/exercises/diamond/README.md +1 -1
  36. data/tracks/csharp/exercises/difference-of-squares/README.md +1 -1
  37. data/tracks/csharp/exercises/diffie-hellman/README.md +1 -1
  38. data/tracks/csharp/exercises/dominoes/README.md +1 -1
  39. data/tracks/csharp/exercises/dot-dsl/README.md +1 -1
  40. data/tracks/csharp/exercises/error-handling/README.md +1 -1
  41. data/tracks/csharp/exercises/etl/README.md +1 -1
  42. data/tracks/csharp/exercises/flatten-array/README.md +1 -1
  43. data/tracks/csharp/exercises/food-chain/README.md +1 -1
  44. data/tracks/csharp/exercises/forth/README.md +1 -1
  45. data/tracks/csharp/exercises/gigasecond/README.md +1 -1
  46. data/tracks/csharp/exercises/go-counting/README.md +1 -1
  47. data/tracks/csharp/exercises/grade-school/README.md +1 -1
  48. data/tracks/csharp/exercises/grains/README.md +1 -1
  49. data/tracks/csharp/exercises/grep/README.md +1 -1
  50. data/tracks/csharp/exercises/hamming/README.md +1 -1
  51. data/tracks/csharp/exercises/hangman/README.md +1 -1
  52. data/tracks/csharp/exercises/hello-world/README.md +1 -1
  53. data/tracks/csharp/exercises/house/README.md +1 -1
  54. data/tracks/csharp/exercises/isogram/README.md +1 -1
  55. data/tracks/csharp/exercises/kindergarten-garden/README.md +1 -1
  56. data/tracks/csharp/exercises/largest-series-product/README.md +1 -1
  57. data/tracks/csharp/exercises/leap/README.md +1 -1
  58. data/tracks/csharp/exercises/ledger/README.md +1 -1
  59. data/tracks/csharp/exercises/linked-list/README.md +1 -1
  60. data/tracks/csharp/exercises/list-ops/README.md +1 -1
  61. data/tracks/csharp/exercises/luhn/README.md +1 -1
  62. data/tracks/csharp/exercises/markdown/README.md +1 -1
  63. data/tracks/csharp/exercises/matrix/README.md +1 -1
  64. data/tracks/csharp/exercises/meetup/README.md +1 -1
  65. data/tracks/csharp/exercises/minesweeper/README.md +1 -1
  66. data/tracks/csharp/exercises/nth-prime/README.md +1 -1
  67. data/tracks/csharp/exercises/nucleotide-count/README.md +1 -1
  68. data/tracks/csharp/exercises/ocr-numbers/README.md +1 -1
  69. data/tracks/csharp/exercises/palindrome-products/README.md +1 -1
  70. data/tracks/csharp/exercises/pangram/README.md +1 -1
  71. data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -1
  72. data/tracks/csharp/exercises/pascals-triangle/README.md +1 -1
  73. data/tracks/csharp/exercises/perfect-numbers/README.md +1 -1
  74. data/tracks/csharp/exercises/phone-number/README.md +1 -1
  75. data/tracks/csharp/exercises/pig-latin/README.md +1 -1
  76. data/tracks/csharp/exercises/poker/README.md +1 -1
  77. data/tracks/csharp/exercises/pov/README.md +1 -1
  78. data/tracks/csharp/exercises/prime-factors/README.md +1 -1
  79. data/tracks/csharp/exercises/protein-translation/README.md +1 -1
  80. data/tracks/csharp/exercises/proverb/README.md +1 -1
  81. data/tracks/csharp/exercises/pythagorean-triplet/README.md +1 -1
  82. data/tracks/csharp/exercises/queen-attack/README.md +1 -1
  83. data/tracks/csharp/exercises/rail-fence-cipher/README.md +1 -1
  84. data/tracks/csharp/exercises/raindrops/README.md +1 -1
  85. data/tracks/csharp/exercises/react/README.md +1 -1
  86. data/tracks/csharp/exercises/rectangles/README.md +1 -1
  87. data/tracks/csharp/exercises/rna-transcription/README.md +1 -1
  88. data/tracks/csharp/exercises/robot-name/README.md +1 -1
  89. data/tracks/csharp/exercises/robot-simulator/README.md +1 -1
  90. data/tracks/csharp/exercises/roman-numerals/README.md +1 -1
  91. data/tracks/csharp/exercises/rotational-cipher/README.md +1 -1
  92. data/tracks/csharp/exercises/run-length-encoding/README.md +1 -1
  93. data/tracks/csharp/exercises/saddle-points/README.md +1 -1
  94. data/tracks/csharp/exercises/say/README.md +1 -1
  95. data/tracks/csharp/exercises/scale-generator/README.md +1 -1
  96. data/tracks/csharp/exercises/scrabble-score/README.md +1 -1
  97. data/tracks/csharp/exercises/secret-handshake/README.md +1 -1
  98. data/tracks/csharp/exercises/series/README.md +1 -1
  99. data/tracks/csharp/exercises/sgf-parsing/README.md +1 -1
  100. data/tracks/csharp/exercises/sieve/README.md +1 -1
  101. data/tracks/csharp/exercises/simple-cipher/README.md +1 -1
  102. data/tracks/csharp/exercises/simple-linked-list/README.md +1 -1
  103. data/tracks/csharp/exercises/space-age/README.md +1 -1
  104. data/tracks/csharp/exercises/strain/README.md +1 -1
  105. data/tracks/csharp/exercises/sublist/README.md +1 -1
  106. data/tracks/csharp/exercises/sum-of-multiples/README.md +1 -1
  107. data/tracks/csharp/exercises/tournament/README.md +1 -1
  108. data/tracks/csharp/exercises/transpose/README.md +1 -1
  109. data/tracks/csharp/exercises/tree-building/README.md +1 -1
  110. data/tracks/csharp/exercises/triangle/README.md +1 -1
  111. data/tracks/csharp/exercises/twelve-days/README.md +1 -1
  112. data/tracks/csharp/exercises/two-bucket/README.md +1 -1
  113. data/tracks/csharp/exercises/variable-length-quantity/README.md +1 -1
  114. data/tracks/csharp/exercises/word-count/README.md +1 -1
  115. data/tracks/csharp/exercises/word-search/README.md +1 -1
  116. data/tracks/csharp/exercises/wordy/README.md +1 -1
  117. data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -1
  118. data/tracks/csharp/exercises/zipper/README.md +1 -1
  119. data/tracks/d/config.json +1 -0
  120. data/tracks/dart/config/maintainers.json +15 -0
  121. data/tracks/ecmascript/config.json +76 -193
  122. data/tracks/ecmascript/exercises/twelve-days/README.md +66 -0
  123. data/tracks/ecmascript/exercises/twelve-days/example.js +53 -0
  124. data/tracks/ecmascript/exercises/twelve-days/package.json +68 -0
  125. data/tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js +106 -0
  126. data/tracks/factor/config.json +1 -1
  127. data/tracks/fsharp/config/maintainers.json +35 -0
  128. data/tracks/go/config.json +82 -38
  129. data/tracks/go/config/maintainers.json +13 -22
  130. data/tracks/go/exercises/bowling/cases_test.go +11 -11
  131. data/tracks/go/exercises/forth/cases_test.go +7 -7
  132. data/tracks/go/exercises/forth/example.go +1 -1
  133. data/tracks/go/exercises/forth/forth_test.go +1 -1
  134. data/tracks/go/exercises/hamming/cases_test.go +7 -7
  135. data/tracks/go/exercises/hamming/hamming.go +1 -1
  136. data/tracks/go/exercises/phone-number/cases_test.go +2 -7
  137. data/tracks/go/exercises/phone-number/example.go +1 -1
  138. data/tracks/go/exercises/phone-number/phone_number_test.go +1 -1
  139. data/tracks/go/exercises/rna-transcription/cases_test.go +7 -7
  140. data/tracks/go/exercises/secret-handshake/cases_test.go +1 -1
  141. data/tracks/groovy/config.json +1 -0
  142. data/tracks/haxe/config.json +1 -1
  143. data/tracks/java/.travis.yml +1 -1
  144. data/tracks/java/config/maintainers.json +20 -0
  145. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +1 -1
  146. data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +1 -1
  147. data/tracks/javascript/config.json +229 -247
  148. data/tracks/kotlin/config/maintainers.json +35 -0
  149. data/tracks/lfe/config/maintainers.json +15 -0
  150. data/tracks/lisp/config/maintainers.json +55 -0
  151. data/tracks/ocaml/config.json +0 -5
  152. data/tracks/ocaml/config/maintainers.json +25 -0
  153. data/tracks/perl5/config/maintainers.json +25 -0
  154. data/tracks/perl6/config/maintainers.json +25 -0
  155. data/tracks/pony/config/maintainers.json +15 -0
  156. data/tracks/pony/exercises/atbash-cipher/example.pony +2 -2
  157. data/tracks/pony/exercises/beer-song/example.pony +1 -1
  158. data/tracks/pony/exercises/bob/example.pony +1 -1
  159. data/tracks/pony/exercises/difference-of-squares/example.pony +1 -1
  160. data/tracks/pony/exercises/hamming/test.pony +12 -12
  161. data/tracks/pony/exercises/pascals-triangle/example.pony +1 -1
  162. data/tracks/pony/exercises/pascals-triangle/test.pony +6 -6
  163. data/tracks/pony/exercises/rna-transcription/test.pony +3 -3
  164. data/tracks/pony/exercises/roman-numerals/test.pony +3 -3
  165. data/tracks/purescript/config/maintainers.json +35 -0
  166. data/tracks/r/config.json +140 -81
  167. data/tracks/r/exercises/collatz-conjecture/README.md +43 -0
  168. data/tracks/r/exercises/collatz-conjecture/collatz-conjecture.R +3 -0
  169. data/tracks/r/exercises/collatz-conjecture/example.R +13 -0
  170. data/tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R +28 -0
  171. data/tracks/r/exercises/nucleotide-count/README.md +43 -0
  172. data/tracks/r/exercises/nucleotide-count/example.R +17 -0
  173. data/tracks/r/exercises/nucleotide-count/nucleotide-count.R +3 -0
  174. data/tracks/r/exercises/nucleotide-count/test_nucleotide-count.R +51 -0
  175. data/tracks/r/exercises/pangram/README.md +25 -0
  176. data/tracks/r/exercises/pangram/example.R +14 -0
  177. data/tracks/r/exercises/pangram/pangram.R +3 -0
  178. data/tracks/r/exercises/pangram/test_pangram.R +42 -0
  179. data/tracks/r/exercises/triangle/.meta/hints.md +4 -0
  180. data/tracks/r/exercises/triangle/README.md +41 -0
  181. data/tracks/r/exercises/triangle/example.R +23 -0
  182. data/tracks/r/exercises/triangle/test_triangle.R +72 -0
  183. data/tracks/r/exercises/triangle/triangle.R +3 -0
  184. data/tracks/rust/config.json +32 -1
  185. data/tracks/rust/config/maintainers.json +1 -6
  186. data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
  187. data/tracks/rust/exercises/beer-song/example.rs +1 -1
  188. data/tracks/rust/exercises/circular-buffer/example.rs +8 -10
  189. data/tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs +2 -2
  190. data/tracks/rust/exercises/clock/.meta/hints.md +10 -0
  191. data/tracks/rust/exercises/clock/Cargo.lock +4 -0
  192. data/tracks/rust/exercises/clock/Cargo.toml +6 -0
  193. data/tracks/rust/exercises/clock/README.md +57 -0
  194. data/tracks/rust/exercises/clock/example.rs +32 -0
  195. data/tracks/{ocaml/exercises/point-mutations/example.ml → rust/exercises/clock/src/lib.rs} +0 -0
  196. data/tracks/rust/exercises/clock/tests/clock.rs +331 -0
  197. data/tracks/rust/exercises/custom-set/tests/custom-set.rs +3 -3
  198. data/tracks/rust/exercises/dominoes/example.rs +1 -1
  199. data/tracks/rust/exercises/grade-school/example.rs +1 -1
  200. data/tracks/rust/exercises/hamming/example.rs +1 -1
  201. data/tracks/rust/exercises/nth-prime/Cargo.lock +4 -0
  202. data/tracks/rust/exercises/nth-prime/Cargo.toml +6 -0
  203. data/tracks/rust/exercises/nth-prime/README.md +47 -0
  204. data/tracks/rust/exercises/nth-prime/example.rs +28 -0
  205. data/tracks/rust/exercises/nth-prime/src/lib.rs +0 -0
  206. data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +30 -0
  207. data/tracks/rust/exercises/parallel-letter-frequency/example.rs +1 -1
  208. data/tracks/rust/exercises/phone-number/example.rs +1 -1
  209. data/tracks/rust/exercises/pythagorean-triplet/Cargo.lock +4 -0
  210. data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +6 -0
  211. data/tracks/rust/exercises/pythagorean-triplet/README.md +56 -0
  212. data/tracks/rust/exercises/pythagorean-triplet/example.rs +11 -0
  213. data/tracks/rust/exercises/pythagorean-triplet/src/lib.rs +0 -0
  214. data/tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs +6 -0
  215. data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +1 -1
  216. data/tracks/rust/exercises/robot-name/tests/robot-name.rs +2 -2
  217. data/tracks/rust/exercises/say/example.rs +4 -4
  218. data/tracks/rust/exercises/say/tests/say.rs +4 -4
  219. data/tracks/rust/exercises/tournament/example.rs +2 -2
  220. data/tracks/scala/config/maintainers.json +10 -6
  221. data/tracks/scala/exercises/bracket-push/example.scala +2 -2
  222. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +74 -0
  223. data/tracks/scala/exercises/crypto-square/example.scala +9 -9
  224. data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +33 -41
  225. data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +9 -38
  226. data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +17 -0
  227. data/tracks/sml/config.json +1 -1
  228. data/tracks/swift/config/maintainers.json +35 -0
  229. data/tracks/swift/docs/ABOUT.md +15 -5
  230. data/tracks/vimscript/config/maintainers.json +35 -0
  231. metadata +58 -8
  232. data/tracks/ocaml/exercises/point-mutations/Makefile +0 -8
  233. data/tracks/ocaml/exercises/point-mutations/README.md +0 -81
  234. data/tracks/ocaml/exercises/point-mutations/dna.mli +0 -6
  235. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala +0 -68
  236. data/tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala +0 -11
@@ -0,0 +1,35 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "michel-slm",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "sdavids13",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ },
23
+ {
24
+ "github_username": "stkent",
25
+ "show_on_website": false,
26
+ "alumnus": false,
27
+ "name": null,
28
+ "bio": null,
29
+ "link_text": null,
30
+ "link_url": null,
31
+ "avatar_url": null
32
+ }
33
+ ],
34
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
35
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "yurrriq",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "verdammelt",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "oubiwann",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ },
23
+ {
24
+ "github_username": "arguello",
25
+ "show_on_website": false,
26
+ "alumnus": false,
27
+ "name": null,
28
+ "bio": null,
29
+ "link_text": null,
30
+ "link_url": null,
31
+ "avatar_url": null
32
+ },
33
+ {
34
+ "github_username": "yurrriq",
35
+ "show_on_website": false,
36
+ "alumnus": false,
37
+ "name": null,
38
+ "bio": null,
39
+ "link_text": null,
40
+ "link_url": null,
41
+ "avatar_url": null
42
+ },
43
+ {
44
+ "github_username": "wobh",
45
+ "show_on_website": false,
46
+ "alumnus": false,
47
+ "name": null,
48
+ "bio": null,
49
+ "link_text": null,
50
+ "link_url": null,
51
+ "avatar_url": null
52
+ }
53
+ ],
54
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
55
+ }
@@ -418,11 +418,6 @@
418
418
  "uuid": "d0c937ef-3c7b-40be-891d-3024129b443f",
419
419
  "slug": "hexadecimal",
420
420
  "deprecated": true
421
- },
422
- {
423
- "uuid": "1a78aecb-521a-4bcf-a618-fd50a3d4fdc7",
424
- "slug": "point-mutations",
425
- "deprecated": true
426
421
  }
427
422
  ],
428
423
  "foregone": [
@@ -0,0 +1,25 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "dvberkel",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "stevejb71",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ }
23
+ ],
24
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "kotp",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "mienaikage",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ }
23
+ ],
24
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "kotp",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "mienaikage",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ }
23
+ ],
24
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
25
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "Theodus",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -13,7 +13,7 @@ primitive Atbash
13
13
 
14
14
  fun _group(groups: Array[String ref], c: U8): Array[String ref]^ =>
15
15
  let last_idx = groups.size() - 1
16
- let last = try groups(last_idx) else String end
16
+ let last = try groups(last_idx)? else String end
17
17
  if last.size() < 5 then
18
18
  last.push(c)
19
19
  else
@@ -28,7 +28,7 @@ primitive Atbash
28
28
  Iter[U8](input.lower().values())
29
29
  .filter(this~_transposable())
30
30
  .map[U8]({(c: U8): U8 => Atbash._transpose(c)})
31
- .fold[Array[String ref]](this~_group(), [String(6)]))
31
+ .fold[Array[String ref]](this~_group(), [String(6)])?)
32
32
  else
33
33
  recover String end
34
34
  end
@@ -38,7 +38,7 @@ primitive BeerSong
38
38
  Iter[USize](Reverse(start, stop))
39
39
  .map[String]({(n: USize): String => BeerSong.verse(n) + "\n"})
40
40
  .collect(Array[String](start - stop)))
41
- .>pop()
41
+ .>pop()?
42
42
  else
43
43
  recover String end
44
44
  end
@@ -27,7 +27,7 @@ primitive Bob
27
27
 
28
28
  fun _question(phrase: String): Bool =>
29
29
  try
30
- Iter[U8](phrase.values()).last() == '?'
30
+ Iter[U8](phrase.values()).last()? == '?'
31
31
  else
32
32
  false
33
33
  end
@@ -10,7 +10,7 @@ primitive Squares
10
10
  try
11
11
  Iter[USize](Range(0, n + 1))
12
12
  .map[USize]({(x: USize): USize => x * x})
13
- .fold[USize]({(acc: USize, x: USize): USize => acc + x}, 0)
13
+ .fold[USize]({(acc: USize, x: USize): USize => acc + x}, 0)?
14
14
  else
15
15
  0
16
16
  end
@@ -11,16 +11,16 @@ class iso _TestHammingDistance is UnitTest
11
11
  fun name(): String => "hamming/HammingDistance"
12
12
 
13
13
  fun apply(h: TestHelper) ? =>
14
- h.assert_eq[USize](0, HammingDistance("A", "A"))
15
- h.assert_eq[USize](0, HammingDistance("GGACTGA", "GGACTGA"))
16
- h.assert_eq[USize](1, HammingDistance("A", "G"))
17
- h.assert_eq[USize](2, HammingDistance("AG", "CT"))
18
- h.assert_eq[USize](1, HammingDistance("AT", "CT"))
19
- h.assert_eq[USize](1, HammingDistance("GGACG", "GGTCG"))
20
- h.assert_eq[USize](2, HammingDistance("ACCAGGG", "ACTATGG"))
21
- h.assert_eq[USize](1, HammingDistance("AGG", "AGA"))
22
- h.assert_eq[USize](4, HammingDistance("GATACA", "GCATAA"))
23
- h.assert_eq[USize](9, HammingDistance("GGACGGATTCTG", "AGGACGGATTCT"))
14
+ h.assert_eq[USize](0, HammingDistance("A", "A")?)
15
+ h.assert_eq[USize](0, HammingDistance("GGACTGA", "GGACTGA")?)
16
+ h.assert_eq[USize](1, HammingDistance("A", "G")?)
17
+ h.assert_eq[USize](2, HammingDistance("AG", "CT")?)
18
+ h.assert_eq[USize](1, HammingDistance("AT", "CT")?)
19
+ h.assert_eq[USize](1, HammingDistance("GGACG", "GGTCG")?)
20
+ h.assert_eq[USize](2, HammingDistance("ACCAGGG", "ACTATGG")?)
21
+ h.assert_eq[USize](1, HammingDistance("AGG", "AGA")?)
22
+ h.assert_eq[USize](4, HammingDistance("GATACA", "GCATAA")?)
23
+ h.assert_eq[USize](9, HammingDistance("GGACGGATTCTG", "AGGACGGATTCT")?)
24
24
 
25
- h.assert_error({()? => HammingDistance("GAT", "GA")})
26
- h.assert_error({()? => HammingDistance("GA", "GAC")})
25
+ h.assert_error({()? => HammingDistance("GAT", "GA")?})
26
+ h.assert_error({()? => HammingDistance("GA", "GAC")?})
@@ -11,7 +11,7 @@ primitive PascalsTriangle
11
11
  let r = Array[USize](n).>push(1)
12
12
  for i in Range(1, n + 1) do
13
13
  try
14
- let last = r(i - 1)
14
+ let last = r(i - 1)?
15
15
  r.push((last * ((n + 1) - i)) / i)
16
16
  end
17
17
  end
@@ -12,11 +12,11 @@ class iso _TestPascalsTriangle is UnitTest
12
12
  fun name(): String => "pascals-triangle"
13
13
 
14
14
  fun apply(h: TestHelper) ? =>
15
- assert_rows_eq(h, 0, Array[Array[USize]])
16
- assert_rows_eq(h, 1, [[1]])
17
- assert_rows_eq(h, 2, [[1]; [1; 1]])
18
- assert_rows_eq(h, 3, [[1]; [1; 1]; [1; 2; 1]])
19
- assert_rows_eq(h, 4, [[1]; [1; 1]; [1; 2; 1]; [1; 3; 3; 1]])
15
+ assert_rows_eq(h, 0, Array[Array[USize]])?
16
+ assert_rows_eq(h, 1, [[1]])?
17
+ assert_rows_eq(h, 2, [[1]; [1; 1]])?
18
+ assert_rows_eq(h, 3, [[1]; [1; 1]; [1; 2; 1]])?
19
+ assert_rows_eq(h, 4, [[1]; [1; 1]; [1; 2; 1]; [1; 3; 3; 1]])?
20
20
 
21
21
  fun assert_rows_eq(
22
22
  h: TestHelper,
@@ -27,5 +27,5 @@ class iso _TestPascalsTriangle is UnitTest
27
27
  let t = PascalsTriangle.rows(count)
28
28
  h.assert_eq[USize](t.size(), expected.size())
29
29
  for i in Range(0, expected.size()) do
30
- h.assert_array_eq[USize](expected(i), t(i))
30
+ h.assert_array_eq[USize](expected(i)?, t(i)?)
31
31
  end
@@ -25,8 +25,8 @@ class iso _TestRNATrancription is UnitTest
25
25
  ]
26
26
 
27
27
  for (input, expected) in tests.values() do
28
- h.assert_eq[String](ToRNA(input), expected)
28
+ h.assert_eq[String](ToRNA(input)?, expected)
29
29
  end
30
30
 
31
- h.assert_error({() ? => ToRNA("U")})
32
- h.assert_error({() ? => ToRNA("ACGTXXXCTTAA")})
31
+ h.assert_error({() ? => ToRNA("U")?})
32
+ h.assert_error({() ? => ToRNA("ACGTXXXCTTAA")?})
@@ -35,11 +35,11 @@ class iso _TestRomanNumerals is UnitTest
35
35
 
36
36
  for test in tests.values() do
37
37
  try
38
- h.assert_eq[String](RomanNumerals(test._1), test._2)
38
+ h.assert_eq[String](RomanNumerals(test._1)?, test._2)
39
39
  else
40
40
  h.fail()
41
41
  end
42
42
  end
43
43
 
44
- h.assert_error({() ? => RomanNumerals(-1)})
45
- h.assert_error({() ? => RomanNumerals(4000)})
44
+ h.assert_error({() ? => RomanNumerals(-1)?})
45
+ h.assert_error({() ? => RomanNumerals(4000)?})
@@ -0,0 +1,35 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "paf31",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "joshburgess",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ },
23
+ {
24
+ "github_username": "lpil",
25
+ "show_on_website": false,
26
+ "alumnus": false,
27
+ "name": null,
28
+ "bio": null,
29
+ "link_text": null,
30
+ "link_url": null,
31
+ "avatar_url": null
32
+ }
33
+ ],
34
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
35
+ }
data/tracks/r/config.json CHANGED
@@ -9,51 +9,43 @@
9
9
  {
10
10
  "uuid": "285404a4-d8f8-469d-b183-920b08ba2430",
11
11
  "slug": "hello-world",
12
- "core": false,
13
- "unlocked_by": null,
12
+ "core": true,
14
13
  "difficulty": 1,
15
14
  "topics": [
16
-
15
+ "text_formatting",
16
+ "optional_values"
17
17
  ]
18
18
  },
19
19
  {
20
20
  "uuid": "4be11d9f-db6a-4edd-af35-7d33d2dc9c0f",
21
21
  "slug": "leap",
22
- "core": false,
23
- "unlocked_by": null,
22
+ "core": true,
24
23
  "difficulty": 1,
25
24
  "topics": [
26
-
27
- ]
28
- },
29
- {
30
- "uuid": "da01ce65-8c7d-4646-ace4-c067d92f656b",
31
- "slug": "bob",
32
- "core": false,
33
- "unlocked_by": null,
34
- "difficulty": 1,
35
- "topics": [
36
-
25
+ "booleans",
26
+ "integers",
27
+ "logic"
37
28
  ]
38
29
  },
39
30
  {
40
31
  "uuid": "dcc7171a-6b7d-4749-a300-a7270a095486",
41
32
  "slug": "hamming",
42
- "core": false,
43
- "unlocked_by": null,
33
+ "core": true,
44
34
  "difficulty": 1,
45
35
  "topics": [
46
-
36
+ "strings",
37
+ "filtering"
47
38
  ]
48
39
  },
49
40
  {
50
41
  "uuid": "12e17ede-ff59-45d1-8c66-b07b7ede5702",
51
42
  "slug": "rna-transcription",
52
43
  "core": false,
53
- "unlocked_by": null,
44
+ "unlocked_by": "hamming",
54
45
  "difficulty": 1,
55
46
  "topics": [
56
-
47
+ "strings",
48
+ "transforming"
57
49
  ]
58
50
  },
59
51
  {
@@ -63,17 +55,18 @@
63
55
  "unlocked_by": null,
64
56
  "difficulty": 1,
65
57
  "topics": [
66
-
58
+ "integers",
59
+ "mathematics"
67
60
  ]
68
61
  },
69
62
  {
70
63
  "uuid": "955604ef-266f-42c9-abde-ce0fdc2d33ad",
71
64
  "slug": "raindrops",
72
- "core": false,
73
- "unlocked_by": null,
65
+ "core": true,
74
66
  "difficulty": 1,
75
67
  "topics": [
76
-
68
+ "text_formatting",
69
+ "filtering"
77
70
  ]
78
71
  },
79
72
  {
@@ -83,17 +76,28 @@
83
76
  "unlocked_by": null,
84
77
  "difficulty": 1,
85
78
  "topics": [
86
-
79
+ "integers",
80
+ "mathematics"
81
+ ]
82
+ },
83
+ {
84
+ "uuid": "da01ce65-8c7d-4646-ace4-c067d92f656b",
85
+ "slug": "bob",
86
+ "core": true,
87
+ "difficulty": 2,
88
+ "topics": [
89
+ "control_flow_conditionals",
90
+ "strings"
87
91
  ]
88
92
  },
89
93
  {
90
94
  "uuid": "105a3de5-3dea-4880-927a-6eed89a97a07",
91
95
  "slug": "anagram",
92
- "core": false,
93
- "unlocked_by": null,
94
- "difficulty": 1,
96
+ "core": true,
97
+ "difficulty": 3,
95
98
  "topics": [
96
-
99
+ "strings",
100
+ "filtering"
97
101
  ]
98
102
  },
99
103
  {
@@ -103,157 +107,212 @@
103
107
  "unlocked_by": null,
104
108
  "difficulty": 1,
105
109
  "topics": [
106
-
110
+ "floating_point_numbers"
107
111
  ]
108
112
  },
109
113
  {
110
114
  "uuid": "581b968c-f78f-4b60-9eb0-8c73eeeb96af",
111
115
  "slug": "sum-of-multiples",
112
- "core": false,
113
- "unlocked_by": null,
114
- "difficulty": 1,
116
+ "core": true,
117
+ "difficulty": 2,
115
118
  "topics": [
116
-
119
+ "lists",
120
+ "mathematics"
117
121
  ]
118
122
  },
119
123
  {
120
124
  "uuid": "a7cbf043-504b-4fc8-b7fb-33a88ac7962d",
121
125
  "slug": "word-count",
122
- "core": false,
123
- "unlocked_by": null,
124
- "difficulty": 1,
126
+ "core": true,
127
+ "difficulty": 2,
125
128
  "topics": [
126
-
129
+ "strings",
130
+ "transforming"
127
131
  ]
128
132
  },
129
133
  {
130
134
  "uuid": "e5166378-e3fc-4393-b4f8-4c36da444c56",
131
135
  "slug": "phone-number",
132
- "core": false,
133
- "unlocked_by": null,
134
- "difficulty": 1,
136
+ "core": true,
137
+ "difficulty": 2,
135
138
  "topics": [
136
-
139
+ "parsing",
140
+ "transforming"
137
141
  ]
138
142
  },
139
143
  {
140
144
  "uuid": "8bde91c5-2fe7-4f8d-91ec-ed05284b9a49",
141
145
  "slug": "rotational-cipher",
142
- "core": false,
143
- "unlocked_by": null,
144
- "difficulty": 1,
146
+ "core": true,
147
+ "difficulty": 3,
145
148
  "topics": [
146
-
149
+ "strings"
147
150
  ]
148
151
  },
149
152
  {
150
153
  "uuid": "c82dfe0c-77c9-4a3b-8110-962a9547ac64",
151
154
  "slug": "scrabble-score",
152
155
  "core": false,
153
- "unlocked_by": null,
154
- "difficulty": 1,
156
+ "unlocked_by": "word-count",
157
+ "difficulty": 2,
155
158
  "topics": [
156
-
159
+ "strings",
160
+ "transforming"
157
161
  ]
158
162
  },
159
163
  {
160
164
  "uuid": "4ea6d28b-f2bd-4785-ad9f-8eed6a9c67eb",
161
165
  "slug": "isogram",
162
166
  "core": false,
163
- "unlocked_by": null,
164
- "difficulty": 1,
167
+ "unlocked_by": "anagram",
168
+ "difficulty": 2,
165
169
  "topics": [
166
-
170
+ "strings",
171
+ "filtering"
167
172
  ]
168
173
  },
169
174
  {
170
175
  "uuid": "3fd2d6dd-6d4d-4b7f-9f1e-0de11899dcb5",
171
176
  "slug": "beer-song",
172
177
  "core": false,
173
- "unlocked_by": null,
174
- "difficulty": 1,
178
+ "unlocked_by": "bob",
179
+ "difficulty": 3,
175
180
  "topics": [
176
-
181
+ "control_flow_conditionals",
182
+ "text_formatting"
177
183
  ]
178
184
  },
179
185
  {
180
186
  "uuid": "cef7ba44-5b9a-4fc3-b853-9b598e743ba8",
181
187
  "slug": "perfect-numbers",
182
188
  "core": false,
183
- "unlocked_by": null,
184
- "difficulty": 1,
189
+ "unlocked_by": "leap",
190
+ "difficulty": 2,
185
191
  "topics": [
186
-
192
+ "integers",
193
+ "control_flow_conditionals"
187
194
  ]
188
195
  },
189
196
  {
190
197
  "uuid": "ee849e23-d709-4e4a-ab89-07a87e13e4fb",
191
198
  "slug": "prime-factors",
192
199
  "core": false,
193
- "unlocked_by": null,
194
- "difficulty": 1,
200
+ "unlocked_by": "sum-of-multiples",
201
+ "difficulty": 3,
195
202
  "topics": [
196
-
203
+ "integers",
204
+ "mathematics"
197
205
  ]
198
206
  },
199
207
  {
200
208
  "uuid": "dabc8218-8ab8-4918-85d3-0afd5b6791c6",
201
209
  "slug": "sieve",
202
210
  "core": false,
203
- "unlocked_by": null,
204
- "difficulty": 1,
211
+ "unlocked_by": "sum-of-multiples",
212
+ "difficulty": 3,
205
213
  "topics": [
206
-
214
+ "filtering",
215
+ "mathematics"
207
216
  ]
208
217
  },
209
218
  {
210
219
  "uuid": "a1b4bde3-2ee7-42dd-85c5-4303ae546d15",
211
220
  "slug": "largest-series-product",
212
- "core": false,
213
- "unlocked_by": null,
214
- "difficulty": 1,
221
+ "core": true,
222
+ "difficulty": 3,
215
223
  "topics": [
216
-
224
+ "strings",
225
+ "integers",
226
+ "transforming"
217
227
  ]
218
228
  },
219
229
  {
220
230
  "uuid": "33157f48-a2d9-4fae-a9c8-5df547473f1a",
221
231
  "slug": "luhn",
222
232
  "core": false,
223
- "unlocked_by": null,
224
- "difficulty": 1,
233
+ "unlocked_by": "phone-number",
234
+ "difficulty": 3,
225
235
  "topics": [
226
-
236
+ "strings",
237
+ "algorithms",
238
+ "transforming"
227
239
  ]
228
240
  },
229
241
  {
230
242
  "uuid": "eacc30e1-d02c-4ccb-b1f7-3d4f16358726",
231
243
  "slug": "secret-handshake",
232
244
  "core": false,
233
- "unlocked_by": null,
234
- "difficulty": 1,
245
+ "unlocked_by": "raindrops",
246
+ "difficulty": 2,
235
247
  "topics": [
236
-
248
+ "control_flow_conditionals",
249
+ "bitwise_ operations"
237
250
  ]
238
251
  },
239
252
  {
240
253
  "uuid": "f3e93545-7466-4635-b508-7e02517fdf06",
241
254
  "slug": "pascals-triangle",
242
255
  "core": false,
243
- "unlocked_by": null,
244
- "difficulty": 1,
256
+ "unlocked_by": "sum-of-multiples",
257
+ "difficulty": 3,
245
258
  "topics": [
246
-
259
+ "control_flow_conditionals",
260
+ "mathematics"
247
261
  ]
248
262
  },
249
263
  {
250
264
  "uuid": "acf63670-7e56-47c1-9f33-7ec076d5270f",
251
265
  "slug": "tournament",
252
266
  "core": false,
253
- "unlocked_by": null,
254
- "difficulty": 1,
267
+ "unlocked_by": "phone-number",
268
+ "difficulty": 4,
255
269
  "topics": [
256
-
270
+ "text_formatting",
271
+ "parsing"
272
+ ]
273
+ },
274
+ {
275
+ "uuid": "a81a1820-5da7-4e6e-99f2-17d71d37bd99",
276
+ "slug": "nucleotide-count",
277
+ "core": false,
278
+ "unlocked_by": "word-count",
279
+ "difficulty": 2,
280
+ "topics": [
281
+ "lists",
282
+ "transforming"
283
+ ]
284
+ },
285
+ {
286
+ "uuid": "022148a9-0c8f-42f3-8f32-2cc1cb5d7f7e",
287
+ "slug": "pangram",
288
+ "core": false,
289
+ "unlocked_by": "anagram",
290
+ "difficulty": 2,
291
+ "topics": [
292
+ "regular_expressions",
293
+ "strings"
294
+ ]
295
+ },
296
+ {
297
+ "uuid": "d3b2f968-32e2-4df7-a29a-f02ba2c7d581",
298
+ "slug": "triangle",
299
+ "core": false,
300
+ "unlocked_by": "sum-of-multiples",
301
+ "difficulty": 3,
302
+ "topics": [
303
+ "classes",
304
+ "mathematics"
305
+ ]
306
+ },
307
+ {
308
+ "uuid": "4f38e325-587f-4a80-8c8f-6c45ec710e80",
309
+ "slug": "collatz-conjecture",
310
+ "core": false,
311
+ "unlocked_by": "sum-of-multiples",
312
+ "difficulty": 2,
313
+ "topics": [
314
+ "control_flow_conditionals",
315
+ "recursion"
257
316
  ]
258
317
  }
259
318
  ]