trackler 2.2.0.0 → 2.2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/CONTRIBUTING.md +1 -1
  4. data/tracks/bash/.travis.yml +1 -1
  5. data/tracks/bash/config.json +30 -3
  6. data/tracks/c/README.md +1 -1
  7. data/tracks/c/config.json +131 -39
  8. data/tracks/ceylon/README.md +6 -6
  9. data/tracks/ceylon/config.json +21 -3
  10. data/tracks/chapel/.travis.yml +1 -1
  11. data/tracks/clojurescript/.travis.yml +1 -1
  12. data/tracks/clojurescript/README.md +6 -6
  13. data/tracks/clojurescript/exercises/.keep +0 -0
  14. data/tracks/coffeescript/.travis.yml +1 -1
  15. data/tracks/coldfusion/.travis.yml +1 -1
  16. data/tracks/coq/.travis.yml +1 -1
  17. data/tracks/cpp/CMakeLists.txt +1 -0
  18. data/tracks/cpp/README.md +1 -1
  19. data/tracks/cpp/config.json +8 -0
  20. data/tracks/cpp/exercises/atbash-cipher/CMakeLists.txt +52 -0
  21. data/tracks/cpp/exercises/atbash-cipher/atbash_cipher_test.cpp +68 -0
  22. data/tracks/cpp/exercises/atbash-cipher/example.cpp +54 -0
  23. data/tracks/cpp/exercises/atbash-cipher/example.h +13 -0
  24. data/tracks/csharp/config.json +315 -6
  25. data/tracks/d/.travis.yml +1 -1
  26. data/tracks/dart/README.md +2 -2
  27. data/tracks/dart/config.json +21 -3
  28. data/tracks/delphi/README.md +1 -1
  29. data/tracks/delphi/config.json +83 -1
  30. data/tracks/ecmascript/config.json +10 -0
  31. data/tracks/ecmascript/exercises/accumulate/accumulate.spec.js +3 -9
  32. data/tracks/ecmascript/exercises/acronym/acronym.spec.js +2 -2
  33. data/tracks/ecmascript/exercises/all-your-base/all-your-base.spec.js +131 -133
  34. data/tracks/ecmascript/exercises/all-your-base/example.js +1 -3
  35. data/tracks/ecmascript/exercises/allergies/allergies.spec.js +8 -10
  36. data/tracks/ecmascript/exercises/allergies/example.js +3 -5
  37. data/tracks/ecmascript/exercises/alphametics/alphametics.spec.js +61 -63
  38. data/tracks/ecmascript/exercises/alphametics/example.js +99 -99
  39. data/tracks/ecmascript/exercises/anagram/anagram.spec.js +35 -37
  40. data/tracks/ecmascript/exercises/anagram/example.js +1 -3
  41. data/tracks/ecmascript/exercises/atbash-cipher/atbash-cipher.spec.js +1 -3
  42. data/tracks/ecmascript/exercises/atbash-cipher/example.js +3 -3
  43. data/tracks/ecmascript/exercises/beer-song/beer-song.spec.js +0 -2
  44. data/tracks/ecmascript/exercises/beer-song/example.js +9 -9
  45. data/tracks/ecmascript/exercises/binary/binary.spec.js +1 -2
  46. data/tracks/ecmascript/exercises/binary/example.js +3 -3
  47. data/tracks/ecmascript/exercises/binary-search/binary-search.spec.js +1 -3
  48. data/tracks/ecmascript/exercises/binary-search-tree/binary-search-tree.spec.js +13 -15
  49. data/tracks/ecmascript/exercises/binary-search-tree/example.js +2 -2
  50. data/tracks/ecmascript/exercises/bob/bob.spec.js +1 -3
  51. data/tracks/ecmascript/exercises/bob/example.js +3 -3
  52. data/tracks/ecmascript/exercises/bracket-push/example.js +2 -2
  53. data/tracks/ecmascript/exercises/circular-buffer/circular-buffer.spec.js +10 -12
  54. data/tracks/ecmascript/exercises/circular-buffer/example.js +12 -11
  55. data/tracks/ecmascript/exercises/clock/clock.spec.js +0 -8
  56. data/tracks/ecmascript/exercises/clock/example.js +11 -11
  57. data/tracks/ecmascript/exercises/connect/connect.spec.js +75 -77
  58. data/tracks/ecmascript/exercises/connect/example.js +27 -29
  59. data/tracks/ecmascript/exercises/crypto-square/crypto-square.spec.js +11 -11
  60. data/tracks/ecmascript/exercises/crypto-square/example.js +11 -10
  61. data/tracks/ecmascript/exercises/custom-set/custom-set.spec.js +2 -4
  62. data/tracks/ecmascript/exercises/custom-set/example.js +1 -1
  63. data/tracks/ecmascript/exercises/diamond/diamond.spec.js +20 -21
  64. data/tracks/ecmascript/exercises/diamond/example.js +12 -13
  65. data/tracks/ecmascript/exercises/difference-of-squares/difference-of-squares.spec.js +0 -5
  66. data/tracks/ecmascript/exercises/diffie-hellman/diffie-hellman.spec.js +7 -28
  67. data/tracks/ecmascript/exercises/etl/etl.spec.js +36 -18
  68. data/tracks/ecmascript/exercises/etl/example.js +3 -3
  69. data/tracks/ecmascript/exercises/flatten-array/example.js +1 -1
  70. data/tracks/ecmascript/exercises/flatten-array/flatten-array.spec.js +2 -3
  71. data/tracks/ecmascript/exercises/food-chain/example.js +12 -12
  72. data/tracks/ecmascript/exercises/food-chain/food-chain.spec.js +0 -1
  73. data/tracks/ecmascript/exercises/gigasecond/example.js +1 -1
  74. data/tracks/ecmascript/exercises/gigasecond/gigasecond.spec.js +0 -1
  75. data/tracks/ecmascript/exercises/grade-school/grade-school.spec.js +18 -19
  76. data/tracks/ecmascript/exercises/grains/grains.spec.js +0 -1
  77. data/tracks/ecmascript/exercises/hamming/example.js +3 -3
  78. data/tracks/ecmascript/exercises/hamming/hamming.spec.js +5 -6
  79. data/tracks/ecmascript/exercises/hello-world/example.js +1 -1
  80. data/tracks/ecmascript/exercises/hello-world/hello-world.spec.js +1 -1
  81. data/tracks/ecmascript/exercises/hexadecimal/example.js +2 -2
  82. data/tracks/ecmascript/exercises/hexadecimal/hexadecimal.spec.js +9 -11
  83. data/tracks/ecmascript/exercises/isogram/isogram.spec.js +22 -23
  84. data/tracks/ecmascript/exercises/kindergarten-garden/example.js +7 -7
  85. data/tracks/ecmascript/exercises/kindergarten-garden/kindergarten-garden.spec.js +0 -5
  86. data/tracks/ecmascript/exercises/largest-series-product/example.js +4 -8
  87. data/tracks/ecmascript/exercises/largest-series-product/largest-series-product.spec.js +5 -7
  88. data/tracks/ecmascript/exercises/leap/leap.spec.js +4 -6
  89. data/tracks/ecmascript/exercises/linked-list/example.js +2 -2
  90. data/tracks/ecmascript/exercises/list-ops/example.js +19 -19
  91. data/tracks/ecmascript/exercises/list-ops/list-ops.spec.js +2 -18
  92. data/tracks/ecmascript/exercises/luhn/example.js +1 -1
  93. data/tracks/ecmascript/exercises/luhn/luhn.spec.js +1 -3
  94. data/tracks/ecmascript/exercises/matrix/example.js +2 -4
  95. data/tracks/ecmascript/exercises/matrix/matrix.spec.js +0 -2
  96. data/tracks/ecmascript/exercises/meetup/example.js +12 -15
  97. data/tracks/ecmascript/exercises/meetup/meetup.spec.js +0 -2
  98. data/tracks/ecmascript/exercises/minesweeper/example.js +60 -0
  99. data/tracks/ecmascript/exercises/minesweeper/minesweeper.spec.js +174 -0
  100. data/tracks/ecmascript/exercises/minesweeper/package.json +69 -0
  101. data/tracks/ecmascript/exercises/nth-prime/example.js +3 -2
  102. data/tracks/ecmascript/exercises/nth-prime/nth-prime.spec.js +0 -1
  103. data/tracks/ecmascript/exercises/ocr-numbers/example.js +3 -3
  104. data/tracks/ecmascript/exercises/ocr-numbers/ocr-numbers.spec.js +16 -18
  105. data/tracks/ecmascript/exercises/octal/example.js +1 -1
  106. data/tracks/ecmascript/exercises/octal/octal.spec.js +0 -2
  107. data/tracks/ecmascript/exercises/palindrome-products/example.js +14 -11
  108. data/tracks/ecmascript/exercises/palindrome-products/palindrome-products.spec.js +15 -18
  109. data/tracks/ecmascript/exercises/pangram/example.js +6 -5
  110. data/tracks/ecmascript/exercises/pangram/pangram.spec.js +10 -12
  111. data/tracks/ecmascript/exercises/pascals-triangle/example.js +2 -2
  112. data/tracks/ecmascript/exercises/pascals-triangle/pascals-triangle.spec.js +6 -8
  113. data/tracks/ecmascript/exercises/perfect-numbers/example.js +3 -5
  114. data/tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js +0 -10
  115. data/tracks/ecmascript/exercises/phone-number/example.js +2 -2
  116. data/tracks/ecmascript/exercises/phone-number/phone-number.spec.js +0 -2
  117. data/tracks/ecmascript/exercises/pig-latin/example.js +4 -4
  118. data/tracks/ecmascript/exercises/pig-latin/pig-latin.spec.js +0 -1
  119. data/tracks/ecmascript/exercises/prime-factors/example.js +2 -2
  120. data/tracks/ecmascript/exercises/prime-factors/prime-factors.spec.js +0 -2
  121. data/tracks/ecmascript/exercises/pythagorean-triplet/pythagorean-triplet.spec.js +3 -11
  122. data/tracks/ecmascript/exercises/queen-attack/example.js +17 -17
  123. data/tracks/ecmascript/exercises/queen-attack/queen-attack.spec.js +7 -8
  124. data/tracks/ecmascript/exercises/raindrops/example.js +1 -1
  125. data/tracks/ecmascript/exercises/raindrops/raindrops.spec.js +1 -2
  126. data/tracks/ecmascript/exercises/rna-transcription/example.js +5 -5
  127. data/tracks/ecmascript/exercises/rna-transcription/rna-transcription.spec.js +4 -5
  128. data/tracks/ecmascript/exercises/robot-name/example.js +6 -6
  129. data/tracks/ecmascript/exercises/robot-name/robot-name.spec.js +10 -11
  130. data/tracks/ecmascript/exercises/robot-simulator/example.js +1 -1
  131. data/tracks/ecmascript/exercises/robot-simulator/robot-simulator.spec.js +31 -32
  132. data/tracks/ecmascript/exercises/roman-numerals/example.js +16 -16
  133. data/tracks/ecmascript/exercises/saddle-points/saddle-points.spec.js +3 -3
  134. data/tracks/ecmascript/exercises/say/example.js +25 -25
  135. data/tracks/ecmascript/exercises/say/say.spec.js +2 -3
  136. data/tracks/ecmascript/exercises/scrabble-score/example.js +27 -9
  137. data/tracks/ecmascript/exercises/scrabble-score/scrabble-score.spec.js +6 -7
  138. data/tracks/ecmascript/exercises/secret-handshake/example.js +2 -3
  139. data/tracks/ecmascript/exercises/secret-handshake/secret-handshake.spec.js +3 -5
  140. data/tracks/ecmascript/exercises/series/series.spec.js +1 -3
  141. data/tracks/ecmascript/exercises/sieve/example.js +4 -3
  142. data/tracks/ecmascript/exercises/sieve/sieve.spec.js +0 -2
  143. data/tracks/ecmascript/exercises/simple-cipher/example.js +8 -9
  144. data/tracks/ecmascript/exercises/simple-cipher/simple-cipher.spec.js +4 -4
  145. data/tracks/ecmascript/exercises/space-age/example.js +1 -1
  146. data/tracks/ecmascript/exercises/space-age/space-age.spec.js +9 -11
  147. data/tracks/ecmascript/exercises/strain/example.js +4 -4
  148. data/tracks/ecmascript/exercises/strain/strain.spec.js +14 -16
  149. data/tracks/ecmascript/exercises/sum-of-multiples/example.js +4 -4
  150. data/tracks/ecmascript/exercises/triangle/triangle.spec.js +2 -4
  151. data/tracks/ecmascript/exercises/trinary/example.js +3 -3
  152. data/tracks/ecmascript/exercises/trinary/trinary.spec.js +0 -2
  153. data/tracks/ecmascript/exercises/two-bucket/example.js +30 -27
  154. data/tracks/ecmascript/exercises/two-bucket/two-bucket.spec.js +4 -8
  155. data/tracks/ecmascript/exercises/word-count/example.js +2 -2
  156. data/tracks/ecmascript/exercises/word-count/word-count.spec.js +2 -3
  157. data/tracks/ecmascript/exercises/wordy/example.js +6 -6
  158. data/tracks/ecmascript/exercises/wordy/wordy.spec.js +2 -4
  159. data/tracks/factor/config.json +15 -6
  160. data/tracks/fortran/.travis.yml +1 -1
  161. data/tracks/fsharp/config.json +312 -10
  162. data/tracks/go/README.md +1 -1
  163. data/tracks/go/config.json +523 -155
  164. data/tracks/haskell/README.md +2 -2
  165. data/tracks/haskell/config.json +256 -7
  166. data/tracks/haxe/.travis.yml +1 -1
  167. data/tracks/haxe/Makefile +2 -2
  168. data/tracks/haxe/config.json +8 -5
  169. data/tracks/java/CONTRIBUTING.md +2 -2
  170. data/tracks/java/config.json +277 -17
  171. data/tracks/java/exercises/rotational-cipher/build.gradle +17 -0
  172. data/tracks/java/exercises/rotational-cipher/src/example/java/RotationalCipher.java +37 -0
  173. data/tracks/java/exercises/rotational-cipher/src/main/java/.keep +0 -0
  174. data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +81 -0
  175. data/tracks/java/exercises/settings.gradle +1 -0
  176. data/tracks/java/exercises/twelve-days/src/main/java/TwelveDays.java +4 -0
  177. data/tracks/julia/.travis.yml +1 -1
  178. data/tracks/julia/README.md +1 -1
  179. data/tracks/kotlin/README.md +2 -2
  180. data/tracks/kotlin/exercises/hello-world/TUTORIAL.md +3 -3
  181. data/tracks/lisp/config.json +97 -3
  182. data/tracks/lisp/exercises/pascals-triangle/example.lisp +21 -0
  183. data/tracks/lisp/exercises/pascals-triangle/pascal.lisp +7 -0
  184. data/tracks/lisp/exercises/pascals-triangle/pascals-triangle-test.lisp +34 -0
  185. data/tracks/lua/.travis.yml +1 -1
  186. data/tracks/lua/README.md +1 -1
  187. data/tracks/mips/.travis.yml +1 -1
  188. data/tracks/mips/config.json +56 -17
  189. data/tracks/nasm/.travis.yml +1 -1
  190. data/tracks/nim/.travis.yml +1 -1
  191. data/tracks/ocaml/README.md +3 -3
  192. data/tracks/ocaml/config.json +130 -4
  193. data/tracks/perl5/docs/TESTS.md +40 -26
  194. data/tracks/plsql/.travis.yml +1 -1
  195. data/tracks/plsql/config.json +40 -13
  196. data/tracks/pony/.travis.yml +1 -1
  197. data/tracks/pony/bin/install-deps +4 -3
  198. data/tracks/prolog/.travis.yml +1 -1
  199. data/tracks/r/README.md +5 -5
  200. data/tracks/r/config.json +102 -30
  201. data/tracks/rust/.travis.yml +1 -1
  202. data/tracks/rust/config.json +172 -4
  203. data/tracks/rust/docs/EXERCISE_README_INSERT.md +1 -1
  204. data/tracks/sml/config.json +26 -3
  205. data/tracks/vimscript/config.json +60 -3
  206. metadata +16 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62baf7af4680765a500baffa2c4a38ef0c95e3bc
