trackler 2.2.1.160 → 2.2.1.161

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/ballerina/.gitignore +4 -0
  4. data/tracks/ballerina/.travis.yml +5 -0
  5. data/tracks/ballerina/LICENSE +21 -0
  6. data/tracks/ballerina/README.md +67 -0
  7. data/tracks/ballerina/bin/fetch-configlet +32 -0
  8. data/tracks/ballerina/config.json +11 -0
  9. data/tracks/ballerina/config/exercise-readme-insert.md +0 -0
  10. data/tracks/ballerina/config/exercise_readme.go.tmpl +16 -0
  11. data/tracks/ballerina/config/maintainers.json +4 -0
  12. data/tracks/ballerina/docs/ABOUT.md +0 -0
  13. data/tracks/ballerina/docs/INSTALLATION.md +0 -0
  14. data/tracks/ballerina/docs/LEARNING.md +0 -0
  15. data/tracks/ballerina/docs/RESOURCES.md +0 -0
  16. data/tracks/ballerina/docs/TESTS.md +0 -0
  17. data/tracks/ballerina/img/.keep +0 -0
  18. data/tracks/c/config.json +1 -1
  19. data/tracks/kotlin/config.json +400 -86
  20. data/tracks/kotlin/config/maintainers.json +10 -0
  21. data/tracks/objective-c/config.json +208 -208
  22. data/tracks/objective-c/config/maintainers.json +16 -16
  23. data/tracks/objective-c/docs/ABOUT.md +5 -1
  24. data/tracks/powershell/config.json +1 -1
  25. data/tracks/powershell/exercises/reverse-string/ReverseString.example.ps1 +13 -0
  26. data/tracks/powershell/exercises/reverse-string/ReverseString.ps1 +13 -1
  27. data/tracks/powershell/exercises/sum-of-multiples/SumOfMultiples.example.ps1 +18 -0
  28. data/tracks/powershell/exercises/sum-of-multiples/SumOfMultiples.ps1 +18 -0
  29. data/tracks/prolog/config.json +31 -63
  30. data/tracks/prolog/config/maintainers.json +8 -8
  31. data/tracks/prolog/docs/SNIPPET.txt +10 -5
  32. data/tracks/python/config.json +1 -0
  33. data/tracks/python/docs/ABOUT.md +8 -8
  34. data/tracks/python/exercises/all-your-base/all_your_base_test.py +1 -1
  35. data/tracks/python/exercises/allergies/allergies_test.py +1 -1
  36. data/tracks/python/exercises/alphametics/alphametics_test.py +1 -1
  37. data/tracks/python/exercises/anagram/anagram_test.py +1 -1
  38. data/tracks/python/exercises/armstrong-numbers/armstrong_numbers_test.py +1 -1
  39. data/tracks/python/exercises/bank-account/bank_account_test.py +1 -1
  40. data/tracks/python/exercises/beer-song/beer_song_test.py +1 -1
  41. data/tracks/python/exercises/binary-search-tree/binary_search_tree_test.py +1 -1
  42. data/tracks/python/exercises/binary-search/binary_search_test.py +1 -1
  43. data/tracks/python/exercises/binary/binary_test.py +1 -1
  44. data/tracks/python/exercises/bob/bob_test.py +1 -1
  45. data/tracks/python/exercises/book-store/book_store_test.py +1 -1
  46. data/tracks/python/exercises/bowling/bowling_test.py +1 -1
  47. data/tracks/python/exercises/bracket-push/bracket_push_test.py +1 -1
  48. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py +1 -1
  49. data/tracks/python/exercises/diamond/diamond_test.py +1 -1
  50. data/tracks/python/exercises/etl/etl_test.py +1 -1
  51. data/tracks/python/exercises/flatten-array/flatten_array_test.py +1 -1
  52. data/tracks/python/exercises/grade-school/grade_school_test.py +1 -1
  53. data/tracks/python/exercises/hello-world/hello_world_test.py +1 -1
  54. data/tracks/python/exercises/house/house_test.py +1 -1
  55. data/tracks/python/exercises/isbn-verifier/isbn_verifier_test.py +1 -1
  56. data/tracks/python/exercises/isogram/isogram_test.py +1 -1
  57. data/tracks/python/exercises/kindergarten-garden/kindergarten_garden_test.py +1 -1
  58. data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +1 -1
  59. data/tracks/python/exercises/leap/leap_test.py +1 -1
  60. data/tracks/python/exercises/linked-list/linked_list_test.py +1 -1
  61. data/tracks/python/exercises/luhn/luhn_test.py +1 -1
  62. data/tracks/python/exercises/markdown/markdown_test.py +1 -1
  63. data/tracks/python/exercises/nth-prime/nth_prime_test.py +1 -1
  64. data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +1 -1
  65. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +1 -1
  66. data/tracks/python/exercises/palindrome-products/palindrome_products_test.py +1 -1
  67. data/tracks/python/exercises/pangram/pangram_test.py +1 -1
  68. data/tracks/python/exercises/phone-number/phone_number_test.py +1 -1
  69. data/tracks/python/exercises/pig-latin/pig_latin_test.py +1 -1
  70. data/tracks/python/exercises/point-mutations/point_mutations_test.py +1 -1
  71. data/tracks/python/exercises/protein-translation/protein_translation_test.py +1 -1
  72. data/tracks/python/exercises/rail-fence-cipher/rail_fence_cipher_test.py +1 -1
  73. data/tracks/python/exercises/rational-numbers/rational_numbers_test.py +1 -1
  74. data/tracks/python/exercises/react/react_test.py +1 -1
  75. data/tracks/python/exercises/rectangles/rectangles_test.py +1 -1
  76. data/tracks/python/exercises/reverse-string/reverse_string_test.py +1 -1
  77. data/tracks/python/exercises/rna-transcription/rna_transcription_test.py +1 -1
  78. data/tracks/python/exercises/robot-name/robot_name_test.py +1 -1
  79. data/tracks/python/exercises/robot-simulator/robot_simulator_test.py +1 -1
  80. data/tracks/python/exercises/roman-numerals/roman_numerals_test.py +1 -1
  81. data/tracks/python/exercises/rotational-cipher/rotational_cipher_test.py +1 -1
  82. data/tracks/python/exercises/run-length-encoding/run_length_encoding_test.py +1 -1
  83. data/tracks/python/exercises/saddle-points/saddle_points_test.py +1 -1
  84. data/tracks/python/exercises/scrabble-score/scrabble_score_test.py +1 -1
  85. data/tracks/python/exercises/secret-handshake/secret_handshake_test.py +1 -1
  86. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +1 -1
  87. data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +1 -1
  88. data/tracks/python/exercises/tournament/tournament_test.py +1 -1
  89. data/tracks/python/exercises/transpose/transpose_test.py +1 -1
  90. data/tracks/python/exercises/tree-building/tree_building_test.py +1 -1
  91. data/tracks/python/exercises/twelve-days/twelve_days_test.py +1 -3
  92. data/tracks/python/exercises/two-fer/two_fer_test.py +1 -1
  93. data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +1 -1
  94. data/tracks/python/exercises/word-count/word_count_test.py +1 -1
  95. data/tracks/python/exercises/word-search/word_search_test.py +1 -1
  96. data/tracks/python/exercises/yacht/yacht_test.py +1 -1
  97. data/tracks/swift/config.json +369 -353
  98. data/tracks/swift/config/maintainers.json +16 -16
  99. data/tracks/vimscript/docs/ABOUT.md +23 -34
  100. metadata +18 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 062bb873f8890d1316687c0af76824cd2175d04c
