trackler 2.1.0.32 → 2.1.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +1 -24
  3. data/fixtures/tracks/animal/config.json +6 -2
  4. data/fixtures/tracks/fake/config.json +0 -5
  5. data/fixtures/tracks/fruit/config.json +16 -4
  6. data/fixtures/tracks/jewels/config.json +6 -2
  7. data/fixtures/tracks/shoes/config.json +6 -2
  8. data/fixtures/tracks/snowflake/config.json +21 -5
  9. data/lib/trackler/track.rb +0 -11
  10. data/lib/trackler/version.rb +1 -1
  11. data/tracks/c/config.json +281 -245
  12. data/tracks/c/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  13. data/tracks/ceylon/config.json +0 -5
  14. data/tracks/ceylon/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  15. data/tracks/cpp/config.json +9 -13
  16. data/tracks/cpp/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  17. data/tracks/cpp/exercises/grade-school/grade_school_test.cpp +1 -0
  18. data/tracks/cpp/exercises/nucleotide-count/nucleotide_count_test.cpp +1 -0
  19. data/tracks/crystal/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  20. data/tracks/csharp/config.json +4 -9
  21. data/tracks/csharp/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  22. data/tracks/delphi/config.json +31 -36
  23. data/tracks/delphi/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  24. data/tracks/ecmascript/config.json +65 -7
  25. data/tracks/ecmascript/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  26. data/tracks/elixir/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  27. data/tracks/elm/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  28. data/tracks/erlang/_test/bootstrap.sh +3 -5
  29. data/tracks/erlang/config.json +108 -40
  30. data/tracks/erlang/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  31. data/tracks/factor/config.json +6 -14
  32. data/tracks/factor/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  33. data/tracks/fsharp/config.json +1 -1
  34. data/tracks/fsharp/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  35. data/tracks/go/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  36. data/tracks/haskell/config.json +0 -4
  37. data/tracks/haskell/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  38. data/tracks/idris/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  39. data/tracks/java/{TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  40. data/tracks/java/exercises/isogram/HINT.md +10 -0
  41. data/tracks/javascript/config.json +57 -6
  42. data/tracks/javascript/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  43. data/tracks/julia/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  44. data/tracks/kotlin/{TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  45. data/tracks/lfe/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  46. data/tracks/lisp/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  47. data/tracks/lua/config.json +684 -611
  48. data/tracks/lua/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  49. data/tracks/objective-c/config.json +235 -241
  50. data/tracks/objective-c/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  51. data/tracks/ocaml/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  52. data/tracks/perl6/config.json +70 -32
  53. data/tracks/php/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  54. data/tracks/r/config.json +72 -24
  55. data/tracks/r/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  56. data/tracks/racket/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  57. data/tracks/ruby/exercises/bob/.meta/.version +1 -0
  58. data/tracks/ruby/exercises/bob/.meta/generator/bob_case.rb +9 -0
  59. data/tracks/ruby/exercises/bob/.meta/solutions/bob.rb +4 -0
  60. data/tracks/ruby/exercises/bob/bob_test.rb +95 -50
  61. data/tracks/rust/config.json +0 -5
  62. data/tracks/rust/{exercises/TRACK_HINTS.md → docs/EXERCISE_README_INSERT.md} +0 -0
  63. data/tracks/scala/config.json +758 -758
  64. data/tracks/scala/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  65. data/tracks/scheme/docs/EXERCISE_README_INSERT.md +0 -0
  66. data/tracks/swift/config.json +468 -478
  67. data/tracks/swift/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  68. data/tracks/typescript/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  69. data/tracks/vbnet/config.json +21 -7
  70. metadata +37 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5ad44a7e68d17060f904305997256916000928c
4
- data.tar.gz: 262c51966c2eba2d2870792badd92f8f2f9ade76
3
+ metadata.gz: cd2031328b448784bbbb25c3474429115b197b0c
4
+ data.tar.gz: ce0d2fa5e4a4eb542e8d38d9490be58cacd9b063
5
5
  SHA512:
6
- metadata.gz: 001fbb9c03793117bef7a7bad3c82ca75fe2ea41562b479a095dc505383e65edc6784a78de809a667ecd33c220f8789aa5f9a2889ca3c512682da5b0ff973545
7
- data.tar.gz: 48e03ff57c34fa14be4bbef05786bcaf5928cc39feac666ce3c8139260bdbe9492e552f183c35a0829bd00f84b39d4d99629bf8196d014f72f768e269dc141c1
6
+ metadata.gz: 45ceeca0c9754f51c01f619ac22a7efc4af9c0d97945fee6c01f936d2d44561feaa012adb5b2133aaa4817f0578a20fa86b77182b4d662ff85b31f03cf6f99fa
7
+ data.tar.gz: c459730635818484f75dfd170b5c4a96871edc6039330fd1e742a2c1adb549f3f309855d03157dd1a4bb27efa0569601bf49321ad55cdad1cdb292118f7d7e33
@@ -335,30 +335,7 @@ scenarios in this guide.
335
335
 
336
336
  ### Pull Request Guidelines
337
337
 
338
- 1. Put the name of the exercise in the subject line of the commit.
339
- E.g. `hamming: Add test case for strands of unequal length`
340
- 1. The subject line should be a one-sentence summary, and should not include
341
- the word *and* (explicitly or implied).
342
- 1. Any extra detail should be provided in the body of the PR.
343
- 1. Don't submit unrelated changes in the same pull request.
344
- 1. If you had a bit of churn in the process of getting the change right,
345
- squash your commits.
346
- 1. If you had to refactor in order to add your change, then we'd love to
347
- see two commits: First the refactoring, then the added behavior. It's
348
- fine to put this in the same pull request, unless the refactoring is
349
- huge and would make it hard to review both at the same time.
350
- 1. If you are referencing another issue or pull-request, for instance
351
- *closes #XXX* or *see #XXX*, please include the reference in the body of the PR,
352
- rather than the subject line. This is simply because the subject line doesn't
353
- support markdown, and so these don't get turned into clickable links. It makes
354
- it harder to follow and to go look at the related issue or PR.
355
- 1. Please also refer to the guidelines for [commit messages](#commit-messages).
356
-
357
- Once you've submitted a pull request, one or more of the track maintainers
358
- will review it. Some tracks are less active and might not have someone
359
- checking in every day. If you don't get a response within a couple of days,
360
- feel free to ping us in the [support
361
- chat](https://gitter.im/exercism/support).
338
+ See the [pull request guidelines](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/pull-request-guidelines.md) in the docs repository.
362
339
 
363
340
  ### Exercise Versioning
364
341
 
@@ -5,8 +5,12 @@
5
5
  "active": true,
6
6
  "test_pattern": "a.*animal",
7
7
  "ignore_pattern": "[^_]example",
8
- "problems": [
9
- "dog"
8
+ "exercises": [
9
+ {
10
+ "slug": "dog",
11
+ "difficulty": 1,
12
+ "topics": []
13
+ }
10
14
  ],
11
15
  "deprecated": [],
12
16
  "foregone": [
@@ -5,11 +5,6 @@
5
5
  "image": "fake.png",
6
6
  "checklist_issue": 5,
7
7
  "active": true,
8
- "problems": [
9
- "good",
10
- "bad",
11
- "ugly"
12
- ],
13
8
  "exercises": [
14
9
  {
15
10
  "slug": "hello-world" ,
@@ -6,10 +6,22 @@
6
6
  "active": true,
7
7
  "test_pattern": "\\.tst$",
8
8
  "gitter": "xfruit",
9
- "problems": [
10
- "apple",
11
- "banana",
12
- "cherry"
9
+ "exercises": [
10
+ {
11
+ "slug": "apple",
12
+ "difficulty": 1,
13
+ "topics": []
14
+ },
15
+ {
16
+ "slug": "banana",
17
+ "difficulty": 1,
18
+ "topics": []
19
+ },
20
+ {
21
+ "slug": "cherry",
22
+ "difficulty": 1,
23
+ "topics": []
24
+ }
13
25
  ],
14
26
  "deprecated": [
15
27
  "four"
@@ -3,8 +3,12 @@
3
3
  "language": "Fancy Stones",
4
4
  "repository": "https://github.com/exercism/xjewels",
5
5
  "active": true,
6
- "problems": [
7
- "hello-world"
6
+ "exercises": [
7
+ {
8
+ "slug": "hello-world",
9
+ "difficulty": 1,
10
+ "topics": []
11
+ }
8
12
  ],
9
13
  "deprecated": [],
10
14
  "foregone": []
@@ -3,8 +3,12 @@
3
3
  "language": "Shoes & Boots",
4
4
  "repository": "https://github.com/exercism/xshoes",
5
5
  "active": false,
6
- "problems": [
7
- "hello-world"
6
+ "exercises": [
7
+ {
8
+ "slug": "hello-world",
9
+ "difficulty": 1,
10
+ "topics": []
11
+ }
8
12
  ],
9
13
  "deprecated": [],
10
14
  "foregone": []
@@ -4,11 +4,27 @@
4
4
  "repository": "https://example.com/exercism/xsnowflake",
5
5
  "active": true,
6
6
  "test_pattern": "\\.tst$",
7
- "problems": [
8
- "apple",
9
- "banana",
10
- "cherry",
11
- "snowflake-only"
7
+ "exercises": [
8
+ {
9
+ "slug": "apple",
10
+ "difficulty": 1,
11
+ "topics": []
12
+ },
13
+ {
14
+ "slug": "banana",
15
+ "difficulty": 1,
16
+ "topics": []
17
+ },
18
+ {
19
+ "slug": "cherry",
20
+ "difficulty": 1,
21
+ "topics": []
22
+ },
23
+ {
24
+ "slug": "snowflake-only",
25
+ "difficulty": 1,
26
+ "topics": []
27
+ }
12
28
  ],
13
29
  "deprecated": [
14
30
  ],
@@ -136,21 +136,10 @@ module Trackler
136
136
  filepaths.find(-> { '' }) { |filepath| File.exist? filepath }
137
137
  end
138
138
 
139
- # The slugs for the problems that are currently in the track.
140
- # We deprecated the old array of problem slugs in favor of an array
141
- # containing richer metadata about a given exercise.
142
139
  def active_slugs
143
- __active_slugs__.empty? ? __active_slugs_deprecated_key__ : __active_slugs__
144
- end
145
-
146
- def __active_slugs__
147
140
  (config["exercises"] || []).map { |ex| ex["slug"] }
148
141
  end
149
142
 
150
- def __active_slugs_deprecated_key__
151
- config["problems"] || []
152
- end
153
-
154
143
  def foregone_slugs
155
144
  config["foregone"] || []
156
145
  end
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.1.0.32"
2
+ VERSION = "2.1.0.33"
3
3
  end
data/tracks/c/config.json CHANGED
@@ -4,290 +4,326 @@
4
4
  "repository": "https://github.com/exercism/xc",
5
5
  "checklist_issue": 8,
6
6
  "active": false,
7
- "exercises": [{
8
- "slug": "hello-world",
9
- "difficulty": 1,
10
- "topics": [
11
- "control-flow (if-statements)",
12
- "optional values",
13
- "text formatting"
14
- ]
15
- }, {
16
- "difficulty": 5,
17
- "slug": "anagram",
18
- "topics": [
19
- "strings",
20
- "filtering",
21
- "structs",
22
- "memory management"
23
- ]
24
- }, {
25
- "difficulty": 1,
26
- "slug": "leap",
27
- "topics": [
28
- "logic",
29
- "control-flow (if-else statements)"
30
- ]
31
- }, {
32
- "difficulty": 1,
33
- "slug": "gigasecond",
34
- "topics": [
35
- "dates"
36
- ]
37
- }, {
38
- "difficulty": 2,
39
- "slug": "hamming",
40
- "topics": [
41
- "arrays",
42
- "strings",
43
- "control-flow (loops)"
44
- ]
45
- }, {
46
- "difficulty": 2,
47
- "slug": "raindrops",
48
- "topics": [
49
- "strings",
50
- "control-flow (if-else statements)"
51
- ]
52
- }, {
53
- "difficulty": 10,
54
- "slug": "bob",
55
- "topics": [
56
- "strings",
57
- "control-flow (if-else statements)"
58
- ]
59
- }, {
60
- "difficulty": 1,
61
- "slug": "grains",
62
- "topics": [
63
- "control-flow (loops)",
64
- "bitwise operations",
65
- "performance optimizations"
66
- ]
67
- }, {
68
- "difficulty": 5,
69
- "slug": "largest-series-product",
70
- "topics": [
71
- "control-flow (loops)",
72
- "strings",
73
- "performance optimizations"
74
- ]
75
- }, {
76
- "difficulty": 3,
77
- "slug": "pangram",
78
- "topics": [
79
- "strings",
80
- "control-flow (if-else statements)",
81
- "control-flow (loops)"
82
- ]
83
- }, {
84
- "difficulty": 4,
85
- "slug": "nth-prime",
86
- "topics": [
87
- "control-flow (if-else statements)",
88
- "control-flow (loops)",
89
- "performance optimizations"
90
- ]
91
- }, {
92
- "difficulty": 2,
93
- "slug": "beer-song",
94
- "topics": [
95
- "strings",
96
- "control-flow (if-else statements)",
97
- "control-flow (loops)"
98
- ]
99
- }, {
100
- "difficulty": 2,
101
- "slug": "rna-transcription",
102
- "topics": [
103
- "strings",
104
- "control-flow (case statements)",
105
- "control-flow (loops)"
106
- ]
107
- }, {
108
- "difficulty": 1,
109
- "slug": "difference-of-squares",
110
- "topics": [
111
- "control-flow (loops)"
112
- ]
113
- }, {
114
- "difficulty": 4,
115
- "slug": "sum-of-multiples",
116
- "topics": [
117
- "control-flow (case statements)",
118
- "control-flow (loops)"
119
- ]
120
- }, {
121
- "difficulty": 2,
122
- "slug": "binary-search",
123
- "topics": [
124
- "arrays",
125
- "control-flow (if-else statements)",
126
- "control-flow (loops)",
127
- "searching"
128
- ]
129
- }, {
130
- "difficulty": 3,
131
- "slug": "roman-numerals",
132
- "topics": [
133
- "arrays",
134
- "memory management",
135
- "structs",
136
- "control-flow (loops)",
137
- "strings"
138
- ]
139
- }, {
140
- "difficulty": 3,
141
- "slug": "word-count",
142
- "topics": [
143
- "strings",
144
- "filtering",
145
- "structs",
146
- "memory management"
147
- ]
148
- }, {
149
- "difficulty": 4,
150
- "slug": "allergies",
151
- "topics": [
152
- "control-flow (if-statements)",
153
- "control-flow (loops)",
154
- "structs",
155
- "memory management"
156
- ]
157
- }, {
158
- "difficulty": 5,
159
- "slug": "atbash-cipher",
160
- "topics": [
161
- "control-flow (loops)",
162
- "control-flow (if-else statements)",
163
- "strings"
164
- ]
165
- }, {
166
- "difficulty": 4,
167
- "slug": "phone-number",
168
- "topics": [
169
- "strings",
170
- "memory management",
171
- "control-flow (loops)",
172
- "control-flow (if-else statements)"
173
- ]
174
- }, {
175
- "difficulty": 2,
176
- "slug": "clock",
177
- "topics": [
7
+ "exercises": [
8
+ {
9
+ "slug": "hello-world",
10
+ "difficulty": 1,
11
+ "topics": [
12
+ "control-flow (if-statements)",
13
+ "optional values",
14
+ "text formatting"
15
+ ]
16
+ },
17
+ {
18
+ "difficulty": 5,
19
+ "slug": "anagram",
20
+ "topics": [
21
+ "strings",
22
+ "filtering",
23
+ "structs",
24
+ "memory management"
25
+ ]
26
+ },
27
+ {
28
+ "difficulty": 1,
29
+ "slug": "leap",
30
+ "topics": [
31
+ "logic",
32
+ "control-flow (if-else statements)"
33
+ ]
34
+ },
35
+ {
36
+ "difficulty": 1,
37
+ "slug": "gigasecond",
38
+ "topics": [
39
+ "dates"
40
+ ]
41
+ },
42
+ {
43
+ "difficulty": 2,
44
+ "slug": "hamming",
45
+ "topics": [
46
+ "arrays",
47
+ "strings",
48
+ "control-flow (loops)"
49
+ ]
50
+ },
51
+ {
52
+ "difficulty": 2,
53
+ "slug": "raindrops",
54
+ "topics": [
55
+ "strings",
56
+ "control-flow (if-else statements)"
57
+ ]
58
+ },
59
+ {
60
+ "difficulty": 10,
61
+ "slug": "bob",
62
+ "topics": [
63
+ "strings",
64
+ "control-flow (if-else statements)"
65
+ ]
66
+ },
67
+ {
68
+ "difficulty": 1,
69
+ "slug": "grains",
70
+ "topics": [
71
+ "control-flow (loops)",
72
+ "bitwise operations",
73
+ "performance optimizations"
74
+ ]
75
+ },
76
+ {
77
+ "difficulty": 5,
78
+ "slug": "largest-series-product",
79
+ "topics": [
80
+ "control-flow (loops)",
81
+ "strings",
82
+ "performance optimizations"
83
+ ]
84
+ },
85
+ {
86
+ "difficulty": 3,
87
+ "slug": "pangram",
88
+ "topics": [
89
+ "strings",
90
+ "control-flow (if-else statements)",
91
+ "control-flow (loops)"
92
+ ]
93
+ },
94
+ {
95
+ "difficulty": 4,
96
+ "slug": "nth-prime",
97
+ "topics": [
98
+ "control-flow (if-else statements)",
99
+ "control-flow (loops)",
100
+ "performance optimizations"
101
+ ]
102
+ },
103
+ {
104
+ "difficulty": 2,
105
+ "slug": "beer-song",
106
+ "topics": [
107
+ "strings",
108
+ "control-flow (if-else statements)",
109
+ "control-flow (loops)"
110
+ ]
111
+ },
112
+ {
113
+ "difficulty": 2,
114
+ "slug": "rna-transcription",
115
+ "topics": [
116
+ "strings",
117
+ "control-flow (case statements)",
118
+ "control-flow (loops)"
119
+ ]
120
+ },
121
+ {
122
+ "difficulty": 1,
123
+ "slug": "difference-of-squares",
124
+ "topics": [
125
+ "control-flow (loops)"
126
+ ]
127
+ },
128
+ {
129
+ "difficulty": 4,
130
+ "slug": "sum-of-multiples",
131
+ "topics": [
132
+ "control-flow (case statements)",
133
+ "control-flow (loops)"
134
+ ]
135
+ },
136
+ {
137
+ "difficulty": 2,
138
+ "slug": "binary-search",
139
+ "topics": [
140
+ "arrays",
141
+ "control-flow (if-else statements)",
142
+ "control-flow (loops)",
143
+ "searching"
144
+ ]
145
+ },
146
+ {
147
+ "difficulty": 3,
148
+ "slug": "roman-numerals",
149
+ "topics": [
150
+ "arrays",
151
+ "memory management",
152
+ "structs",
153
+ "control-flow (loops)",
154
+ "strings"
155
+ ]
156
+ },
157
+ {
158
+ "difficulty": 3,
159
+ "slug": "word-count",
160
+ "topics": [
161
+ "strings",
162
+ "filtering",
163
+ "structs",
164
+ "memory management"
165
+ ]
166
+ },
167
+ {
168
+ "difficulty": 4,
169
+ "slug": "allergies",
170
+ "topics": [
171
+ "control-flow (if-statements)",
172
+ "control-flow (loops)",
173
+ "structs",
174
+ "memory management"
175
+ ]
176
+ },
177
+ {
178
+ "difficulty": 5,
179
+ "slug": "atbash-cipher",
180
+ "topics": [
181
+ "control-flow (loops)",
182
+ "control-flow (if-else statements)",
183
+ "strings"
184
+ ]
185
+ },
186
+ {
187
+ "difficulty": 4,
188
+ "slug": "phone-number",
189
+ "topics": [
190
+ "strings",
191
+ "memory management",
192
+ "control-flow (loops)",
193
+ "control-flow (if-else statements)"
194
+ ]
195
+ },
196
+ {
197
+ "difficulty": 2,
198
+ "slug": "clock",
199
+ "topics": [
178
200
  "control-flow (if-statements)",
179
201
  "strings",
180
202
  "text formatting",
181
203
  "preprocessor (x-macros in test)"
182
- ]
183
- }, {
184
- "difficulty": 2,
185
- "slug": "sieve",
186
- "topics": [
187
- "control-flow (if-statements)",
188
- "memory management"
189
- ]
190
- }, {
191
- "difficulty": 2,
192
- "slug": "series",
193
- "topics": [
204
+ ]
205
+ },
206
+ {
207
+ "difficulty": 2,
208
+ "slug": "sieve",
209
+ "topics": [
210
+ "control-flow (if-statements)",
211
+ "memory management"
212
+ ]
213
+ },
214
+ {
215
+ "difficulty": 2,
216
+ "slug": "series",
217
+ "topics": [
194
218
  "control-flow (if-statements)",
195
219
  "strings",
196
220
  "text formatting",
197
221
  "memory management"
198
- ]
199
- }, {
200
- "difficulty": 4,
201
- "slug": "meetup",
202
- "topics": [
222
+ ]
223
+ },
224
+ {
225
+ "difficulty": 4,
226
+ "slug": "meetup",
227
+ "topics": [
203
228
  "control-flow (if-statements)",
204
229
  "strings",
205
230
  "structs",
206
231
  "time functions",
207
232
  "preprocessor (x-macros in test)"
208
- ]
209
- }, {
210
- "difficulty": 2,
211
- "slug": "nucleotide-count",
212
- "topics": [
233
+ ]
234
+ },
235
+ {
236
+ "difficulty": 2,
237
+ "slug": "nucleotide-count",
238
+ "topics": [
213
239
  "control-flow (loops, switch, if-statements)",
214
240
  "strings",
215
241
  "text formatting",
216
242
  "memory management"
217
- ]
218
- }, {
219
- "difficulty": 2,
220
- "slug": "robot-simulator",
221
- "topics": [
243
+ ]
244
+ },
245
+ {
246
+ "difficulty": 2,
247
+ "slug": "robot-simulator",
248
+ "topics": [
222
249
  "strings",
223
250
  "control-flow (if-statements)",
224
251
  "structs",
225
252
  "variable argument lists",
226
253
  "pointers"
227
- ]
228
- }, {
229
- "difficulty": 1,
230
- "slug": "triangle",
231
- "topics": [
254
+ ]
255
+ },
256
+ {
257
+ "difficulty": 1,
258
+ "slug": "triangle",
259
+ "topics": [
232
260
  "control-flow (if-else statements)",
233
261
  "Booleans",
234
262
  "Structs",
235
263
  "Mathematics"
236
- ]
237
- }, {
238
- "difficulty": 1,
239
- "slug": "pascals-triangle",
240
- "topics" : [
241
- "control-flow (if-else statements)",
242
- "memory management",
243
- "Mathematics"
244
- ]
245
- }, {
246
- "difficulty": 1,
247
- "slug": "perfect-numbers",
248
- "topics" : [
249
- "control-flow (if-else statements)",
250
- "Mathematics"
251
- ]
252
- }, {
253
- "difficulty": 1,
254
- "slug": "binary",
255
- "topics": [
264
+ ]
265
+ },
266
+ {
267
+ "difficulty": 1,
268
+ "slug": "pascals-triangle",
269
+ "topics": [
270
+ "control-flow (if-else statements)",
271
+ "memory management",
272
+ "Mathematics"
273
+ ]
274
+ },
275
+ {
276
+ "difficulty": 1,
277
+ "slug": "perfect-numbers",
278
+ "topics": [
279
+ "control-flow (if-else statements)",
280
+ "Mathematics"
281
+ ]
282
+ },
283
+ {
284
+ "difficulty": 1,
285
+ "slug": "binary",
286
+ "topics": [
256
287
  "control-flow (loops)",
257
288
  "control-flow (if-statements)"
258
- ]
259
- },{
260
- "difficulty": 2,
261
- "slug": "palindrome-products",
262
- "topics": [
289
+ ]
290
+ },
291
+ {
292
+ "difficulty": 2,
293
+ "slug": "palindrome-products",
294
+ "topics": [
263
295
  "strings",
264
296
  "structs",
265
297
  "pointers",
266
298
  "Functions"
267
- ]
268
- }, {
269
- "difficulty": 4,
270
- "slug": "scrabble-score",
271
- "topics": [
299
+ ]
300
+ },
301
+ {
302
+ "difficulty": 4,
303
+ "slug": "scrabble-score",
304
+ "topics": [
272
305
  "structs",
273
306
  "pointers",
274
307
  "strings",
275
308
  "searching"
276
- ]
277
- }, {
278
- "difficulty": 1,
279
- "slug": "space-age",
280
- "topics": [
309
+ ]
310
+ },
311
+ {
312
+ "difficulty": 1,
313
+ "slug": "space-age",
314
+ "topics": [
281
315
  "Functions"
282
- ]
283
- }, {
284
- "difficulty": 10,
285
- "slug": "react",
286
- "topics": [
316
+ ]
317
+ },
318
+ {
319
+ "difficulty": 10,
320
+ "slug": "react",
321
+ "topics": [
287
322
  "memory management",
288
323
  "Functions"
289
- ]
290
- }],
324
+ ]
325
+ }
326
+ ],
291
327
  "deprecated": [
292
328
 
293
329
  ],