4
- data.tar.gz: 9dd310ae339c9f442f91e265d432aa9f588ad56c
3
+ metadata.gz: f6b39bf536179101d4a80589e4eb0063f540d4d8
4
+ data.tar.gz: a9c7f68cfa36b6c9f620d867a8ee72daa59caa24
5
5
  SHA512:
6
- metadata.gz: 1aa96e32e99c1ee254602da3d2aca1bc7fe25338bed444fcc884c3402ea155257c0f01588d66734f5fa315f2d2cdec46c9aba0a458adc436da88ccd0891b54e3
7
- data.tar.gz: f52eb36aa07b34e9f88cdf156d64895ab65d16a4d40682d7659b4a19b783e29261bc794f750893413c5bfbbae17654acde82023fa748f7c3322f879243c63896
6
+ metadata.gz: 16d09a7ab8c27ce704facfe2b10c6eed0907f15dd755fb131c8bc6b3712139de8474a1bd081b7c496c30ea19ffa19f54ee7cb44d35e1c67bfabf53cf94a6dd0a
7
+ data.tar.gz: 3acfc68e0e4218095d78bbd489d95a867bcf90d3f1f78b5f004590addf8d6bb32887605d3193251098e48baed46193ce98aa5147aaea9158e912d6135ecc04da
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.0.0"
2
+ VERSION = "2.2.0.1"
3
3
  end