4
- data.tar.gz: 571f42ee4f3758546dd63d22e0011fd56f445bad
3
+ metadata.gz: b43c5ab9a8adbe36a8157bf0d03a0f4bd4bbc684
4
+ data.tar.gz: 4109587f611e9fd046523c3c7efd0a5f6238f6d9
5
5
  SHA512:
6
- metadata.gz: 58919ad7f6156239e200cb284c82271f2364c2ea6120bb523e1b6d99a623bc9ae612c19160906dbe0799858b93383e4289091b6968527b458300b8228f0275cc
7
- data.tar.gz: 7fc3ed275a8253e4dc937666b24fbec7436becd0f5f52bf73fa2f7bd81afdd281127a626c94a6c42fb81d0897053b9dee9dd2efcf6d6219d4e9861b2546d5711
6
+ metadata.gz: 13df901f2b0606aa96041dab598e441b5b846c88548917f2a877a7313e32ba6094eb15073646871a9966e33e9f2ee0854983fb20658341fcf5cd09f052e84c28
7
+ data.tar.gz: 7f8088e21b6c7351d45b1726fec99632032e0d0a365aaed9ec2085998378ca78883c7072d9cf40b86ea4d17deac200bac2d7e8fda04c127c74f0514be0544d44
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.160"
2
+ VERSION = "2.2.1.161"
3
3
  end