@@ -169,7 +169,7 @@ Some language tracks are experimenting with generating test suites from shared
169
169
  test data. This is because various interesting edge cases are discovered as
170
170
  people discuss solutions, but these edge cases are usually then only added
171
171
  to a single language track. By standardising the inputs and outputs, it becomes
172
- easier to and improve the exercises across all the languages.
172
+ easier to improve the exercises across all the languages.
173
173
 
174
174
  There are two possible scenarios, described below.
175
175
 
@@ -3,4 +3,4 @@ language: bash
3
3
  sudo: false
4
4
  script:
5
5
  - bin/fetch-configlet
6
- - bin/configlet .
6
+ - bin/configlet lint .
@@ -6,78 +6,105 @@
6
6
  "active": false,
7
7
  "exercises": [
8
8
  {
9
+ "uuid": "4e2533dd-3af5-400b-869d-78140764d533",
9
10
  "slug": "hello-world",
11
+ "core": false,
12
+ "unlocked_by": null,
10
13
  "difficulty": 1,
11
14
  "topics": [
12
15
 
13
16
  ]
14
17
  },
15
18
  {
19
+ "uuid": "176c1a86-28b1-4848-9f87-bd6ae10db6ba",
16
20
  "slug": "gigasecond",
21
+ "core": false,
22
+ "unlocked_by": null,
17
23
  "difficulty": 1,
18
24
  "topics": [
19
25
 
20
26
  ]
21
27
  },
22
28
  {
29
+ "uuid": "e24451fd-761d-4d20-81d9-e470486ec44a",
23
30
  "slug": "leap",
31
+ "core": false,
32
+ "unlocked_by": null,
24
33
  "difficulty": 1,
25
34
  "topics": [
26
35
 
27
36
  ]
28
37
  },
29
38
  {
39
+ "uuid": "68103f44-b442-48e6-b2b5-09001f73e926",
30
40
  "slug": "hamming",
41
+ "core": false,
42
+ "unlocked_by": null,
31
43
  "difficulty": 1,
32
44
  "topics": [
33
45
 
34
46
  ]
35
47
  },
36
48
  {
49
+ "uuid": "8a62e53e-59c2-42d5-96e5-a0f8f9b5d177",
37
50
  "slug": "rna-transcription",
51
+ "core": false,
52
+ "unlocked_by": null,
38
53
  "difficulty": 1,
39
54
  "topics": [
40
55
 
41
56
  ]
42
57
  },
43
58
  {
59
+ "uuid": "1a9c8d65-43ee-435e-8c55-9a45c14a71fb",
44
60
  "slug": "raindrops",
61
+ "core": false,
62
+ "unlocked_by": null,
45
63
  "difficulty": 1,
46
64
  "topics": [
47
65
 
48
66
  ]
49
67
  },
50
68
  {
69
+ "uuid": "9ac0b041-a7aa-4b0c-952a-d38d35e2cd65",
51
70
  "slug": "bob",
71
+ "core": false,
72
+ "unlocked_by": null,
52
73
  "difficulty": 1,
53
74
  "topics": [
54
75
 
55
76
  ]
56
77
  },
57
78
  {
79
+ "uuid": "ca5139b4-8b2f-44ea-8d83-0b8ca7674436",
58
80
  "slug": "difference-of-squares",
81
+ "core": false,
82
+ "unlocked_by": null,
59
83
  "difficulty": 1,
60
84
  "topics": [
61
85
 
62
86
  ]
63
87
  },
64
88
  {
89
+ "uuid": "33d9eb48-5958-4e98-afc0-8cff89577c86",
65
90
  "slug": "anagram",
91
+ "core": false,
92
+ "unlocked_by": null,
66
93
  "difficulty": 1,
67
94
  "topics": [
68
95
 
69
96
  ]
70
97
  },
71
98
  {
99
+ "uuid": "a7e2018a-c454-4fe0-ad35-229304306648",
72
100
  "slug": "pangram",
101
+ "core": false,
102
+ "unlocked_by": null,
73
103
  "difficulty": 1,
74
104
  "topics": [
75
105
 
76
106
  ]
77
107
  }
78
- ],
79
- "deprecated": [
80
-
81
108
  ],
82
109
  "foregone": [
83
110
 
data/tracks/c/README.md CHANGED
@@ -4,7 +4,7 @@ Exercism problems in C
4
4
 
5
5
  ## Contributing Guide
6
6
 
7
- Please see the [Exercism contributing guide](https://github.com/exercism/x-common/blob/master/CONTRIBUTING.md) for general contribution tips.
7
+ Please see the [Exercism contributing guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md) for general contribution tips.
8
8
 
9
9
  ## Coding Style
10
10
 
data/tracks/c/config.json CHANGED
@@ -6,7 +6,9 @@
6
6
  "active": false,
7
7
  "exercises": [
8
8
  {
9
+ "uuid": "a0278e53-728d-4c04-9a0e-d6f7fe7ce98f",
9
10
  "slug": "hello-world",
11
+ "core": true,
10
12
  "difficulty": 1,
11
13
  "topics": [
12
14
  "control-flow (if-statements)",
@@ -15,7 +17,9 @@
15
17
  ]
16
18
  },
17
19
  {
20
+ "uuid": "7167e43c-04bd-4c6c-a446-a37384d42626",
18
21
  "slug": "isogram",
22
+ "core": true,
19
23
  "difficulty": 1,
20
24
  "topics": [
21
25
  "arrays",
@@ -25,8 +29,11 @@
25
29
  ]
26
30
  },
27
31
  {
28
- "difficulty": 5,
32
+ "uuid": "82b19968-03f9-4e17-b729-db6c3e2abfa4",
29
33
  "slug": "anagram",
34
+ "core": false,
35
+ "unlocked_by": "acronym",
36
+ "difficulty": 5,
30
37
  "topics": [
31
38
  "strings",
32
39
  "filtering",
@@ -35,23 +42,30 @@
35
42
  ]
36
43
  },
37
44
  {
38
- "difficulty": 1,
45
+ "uuid": "24721f7a-4123-470f-81e2-a252e56f3ceb",
39
46
  "slug": "leap",
47
+ "core": false,
48
+ "unlocked_by": null,
49
+ "difficulty": 1,
40
50
  "topics": [
41
51
  "logic",
42
52
  "control-flow (if-else statements)"
43
53
  ]
44
54
  },
45
55
  {
46
- "difficulty": 1,
56
+ "uuid": "532393f6-dedc-40fc-872e-b265450fd007",
47
57
  "slug": "gigasecond",
58
+ "core": true,
59
+ "difficulty": 1,
48
60
  "topics": [
49
61
  "dates"
50
62
  ]
51
63
  },
52
64
  {
53
- "difficulty": 2,
65
+ "uuid": "500c2f8c-7404-47e7-8064-8c426b0632ea",
54
66
  "slug": "hamming",
67
+ "core": true,
68
+ "difficulty": 2,
55
69
  "topics": [
56
70
  "arrays",
57
71
  "strings",
@@ -59,24 +73,33 @@
59
73
  ]
60
74
  },
61
75
  {
62
- "difficulty": 2,
76
+ "uuid": "b69b0f46-644c-4e98-8e31-34e392477f57",
63
77
  "slug": "raindrops",
78
+ "core": false,
79
+ "unlocked_by": null,
80
+ "difficulty": 2,
64
81
  "topics": [
65
82
  "strings",
66
83
  "control-flow (if-else statements)"
67
84
  ]
68
85
  },
69
86
  {
70
- "difficulty": 10,
87
+ "uuid": "a559ee05-0ce8-4071-a159-b7a54ef3215c",
71
88
  "slug": "bob",
89
+ "core": false,
90
+ "unlocked_by": "beer-song",
91
+ "difficulty": 5,
72
92
  "topics": [
73
93
  "strings",
74
94
  "control-flow (if-else statements)"
75
95
  ]
76
96
  },
77
97
  {
78
- "difficulty": 1,
98
+ "uuid": "08904f5e-3b07-4f0b-9dc6-6e371df1ef02",
79
99
  "slug": "acronym",
100
+ "core": false,
101
+ "unlocked_by": "isogram",
102
+ "difficulty": 1,
80
103
  "topics": [
81
104
  "strings",
82
105
  "memory management",
@@ -84,8 +107,10 @@
84
107
  ]
85
108
  },
86
109
  {
87
- "difficulty": 1,
110
+ "uuid": "f9b3b7f1-c49a-421b-a38d-b740f1910ca5",
88
111
  "slug": "grains",
112
+ "core": true,
113
+ "difficulty": 1,
89
114
  "topics": [
90
115
  "control-flow (loops)",
91
116
  "bitwise operations",
@@ -93,8 +118,11 @@
93
118
  ]
94
119
  },
95
120
  {
96
- "difficulty": 5,
121
+ "uuid": "d64646d1-5af9-4bdc-b637-5c56447e6693",
97
122
  "slug": "largest-series-product",
123
+ "core": false,
124
+ "unlocked_by": "palindrome-products",
125
+ "difficulty": 5,
98
126
  "topics": [
99
127
  "control-flow (loops)",
100
128
  "strings",
@@ -102,8 +130,11 @@
102
130
  ]
103
131
  },
104
132
  {
105
- "difficulty": 3,
133
+ "uuid": "70c0e2d6-70a4-499f-86e3-6e209b494a5d",
106
134
  "slug": "pangram",
135
+ "core": false,
136
+ "unlocked_by": "isogram",
137
+ "difficulty": 3,
107
138
  "topics": [
108
139
  "strings",
109
140
  "control-flow (if-else statements)",
@@ -111,8 +142,11 @@
111
142
  ]
112
143
  },
113
144
  {
114
- "difficulty": 3,
145
+ "uuid": "1b3144fe-8e9f-46bc-9206-74cad1c5b088",
115
146
  "slug": "all-your-base",
147
+ "core": false,
148
+ "unlocked_by": "binary",
149
+ "difficulty": 3,
116
150
  "topics": [
117
151
  "arrays",
118
152
  "control-flow (if-else statements)",
@@ -120,8 +154,11 @@
120
154
  ]
121
155
  },
122
156
  {
123
- "difficulty": 4,
157
+ "uuid": "5f88968b-7c02-4846-9f38-cec55d19df66",
124
158
  "slug": "nth-prime",
159
+ "core": false,
160
+ "unlocked_by": "sieve",
161
+ "difficulty": 4,
125
162
  "topics": [
126
163
  "control-flow (if-else statements)",
127
164
  "control-flow (loops)",
@@ -129,8 +166,10 @@
129
166
  ]
130
167
  },
131
168
  {
132
- "difficulty": 2,
169
+ "uuid": "5d988d28-2ef7-46e7-b706-011cc5ecb6fc",
133
170
  "slug": "beer-song",
171
+ "core": true,
172
+ "difficulty": 2,
134
173
  "topics": [
135
174
  "strings",
136
175
  "control-flow (if-else statements)",
@@ -138,8 +177,11 @@
138
177
  ]
139
178
  },
140
179
  {
141
- "difficulty": 2,
180
+ "uuid": "47308cfb-357a-4d61-852f-49b26ee2b236",
142
181
  "slug": "rna-transcription",
182
+ "core": false,
183
+ "unlocked_by": "hamming",
184
+ "difficulty": 2,
143
185
  "topics": [
144
186
  "strings",
145
187
  "control-flow (case statements)",
@@ -147,23 +189,30 @@
147
189
  ]
148
190
  },
149
191
  {
150
- "difficulty": 1,
192
+ "uuid": "3531b23c-7a23-47b7-88f4-ff8519d0392b",
151
193
  "slug": "difference-of-squares",
194
+ "core": true,
195
+ "difficulty": 1,
152
196
  "topics": [
153
197
  "control-flow (loops)"
154
198
  ]
155
199
  },
156
200
  {
157
- "difficulty": 4,
201
+ "uuid": "a9d8772f-3733-4b84-b8c6-f3c38a8ce5db",
158
202
  "slug": "sum-of-multiples",
203
+ "core": false,
204
+ "unlocked_by": "difference-of-squares",
205
+ "difficulty": 4,
159
206
  "topics": [
160
207
  "control-flow (case statements)",
161
208
  "control-flow (loops)"
162
209
  ]
163
210
  },
164
211
  {
165
- "difficulty": 2,
212
+ "uuid": "23231bc9-4a75-40ab-b934-f8b429b55224",
166
213
  "slug": "binary-search",
214
+ "core": true,
215
+ "difficulty": 2,
167
216
  "topics": [
168
217
  "arrays",
169
218
  "control-flow (if-else statements)",
@@ -172,8 +221,10 @@
172
221
  ]
173
222
  },
174
223
  {
175
- "difficulty": 3,
224
+ "uuid": "db544fba-acf4-47b5-b86c-fc9f0680517d",
176
225
  "slug": "roman-numerals",
226
+ "core": true,
227
+ "difficulty": 3,
177
228
  "topics": [
178
229
  "arrays",
179
230
  "memory management",
@@ -183,8 +234,11 @@
183
234
  ]
184
235
  },
185
236
  {
186
- "difficulty": 3,
237
+ "uuid": "2e2d009b-3bd6-4258-988b-5e36e2e27f3c",
187
238
  "slug": "word-count",
239
+ "core": false,
240
+ "unlocked_by": "isogram",
241
+ "difficulty": 3,
188
242
  "topics": [
189
243
  "strings",
190
244
  "filtering",
@@ -193,8 +247,10 @@
193
247
  ]
194
248
  },
195
249
  {
196
- "difficulty": 4,
250
+ "uuid": "28bdb8bb-26cd-40c1-91ba-a00fda09eaf2",
197
251
  "slug": "allergies",
252
+ "core": true,
253
+ "difficulty": 4,
198
254
  "topics": [
199
255
  "control-flow (if-statements)",
200
256
  "control-flow (loops)",
@@ -203,8 +259,10 @@
203
259
  ]
204
260
  },
205
261
  {
206
- "difficulty": 5,
262
+ "uuid": "e39c4445-eadd-4bcf-9b49-2256ed38d6fd",
207
263
  "slug": "atbash-cipher",
264
+ "core": true,
265
+ "difficulty": 5,
208
266
  "topics": [
209
267
  "control-flow (loops)",
210
268
  "control-flow (if-else statements)",
@@ -212,8 +270,10 @@
212
270
  ]
213
271
  },
214
272
  {
215
- "difficulty": 4,
273
+ "uuid": "92e18b2f-f137-452e-a21d-045874da84d7",
216
274
  "slug": "phone-number",
275
+ "core": true,
276
+ "difficulty": 4,
217
277
  "topics": [
218
278
  "strings",
219
279
  "memory management",
@@ -222,8 +282,10 @@
222
282
  ]
223
283
  },
224
284
  {
225
- "difficulty": 2,
285
+ "uuid": "3b3d1f61-c580-4a37-9cab-449eeebe7f86",
226
286
  "slug": "clock",
287
+ "core": true,
288
+ "difficulty": 2,
227
289
  "topics": [
228
290
  "control-flow (if-statements)",
229
291
  "strings",
@@ -232,16 +294,21 @@
232
294
  ]
233
295
  },
234
296
  {
235
- "difficulty": 2,
297
+ "uuid": "f1b60913-78d3-4872-a1a3-5ac3930c74ff",
236
298
  "slug": "sieve",
299
+ "core": true,
300
+ "difficulty": 2,
237
301
  "topics": [
238
302
  "control-flow (if-statements)",
239
303
  "memory management"
240
304
  ]
241
305
  },
242
306
  {
243
- "difficulty": 2,
307
+ "uuid": "75b292a3-2a94-40f9-8798-608812a6c0f8",
244
308
  "slug": "series",
309
+ "core": false,
310
+ "unlocked_by": "atbash-cipher",
311
+ "difficulty": 2,
245
312
  "topics": [
246
313
  "control-flow (if-statements)",
247
314
  "strings",
@@ -250,8 +317,11 @@
250
317
  ]
251
318
  },
252
319
  {
253
- "difficulty": 4,
320
+ "uuid": "5c782b4f-862e-4feb-98d6-a0eaf9d43a74",
254
321
  "slug": "meetup",
322
+ "core": false,
323
+ "unlocked_by": "gigasecond",
324
+ "difficulty": 4,
255
325
  "topics": [
256
326
  "control-flow (if-statements)",
257
327
  "strings",
@@ -261,8 +331,11 @@
261
331
  ]
262
332
  },
263
333
  {
264
- "difficulty": 2,
334
+ "uuid": "ca136f47-07fc-4bd5-9b81-a492ac81a7e6",
265
335
  "slug": "nucleotide-count",
336
+ "core": false,
337
+ "unlocked_by": "hamming",
338
+ "difficulty": 2,
266
339
  "topics": [
267
340
  "control-flow (loops, switch, if-statements)",
268
341
  "strings",
@@ -271,8 +344,10 @@
271
344
  ]
272
345
  },
273
346
  {
274
- "difficulty": 2,
347
+ "uuid": "87c36588-5917-4790-9566-f7bc21bf41c4",
275
348
  "slug": "robot-simulator",
349
+ "core": true,
350
+ "difficulty": 2,
276
351
  "topics": [
277
352
  "strings",
278
353
  "control-flow (if-statements)",
@@ -282,8 +357,11 @@
282
357
  ]
283
358
  },
284
359
  {
285
- "difficulty": 1,
360
+ "uuid": "4b30bb00-c559-423c-ae1c-9c5eaf9cb1c8",
286
361
  "slug": "triangle",
362
+ "core": false,
363
+ "unlocked_by": "pascals-triangle",
364
+ "difficulty": 1,
287
365
  "topics": [
288
366
  "control-flow (if-else statements)",
289
367
  "Booleans",
@@ -292,8 +370,10 @@
292
370
  ]
293
371
  },
294
372
  {
295
- "difficulty": 1,
373
+ "uuid": "3ebdb4e4-5e35-48f0-a572-87c40b51475f",
296
374
  "slug": "pascals-triangle",
375
+ "core": true,
376
+ "difficulty": 1,
297
377
  "topics": [
298
378
  "control-flow (if-else statements)",
299
379
  "memory management",
@@ -301,24 +381,31 @@
301
381
  ]
302
382
  },
303
383
  {
304
- "difficulty": 1,
384
+ "uuid": "82bb6c43-668a-4563-bc05-056e45cf86a3",
305
385
  "slug": "perfect-numbers",
386
+ "core": false,
387
+ "unlocked_by": "pascals-triangle",
388
+ "difficulty": 1,
306
389
  "topics": [
307
390
  "control-flow (if-else statements)",
308
391
  "Mathematics"
309
392
  ]
310
393
  },
311
394
  {
312
- "difficulty": 1,
395
+ "uuid": "73e5774c-7d8e-4ed6-9d72-3cb59af441c0",
313
396
  "slug": "binary",
397
+ "core": true,
398
+ "difficulty": 1,
314
399
  "topics": [
315
400
  "control-flow (loops)",
316
401
  "control-flow (if-statements)"
317
402
  ]
318
403
  },
319
404
  {
320
- "difficulty": 2,
405
+ "uuid": "b1f13fdd-4c78-443a-8e37-6d0a3fafbc15",
321
406
  "slug": "palindrome-products",
407
+ "core": true,
408
+ "difficulty": 2,
322
409
  "topics": [
323
410
  "strings",
324
411
  "structs",
@@ -327,8 +414,10 @@
327
414
  ]
328
415
  },
329
416
  {
330
- "difficulty": 4,
417
+ "uuid": "2ac990f4-39b0-416e-93ee-217dc0181401",
331
418
  "slug": "scrabble-score",
419
+ "core": true,
420
+ "difficulty": 4,
332
421
  "topics": [
333
422
  "structs",
334
423
  "pointers",
@@ -337,23 +426,26 @@
337
426
  ]
338
427
  },
339
428
  {
340
- "difficulty": 1,
429
+ "uuid": "11a574a6-ffea-4de5-abc1-5566bd200374",
341
430
  "slug": "space-age",
431
+ "core": false,
432
+ "unlocked_by": "gigasecond",
433
+ "difficulty": 1,
342
434
  "topics": [
343
435
  "Functions"
344
436
  ]
345
437
  },
346
438
  {
347
- "difficulty": 10,
439
+ "uuid": "55b87cc2-c3a0-438a-b2b6-116ad6356802",
348
440
  "slug": "react",
441
+ "core": false,
442
+ "unlocked_by": "atbash-cipher",
443
+ "difficulty": 10,
349
444
  "topics": [
350
445
  "memory management",
351
446
  "Functions"
352
447
  ]
353
448
  }
354
- ],
355
- "deprecated": [
356
-
357
449
  ],
358
450
  "foregone": [
359
451
 
@@ -20,15 +20,15 @@ The Exercism-wide [contributing guide](https://github.com/exercism/docs/tree/mas
20
20
 
21
21
  Depending on what your contribution deals with, you may have to direct it at a certain repository:
22
22
 
23
- * If your contribution deals with the README for a problem, it should go to [x-common](https://github.com/exercism/x-common).
23
+ * If your contribution deals with the README for a problem, it should go to [problem-specifications](https://github.com/exercism/problem-specifications).
24
24
  * Otherwise, it probably deals with matters specific to the Ceylon track, in which case it goes to this repository.
25
- * If you're not sure, you can try here and we will let you know if it should go in x-common.
25
+ * If you're not sure, you can try here and we will let you know if it should go in problem-specifications.
26
26
 
27
27
  #### Porting an exercise
28
28
 
29
29
  The Exercism site provides a list of [exercises not on the Ceylon track](http://exercism.io/languages/ceylon/todo).
30
30
  A possible contribution would be to choose one of these exercises and add it to this track.
31
- The common contributing guide has a [section on porting an exercise](https://github.com/exercism/x-common/blob/master/CONTRIBUTING.md#porting-an-exercise-to-another-language-track).
31
+ The Exercism documentation repo has a [guide on porting an exercise](https://github.com/exercism/docs/blob/master/you-can-help/implement-an-exercise-from-specification.md).
32
32
 
33
33
  Note that you will need to add the problem to the `exercises` section in `config.json` as well, otherwise it will not be available via `exercism fetch` (or any other means, other than by cloning the repository).
34
34
 
@@ -50,8 +50,8 @@ This directory should contain the following files and directories, where `<slug>
50
50
  * This file provides just the type signatures needed to make the tests compile.
51
51
  * The implementations for all functions should all be `return nothing;`, which will intentionally fail the tests.
52
52
  * `source/<slug>/<Slug>Test.ceylon`: The test file.
53
- * If there is an `exercises/<slug>/canonical-data.json` in the `x-common` repository, the test cases should typically be those described in that file.
54
- * If you believe a case should be added or removed, try discussing it in the `x-common` repository to see if it would apply to all tracks.
53
+ * If there is an `exercises/<slug>/canonical-data.json` in the [`problem-specifications` repository](https://github.com/exercism/problem-specifications), the test cases should typically be those described in that file.
54
+ * If you believe a case should be added or removed, try discussing it in the `problem-specifications` repository to see if it would apply to all tracks.
55
55
  * If a modification to the cases only makes sense for the Ceylon track, please note the change in the test file.
56
56
  * If no JSON file is present, you may use the same tests as other languages implementing that exercise.
57
57
  * Typically, we like to use [parameterized tests](https://ceylon-lang.org/blog/2016/02/22/ceylon-test-new-and-noteworthy/#parameterized_tests) to express the tests with minimal duplication in test code.
@@ -65,7 +65,7 @@ This directory should contain the following files and directories, where `<slug>
65
65
  * *optional*: `example/*.ceylon`
66
66
  * Other files may be included in the `example/` directory if appropriate.
67
67
 
68
- As a reminder, the README does not need to be added to this track - it is automatically created using the data in [x-common](https://github.com/exercism/x-common).
68
+ As a reminder, the README does not need to be added to this track - it is automatically created using the data in [problem-specifications](https://github.com/exercism/problem-specifications).
69
69
  However, if there is any Ceylon-specific information that you would like appended to the README, place this in a `HINTS.md` file in the exercise directory (`exercises/<slug>/HINTS.md`).
70
70
 
71
71
  ### Running the tests