@@ -0,0 +1,4 @@
1
+ *.swp
2
+ .DS_Store
3
+ bin/configlet
4
+ bin/configlet.exe
@@ -0,0 +1,5 @@
1
+ language: bash
2
+
3
+ script:
4
+ - bin/fetch-configlet
5
+ - bin/configlet lint --track TRACK_ID .
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 Exercism, Inc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,67 @@
1
+ # Exercism Ballerina Track
2
+
3
+ ![build status](https://travis-ci.org/exercism/ballerina.svg?branch=master)
4
+
5
+ Exercism exercises in Ballerina.
6
+
7
+ ## Setup
8
+
9
+ The simplest way to install Ballerina is ...
10
+
11
+ ## Contributing
12
+
13
+ Thank you so much for contributing! :tada:
14
+
15
+ Please read about how to [get involved in a track](https://github.com/exercism/docs/tree/master/contributing-to-language-tracks). Be sure to read the Exercism [Code of Conduct](https://github.com/exercism/exercism.io/blob/master/CODE_OF_CONDUCT.md).
16
+
17
+ We welcome pull requests of all kinds. No contribution is too small.
18
+
19
+ We encourage contributions that provide fixes and improvements to existing exercises. Please note that this track's exercises must conform to the Exercism-wide standards described in the [documentation](https://github.com/exercism/docs/tree/master/language-tracks/exercises). If you're unsure about how to make a change, then go ahead and open a GitHub issue, and we'll discuss it.
20
+
21
+ ## Exercise Tests
22
+
23
+ At the most basic level, Exercism is all about the tests. You can read more about how we think about test suites in [the Exercism documentation](https://github.com/exercism/docs/blob/master/language-tracks/exercises/anatomy/test-suites.md).
24
+
25
+ Test files should use the following format:
26
+
27
+ ```
28
+ # include the body of an example test
29
+ ```
30
+
31
+ ## Opening an Issue
32
+
33
+ If you plan to make significant or breaking changes, please open an issue so we can discuss it first. If this is a discussion that is relevant to more than just the Ballerina track, please open an issue in [exercism/discussions](https://github.com/exercism/discussions/issues).
34
+
35
+ ## Submitting a Pull Request
36
+
37
+ Pull requests should be focused on a single exercise, issue, or conceptually cohesive change. Please refer to Exercism's [pull request guidelines](https://github.com/exercism/docs/blob/master/contributing/pull-request-guidelines.md).
38
+
39
+ Please follow the coding standards for Ballerina. (If there is a formatter for the track's language, add instructions for using it here.)
40
+
41
+ ### Verifying Your Change
42
+
43
+ Before submitting your pull request, you'll want to verify the changes in two ways:
44
+
45
+ * Run all the tests for the Ballerina exercises
46
+ * Run an Exercism-specific linter to verify the track
47
+
48
+ All the tests for Ballerina exercises can be run from the top level of the repo with
49
+
50
+ ```
51
+ # add this command
52
+ ```
53
+
54
+ For the Exercism-specific linting, please see [the documentation](https://github.com/exercism/docs/blob/master/language-tracks/configuration/linting.md).
55
+
56
+ ## Contributing a New Exercise
57
+
58
+ Please see the documentation about [adding new exercises](https://github.com/exercism/docs/blob/master/you-can-help/make-up-new-exercises.md).
59
+
60
+ Note that:
61
+
62
+ - Each exercise must stand on its own. Do not reference files outside the exercise directory. They will not be included when the user fetches the exercise.
63
+ - Exercises should use only the Ballerina core libraries.
64
+ - Exercises must conform to the Exercism-wide standards described in [the documentation](https://github.com/exercism/docs/tree/master/language-tracks/exercises).
65
+ - Each exercise should have a test suite, an example solution, a template file for the real implementation and ... (anything else that needs to go with each exercise for this track). The CI build expects files to be named using the following convention: (describe the Ballerina convention for naming the various files that make up an exercise).
66
+ - Please do not commit any configuration files or directories inside the exercise other than ...
67
+ - Be sure to add it to the appropriate place in the `config.json` file.
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+
3
+ LATEST=https://github.com/exercism/configlet/releases/latest
4
+
5
+ OS=$(
6
+ case $(uname) in
7
+ (Darwin*)
8
+ echo "mac";;
9
+ (Linux*)
10
+ echo "linux";;
11
+ (Windows*)
12
+ echo "windows";;
13
+ (*)
14
+ echo "linux";;
15
+ esac)
16
+
17
+ ARCH=$(
18
+ case $(uname -m) in
19
+ (*64*)
20
+ echo 64bit;;
21
+ (*686*)
22
+ echo 32bit;;
23
+ (*386*)
24
+ echo 32bit;;
25
+ (*)
26
+ echo 64bit;;
27
+ esac)
28
+
29
+ VERSION="$(curl --head --silent $LATEST | awk -v FS=/ '/Location:/{print $NF}' | tr -d '\r')"
30
+ URL=https://github.com/exercism/configlet/releases/download/$VERSION/configlet-$OS-${ARCH}.tgz
31
+
32
+ curl -s --location $URL | tar xz -C bin/
@@ -0,0 +1,11 @@
1
+ {
2
+ "track_id": "ballerina",
3
+ "language": "Ballerina",
4
+ "active": false,
5
+ "ignore_pattern": "[Ee]xample",
6
+ "solution_pattern": "[Ee]xample",
7
+ "test_pattern": "[Tt]est",
8
+ "foregone": [],
9
+ "exercises": null,
10
+ "deprecated": []
11
+ }
File without changes
@@ -0,0 +1,16 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,4 @@
1
+ {
2
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md",
3
+ "maintainers": []
4
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/tracks/c/config.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "language": "C",
3
3
  "active": true,
4
- "blurb": "",
4
+ "blurb": "C is a small, general-purpose, imperative programming language with a static type system, scopes, and structures. It's typically used as an alternative to assembly programming, such as in operating systems.",
5
5
  "exercises": [
6
6
  {
7
7
  "slug": "hello-world",
@@ -3,14 +3,18 @@
3
3
  "active": true,
4
4
  "blurb": "Kotlin is a pragmatic programming language for JVM and Android that combines OO and functional features and is focused on interoperability, safety, clarity and tooling support.",
5
5
  "solution_pattern": "reference",
6
+ "forgone": [],
6
7
  "exercises": [
7
8
  {
8
9
  "slug": "hello-world",
9
10
  "uuid": "58c16459-348a-4536-8228-43379174735e",
10
- "core": false,
11
+ "core": true,
11
12
  "unlocked_by": null,
12
13
  "difficulty": 1,
13
- "topics": null
14
+ "topics": [
15
+ "strings"
16
+ ],
17
+ "auto_approve": true
14
18
  },
15
19
  {
16
20
  "slug": "two-fer",
@@ -18,7 +22,21 @@
18
22
  "core": false,
19
23
  "unlocked_by": null,
20
24
  "difficulty": 2,
21
- "topics": null
25
+ "topics": [
26
+ "conditionals",
27
+ "strings"
28
+ ]
29
+ },
30
+ {
31
+ "slug": "leap",
32
+ "uuid": "639e59b6-84aa-4f13-9718-537606703c43",
33
+ "core": false,
34
+ "unlocked_by": null,
35
+ "difficulty": 2,
36
+ "topics": [
37
+ "control_flow_if_else_statements",
38
+ "integers"
39
+ ]
22
40
  },
23
41
  {
24
42
  "slug": "rna-transcription",
@@ -26,7 +44,11 @@
26
44
  "core": false,
27
45
  "unlocked_by": null,
28
46
  "difficulty": 2,
29
- "topics": null
47
+ "topics": [
48
+ "loops",
49
+ "maps",
50
+ "strings"
51
+ ]
30
52
  },
31
53
  {
32
54
  "slug": "pangram",
@@ -34,7 +56,11 @@
34
56
  "core": false,
35
57
  "unlocked_by": null,
36
58
  "difficulty": 3,
37
- "topics": null
59
+ "topics": [
60
+ "pattern_matching",
61
+ "regular_expressions",
62
+ "strings"
63
+ ]
38
64
  },
39
65
  {
40
66
  "slug": "hamming",
@@ -42,7 +68,11 @@
42
68
  "core": false,
43
69
  "unlocked_by": null,
44
70
  "difficulty": 3,
45
- "topics": null
71
+ "topics": [
72
+ "integers",
73
+ "loops",
74
+ "strings"
75
+ ]
46
76
  },
47
77
  {
48
78
  "slug": "gigasecond",
@@ -50,7 +80,11 @@
50
80
  "core": false,
51
81
  "unlocked_by": null,
52
82
  "difficulty": 3,
53
- "topics": null
83
+ "topics": [
84
+ "dates",
85
+ "integers",
86
+ "time"
87
+ ]
54
88
  },
55
89
  {
56
90
  "slug": "space-age",
@@ -58,7 +92,11 @@
58
92
  "core": false,
59
93
  "unlocked_by": null,
60
94
  "difficulty": 3,
61
- "topics": null
95
+ "topics": [
96
+ "conditionals",
97
+ "floating_point_numbers",
98
+ "mathematics"
99
+ ]
62
100
  },
63
101
  {
64
102
  "slug": "acronym",
@@ -66,7 +104,12 @@
66
104
  "core": false,
67
105
  "unlocked_by": null,
68
106
  "difficulty": 3,
69
- "topics": null
107
+ "topics": [
108
+ "loops",
109
+ "parsing",
110
+ "searching",
111
+ "strings"
112
+ ]
70
113
  },
71
114
  {
72
115
  "slug": "scrabble-score",
@@ -74,7 +117,13 @@
74
117
  "core": false,
75
118
  "unlocked_by": null,
76
119
  "difficulty": 3,
77
- "topics": null
120
+ "topics": [
121
+ "games",
122
+ "loops",
123
+ "pattern_matching",
124
+ "strings",
125
+ "transforming"
126
+ ]
78
127
  },
79
128
  {
80
129
  "slug": "raindrops",
@@ -82,7 +131,12 @@
82
131
  "core": false,
83
132
  "unlocked_by": null,
84
133
  "difficulty": 3,
85
- "topics": null
134
+ "topics": [
135
+ "conditionals",
136
+ "integers",
137
+ "mathematics",
138
+ "strings"
139
+ ]
86
140
  },
87
141
  {
88
142
  "slug": "difference-of-squares",
@@ -90,7 +144,11 @@
90
144
  "core": false,
91
145
  "unlocked_by": null,
92
146
  "difficulty": 3,
93
- "topics": null
147
+ "topics": [
148
+ "integers",
149
+ "loops",
150
+ "mathematics"
151
+ ]
94
152
  },
95
153
  {
96
154
  "slug": "secret-handshake",
@@ -98,7 +156,16 @@
98
156
  "core": false,
99
157
  "unlocked_by": null,
100
158
  "difficulty": 3,
101
- "topics": null
159
+ "topics": [
160
+ "bitwise_operations",
161
+ "conditionals",
162
+ "cryptography",
163
+ "enumerations",
164
+ "integers",
165
+ "loops",
166
+ "mathematics",
167
+ "transforming"
168
+ ]
102
169
  },
103
170
  {
104
171
  "slug": "perfect-numbers",
@@ -106,7 +173,13 @@
106
173
  "core": false,
107
174
  "unlocked_by": null,
108
175
  "difficulty": 3,
109
- "topics": null
176
+ "topics": [
177
+ "enumerations",
178
+ "exception_handling",
179
+ "filtering",
180
+ "integers",
181
+ "mathematics"
182
+ ]
110
183
  },
111
184
  {
112
185
  "slug": "sum-of-multiples",
@@ -115,9 +188,11 @@
115
188
  "unlocked_by": null,
116
189
  "difficulty": 4,
117
190
  "topics": [
118
- "collections",
119
- "lambdas",
120
- "ranges"
191
+ "arrays",
192
+ "conditionals",
193
+ "integers",
194
+ "loops",
195
+ "mathematics"
121
196
  ]
122
197
  },
123
198
  {
@@ -126,7 +201,14 @@
126
201
  "core": false,
127
202
  "unlocked_by": null,
128
203
  "difficulty": 4,
129
- "topics": null
204
+ "topics": [
205
+ "algorithms",
206
+ "booleans",
207
+ "loops",
208
+ "mathematics",
209
+ "strings",
210
+ "type_conversion"
211
+ ]
130
212
  },
131
213
  {
132
214
  "slug": "triangle",
@@ -134,7 +216,13 @@
134
216
  "core": false,
135
217
  "unlocked_by": null,
136
218
  "difficulty": 4,
137
- "topics": null
219
+ "topics": [
220
+ "conditionals",
221
+ "exception_handling",
222
+ "integers",
223
+ "mathematics",
224
+ "recursion"
225
+ ]
138
226
  },
139
227
  {
140
228
  "slug": "largest-series-product",
@@ -142,7 +230,13 @@
142
230
  "core": false,
143
231
  "unlocked_by": null,
144
232
  "difficulty": 4,
145
- "topics": null
233
+ "topics": [
234
+ "integers",
235
+ "loops",
236
+ "mathematics",
237
+ "strings",
238
+ "type_conversion"
239
+ ]
146
240
  },
147
241
  {
148
242
  "slug": "grains",
@@ -150,7 +244,9 @@
150
244
  "core": false,
151
245
  "unlocked_by": null,
152
246
  "difficulty": 4,
153
- "topics": null
247
+ "topics": [
248
+ "integers"
249
+ ]
154
250
  },
155
251
  {
156
252
  "slug": "sieve",
@@ -158,7 +254,13 @@
158
254
  "core": false,
159
255
  "unlocked_by": null,
160
256
  "difficulty": 4,
161
- "topics": null
257
+ "topics": [
258
+ "algorithms",
259
+ "integers",
260
+ "lists",
261
+ "loops",
262
+ "mathematics"
263
+ ]
162
264
  },
163
265
  {
164
266
  "slug": "collatz-conjecture",
@@ -166,7 +268,13 @@
166
268
  "core": false,
167
269
  "unlocked_by": null,
168
270
  "difficulty": 4,
169
- "topics": null
271
+ "topics": [
272
+ "conditionals",
273
+ "exception_handling",
274
+ "integers",
275
+ "mathematics",
276
+ "recursion"
277
+ ]
170
278
  },
171
279
  {
172
280
  "slug": "atbash-cipher",
@@ -174,7 +282,11 @@
174
282
  "core": false,
175
283
  "unlocked_by": null,
176
284
  "difficulty": 4,
177
- "topics": null
285
+ "topics": [
286
+ "cryptography",
287
+ "security",
288
+ "strings"
289
+ ]
178
290
  },
179
291
  {
180
292
  "slug": "nth-prime",
@@ -182,7 +294,13 @@
182
294
  "core": false,
183
295
  "unlocked_by": null,
184
296
  "difficulty": 4,
185
- "topics": null
297
+ "topics": [
298
+ "arrays",
299
+ "exception_handling",
300
+ "integers",
301
+ "lists",
302
+ "loops"
303
+ ]
186
304
  },
187
305
  {
188
306
  "slug": "saddle-points",
@@ -190,7 +308,14 @@
190
308
  "core": false,
191
309
  "unlocked_by": null,
192
310
  "difficulty": 4,
193
- "topics": null
311
+ "topics": [
312
+ "arrays",
313
+ "conditionals",
314
+ "exception_handling",
315
+ "integers",
316
+ "loops",
317
+ "mathematics"
318
+ ]
194
319
  },
195
320
  {
196
321
  "slug": "diamond",
@@ -198,7 +323,13 @@
198
323
  "core": false,
199
324
  "unlocked_by": null,
200
325
  "difficulty": 4,
201
- "topics": null
326
+ "topics": [
327
+ "arrays",
328
+ "lists",
329
+ "loops",
330
+ "strings",
331
+ "text_formatting"
332
+ ]
202
333
  },
203
334
  {
204
335
  "slug": "isogram",
@@ -206,7 +337,12 @@
206
337
  "core": false,
207
338
  "unlocked_by": null,
208
339
  "difficulty": 4,
209
- "topics": null
340
+ "topics": [
341
+ "conditionals",
342
+ "loops",
343
+ "parsing",
344
+ "strings"
345
+ ]
210
346
  },
211
347
  {
212
348
  "slug": "flatten-array",
@@ -214,7 +350,10 @@
214
350
  "core": false,
215
351
  "unlocked_by": null,
216
352
  "difficulty": 5,
217
- "topics": null
353
+ "topics": [
354
+ "stacks",
355
+ "strings"
356
+ ]
218
357
  },
219
358
  {
220
359
  "slug": "pig-latin",
@@ -222,7 +361,12 @@
222
361
  "core": false,
223
362
  "unlocked_by": null,
224
363
  "difficulty": 5,
225
- "topics": null
364
+ "topics": [
365
+ "arrays",
366
+ "lists",
367
+ "strings",
368
+ "transforming"
369
+ ]
226
370
  },
227
371
  {
228
372
  "slug": "phone-number",
@@ -230,7 +374,12 @@
230
374
  "core": false,
231
375
  "unlocked_by": null,
232
376
  "difficulty": 5,
233
- "topics": null
377
+ "topics": [
378
+ "conditionals",
379
+ "pattern_matching",
380
+ "regular_expressions",
381
+ "strings"
382
+ ]
234
383
  },
235
384
  {
236
385
  "slug": "nucleotide-count",
@@ -238,7 +387,15 @@
238
387
  "core": false,
239
388
  "unlocked_by": null,
240
389
  "difficulty": 5,
241
- "topics": null
390
+ "topics": [
391
+ "conditionals",
392
+ "exception_handling",
393
+ "integers",
394
+ "maps",
395
+ "parsing",
396
+ "searching",
397
+ "strings"
398
+ ]
242
399
  },
243
400
  {
244
401
  "slug": "word-count",
@@ -246,7 +403,13 @@
246
403
  "core": false,
247
404
  "unlocked_by": null,
248
405
  "difficulty": 5,
249
- "topics": null
406
+ "topics": [
407
+ "conditionals",
408
+ "integers",
409
+ "loops",
410
+ "maps",
411
+ "strings"
412
+ ]
250
413
  },
251
414
  {
252
415
  "slug": "spiral-matrix",
@@ -254,7 +417,13 @@
254
417
  "core": false,
255
418
  "unlocked_by": null,
256
419
  "difficulty": 5,
257
- "topics": null
420
+ "topics": [
421
+ "arrays",
422
+ "integers",
423
+ "loops",
424
+ "mathematics",
425
+ "matrices"
426
+ ]
258
427
  },
259
428
  {
260
429
  "slug": "robot-name",
@@ -262,7 +431,13 @@
262
431
  "core": false,
263
432
  "unlocked_by": null,
264
433
  "difficulty": 5,
265
- "topics": null
434
+ "topics": [
435
+ "pattern_matching",
436
+ "randomness",
437
+ "regular_expressions",
438
+ "strings",
439
+ "text_formatting"
440
+ ]
266
441
  },
267
442
  {
268
443
  "slug": "prime-factors",
@@ -270,7 +445,14 @@
270
445
  "core": false,
271
446
  "unlocked_by": null,
272
447
  "difficulty": 5,
273
- "topics": null
448
+ "topics": [
449
+ "arrays",
450
+ "conditionals",
451
+ "integers",
452
+ "lists",
453
+ "loops",
454
+ "mathematics"
455
+ ]
274
456
  },
275
457
  {
276
458
  "slug": "allergies",
@@ -278,7 +460,14 @@
278
460
  "core": false,
279
461
  "unlocked_by": null,
280
462
  "difficulty": 5,
281
- "topics": null
463
+ "topics": [
464
+ "booleans",
465
+ "conditionals",
466
+ "enumerations",
467
+ "integers",
468
+ "lists",
469
+ "loops"
470
+ ]
282
471
  },
283
472
  {
284
473
  "slug": "bob",
@@ -286,7 +475,11 @@
286
475
  "core": false,
287
476
  "unlocked_by": null,
288
477
  "difficulty": 5,
289
- "topics": null
478
+ "topics": [
479
+ "booleans",
480
+ "conditionals",
481
+ "strings"
482
+ ]
290
483
  },
291
484
  {
292
485
  "slug": "pascals-triangle",
@@ -294,7 +487,14 @@
294
487
  "core": false,
295
488
  "unlocked_by": null,
296
489
  "difficulty": 5,
297
- "topics": null
490
+ "topics": [
491
+ "algorithms",
492
+ "arrays",
493
+ "exception_handling",
494
+ "integers",
495
+ "mathematics",
496
+ "matrices"
497
+ ]
298
498
  },
299
499
  {
300
500
  "slug": "bracket-push",
@@ -302,7 +502,10 @@
302
502
  "core": false,
303
503
  "unlocked_by": null,
304
504
  "difficulty": 5,
305
- "topics": null
505
+ "topics": [
506
+ "stacks",
507
+ "strings"
508
+ ]
306
509
  },
307
510
  {
308
511
  "slug": "series",
@@ -310,7 +513,13 @@
310
513
  "core": false,
311
514
  "unlocked_by": null,
312
515
  "difficulty": 5,
313
- "topics": null
516
+ "topics": [
517
+ "conditionals",
518
+ "lists",
519
+ "loops",
520
+ "strings",
521
+ "type_conversion"
522
+ ]
314
523
  },
315
524
  {
316
525
  "slug": "rotational-cipher",
@@ -318,7 +527,23 @@
318
527
  "core": false,
319
528
  "unlocked_by": null,
320
529
  "difficulty": 5,
321
- "topics": null
530
+ "topics": [
531
+ "cryptography",
532
+ "integers",
533
+ "strings"
534
+ ]
535
+ },
536
+ {
537
+ "slug": "bank-account",
538
+ "uuid": "12e1d685-32be-4b2c-a40b-c68e5b60de1d",
539
+ "core": false,
540
+ "unlocked_by": null,
541
+ "difficulty": 6,
542
+ "topics": [
543
+ "concurrency",
544
+ "exception_handling",
545
+ "integers"
546
+ ]
322
547
  },
323
548
  {
324
549
  "slug": "roman-numerals",
@@ -326,7 +551,14 @@
326
551
  "core": false,
327
552
  "unlocked_by": null,
328
553
  "difficulty": 6,
329
- "topics": null
554
+ "topics": [
555
+ "integers",
556
+ "logic",
557
+ "loops",
558
+ "maps",
559
+ "mathematics",
560
+ "strings"
561
+ ]
330
562
  },
331
563
  {
332
564
  "slug": "beer-song",
@@ -334,7 +566,13 @@
334
566
  "core": false,
335
567
  "unlocked_by": null,
336
568
  "difficulty": 6,
337
- "topics": null
569
+ "topics": [
570
+ "conditionals",
571
+ "loops",
572
+ "strings",
573
+ "text_formatting",
574
+ "variables"
575
+ ]
338
576
  },
339
577
  {
340
578
  "slug": "etl",
@@ -342,7 +580,11 @@
342
580
  "core": false,
343
581
  "unlocked_by": null,
344
582
  "difficulty": 6,
345
- "topics": null
583
+ "topics": [
584
+ "lists",
585
+ "maps",
586
+ "transforming"
587
+ ]
346
588
  },
347
589
  {
348
590
  "slug": "linked-list",
@@ -350,7 +592,11 @@
350
592
  "core": false,
351
593
  "unlocked_by": null,
352
594
  "difficulty": 6,
353
- "topics": null
595
+ "topics": [
596
+ "algorithms",
597
+ "generics",
598
+ "lists"
599
+ ]
354
600
  },
355
601
  {
356
602
  "slug": "grade-school",
@@ -358,7 +604,13 @@
358
604
  "core": false,
359
605
  "unlocked_by": null,
360
606
  "difficulty": 6,
361
- "topics": null
607
+ "topics": [
608
+ "conditionals",
609
+ "lists",
610
+ "maps",
611
+ "sorting",
612
+ "strings"
613
+ ]
362
614
  },
363
615
  {
364
616
  "slug": "robot-simulator",
@@ -366,7 +618,12 @@
366
618
  "core": false,
367
619
  "unlocked_by": null,
368
620
  "difficulty": 6,
369
- "topics": null
621
+ "topics": [
622
+ "classes",
623
+ "enumerations",
624
+ "logic",
625
+ "loops"
626
+ ]
370
627
  },
371
628
  {
372
629
  "slug": "binary-search",
@@ -374,7 +631,12 @@
374
631
  "core": false,
375
632
  "unlocked_by": null,
376
633
  "difficulty": 6,
377
- "topics": null
634
+ "topics": [
635
+ "arrays",
636
+ "generics",
637
+ "recursion",
638
+ "searching"
639
+ ]
378
640
  },
379
641
  {
380
642
  "slug": "minesweeper",
@@ -382,7 +644,14 @@
382
644
  "core": false,
383
645
  "unlocked_by": null,
384
646
  "difficulty": 6,
385
- "topics": null
647
+ "topics": [
648
+ "conditionals",
649
+ "games",
650
+ "integers",
651
+ "lists",
652
+ "matrices",
653
+ "strings"
654
+ ]
386
655
  },
387
656
  {
388
657
  "slug": "all-your-base",
@@ -390,7 +659,14 @@
390
659
  "core": false,
391
660
  "unlocked_by": null,
392
661
  "difficulty": 6,
393
- "topics": null
662
+ "topics": [
663
+ "arrays",
664
+ "conditionals",
665
+ "exception_handling",
666
+ "integers",
667
+ "loops",
668
+ "mathematics"
669
+ ]
394
670
  },
395
671
  {
396
672
  "slug": "say",
@@ -398,7 +674,10 @@
398
674
  "core": false,
399
675
  "unlocked_by": null,
400
676
  "difficulty": 6,
401
- "topics": null
677
+ "topics": [
678
+ "strings",
679
+ "transforming"
680
+ ]
402
681
  },
403
682
  {
404
683
  "slug": "anagram",
@@ -406,7 +685,14 @@
406
685
  "core": false,
407
686
  "unlocked_by": null,
408
687
  "difficulty": 7,
409
- "topics": null
688
+ "topics": [
689
+ "arrays",
690
+ "conditionals",
691
+ "equality",
692
+ "lists",
693
+ "loops",
694
+ "strings"
695
+ ]
410
696
  },
411
697
  {
412
698
  "slug": "sublist",
@@ -414,7 +700,13 @@
414
700
  "core": false,
415
701
  "unlocked_by": null,
416
702
  "difficulty": 7,
417
- "topics": null
703
+ "topics": [
704
+ "enumeration",
705
+ "generics",
706
+ "lists",
707
+ "loops",
708
+ "searching"
709
+ ]
418
710
  },
419
711
  {
420
712
  "slug": "meetup",
@@ -422,7 +714,12 @@
422
714
  "core": false,
423
715
  "unlocked_by": null,
424
716
  "difficulty": 7,
425
- "topics": null
717
+ "topics": [
718
+ "conditionals",
719
+ "dates",
720
+ "enumerations",
721
+ "loops"
722
+ ]
426
723
  },
427
724
  {
428
725
  "slug": "clock",
@@ -430,7 +727,28 @@
430
727
  "core": false,
431
728
  "unlocked_by": null,
432
729
  "difficulty": 7,
433
- "topics": null
730
+ "topics": [
731
+ "equality",
732
+ "integers",
733
+ "logic",
734
+ "object_oriented_programming",
735
+ "strings",
736
+ "time"
737
+ ]
738
+ },
739
+ {
740
+ "slug": "list-ops",
741
+ "uuid": "34f1d5bf-f31f-415e-9905-4d48e6205d28",
742
+ "core": false,
743
+ "unlocked_by": null,
744
+ "difficulty": 8,
745
+ "topics": [
746
+ "filtering",
747
+ "functional_programming",
748
+ "generics",
749
+ "lists",
750
+ "loops"
751
+ ]
434
752
  },
435
753
  {
436
754
  "slug": "simple-cipher",
@@ -438,7 +756,14 @@
438
756
  "core": false,
439
757
  "unlocked_by": null,
440
758
  "difficulty": 8,
441
- "topics": null
759
+ "topics": [
760
+ "cryptography",
761
+ "exception_handling",
762
+ "mathematics",
763
+ "randomness",
764
+ "security",
765
+ "strings"
766
+ ]
442
767
  },
443
768
  {
444
769
  "slug": "complex-numbers",
@@ -446,7 +771,10 @@
446
771
  "core": false,
447
772
  "unlocked_by": null,
448
773
  "difficulty": 8,
449
- "topics": null
774
+ "topics": [
775
+ "floating_point_numbers",
776
+ "mathematics"
777
+ ]
450
778
  },
451
779
  {
452
780
  "slug": "change",
@@ -454,7 +782,12 @@
454
782
  "core": false,
455
783
  "unlocked_by": null,
456
784
  "difficulty": 8,
457
- "topics": null
785
+ "topics": [
786
+ "algorithms",
787
+ "exception_handling",
788
+ "integers",
789
+ "lists"
790
+ ]
458
791
  },
459
792
  {
460
793
  "slug": "forth",
@@ -462,7 +795,14 @@
462
795
  "core": false,
463
796
  "unlocked_by": null,
464
797
  "difficulty": 9,
465
- "topics": null
798
+ "topics": [
799
+ "exception_handling",
800
+ "lists",
801
+ "logic",
802
+ "parsing",
803
+ "stacks",
804
+ "strings"
805
+ ]
466
806
  },
467
807
  {
468
808
  "slug": "react",
@@ -477,32 +817,6 @@
477
817
  "reactive_programming"
478
818
  ]
479
819
  },
480
- {
481
- "slug": "leap",
482
- "uuid": "639e59b6-84aa-4f13-9718-537606703c43",
483
- "core": false,
484
- "unlocked_by": null,
485
- "difficulty": 1,
486
- "topics": null
487
- },
488
- {
489
- "slug": "list-ops",
490
- "uuid": "34f1d5bf-f31f-415e-9905-4d48e6205d28",
491
- "core": false,
492
- "unlocked_by": null,
493
- "difficulty": 1,
494
- "topics": null
495
- },
496
- {
497
- "slug": "bank-account",
498
- "uuid": "12e1d685-32be-4b2c-a40b-c68e5b60de1d",
499
- "core": false,
500
- "unlocked_by": null,
501
- "difficulty": 1,
502
- "topics": [
503
- "concurrency"
504
- ]
505
- },
506
820
  {
507
821
  "slug": "accumulate",
508
822
  "uuid": "86015770-603b-44cf-aedf-f2a7cf79c841",