trackler 2.2.1.164 → 2.2.1.165

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/exercises/binary-search-tree/README.md +39 -0
  4. data/tracks/c/exercises/bracket-push/README.md +39 -0
  5. data/tracks/c/exercises/crypto-square/README.md +39 -0
  6. data/tracks/c/exercises/diamond/README.md +39 -0
  7. data/tracks/c/exercises/etl/README.md +39 -0
  8. data/tracks/c/exercises/luhn/README.md +39 -0
  9. data/tracks/c/exercises/minesweeper/README.md +35 -0
  10. data/tracks/c/exercises/pig-latin/README.md +43 -4
  11. data/tracks/c/exercises/prime-factors/README.md +39 -0
  12. data/tracks/c/exercises/rna-transcription/README.md +1 -1
  13. data/tracks/c/exercises/run-length-encoding/README.md +39 -0
  14. data/tracks/c/exercises/say/README.md +39 -0
  15. data/tracks/c/exercises/secret-handshake/README.md +39 -0
  16. data/tracks/c/exercises/two-fer/README.md +39 -0
  17. data/tracks/c/exercises/wordy/README.md +39 -0
  18. data/tracks/cpp/config.json +36 -36
  19. data/tracks/cpp/docs/ABOUT.md +1 -1
  20. data/tracks/java/exercises/luhn/.meta/version +1 -0
  21. data/tracks/java/exercises/luhn/src/test/java/LuhnValidatorTest.java +35 -24
  22. data/tracks/javascript/config.json +1 -1
  23. data/tracks/javascript/exercises/nth-prime/example.js +5 -1
  24. data/tracks/javascript/exercises/nth-prime/nth-prime.spec.js +8 -0
  25. data/tracks/kotlin/config.json +60 -60
  26. data/tracks/kotlin/exercises/binary-search/.meta/version +1 -1
  27. data/tracks/kotlin/exercises/flatten-array/.meta/version +1 -1
  28. data/tracks/kotlin/exercises/isogram/.meta/version +1 -1
  29. data/tracks/kotlin/exercises/minesweeper/.meta/version +1 -1
  30. data/tracks/kotlin/exercises/nucleotide-count/.meta/version +1 -1
  31. data/tracks/kotlin/exercises/pig-latin/.meta/version +1 -1
  32. data/tracks/kotlin/exercises/prime-factors/.meta/version +1 -1
  33. data/tracks/kotlin/exercises/spiral-matrix/.meta/version +1 -1
  34. data/tracks/kotlin/exercises/word-count/.meta/version +1 -1
  35. data/tracks/powershell/exercises/hamming/HammingDifference.example.ps1 +12 -2
  36. data/tracks/powershell/exercises/hamming/HammingDifference.ps1 +1 -12
  37. data/tracks/python/exercises/simple-cipher/example.py +11 -15
  38. data/tracks/python/exercises/simple-cipher/simple_cipher.py +0 -5
  39. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +69 -70
  40. data/tracks/reasonml/bin/new-exercise.sh +11 -0
  41. data/tracks/reasonml/config.json +11 -0
  42. data/tracks/reasonml/exercises/anagram/__tests__/Anagram_test.re +44 -0
  43. data/tracks/reasonml/exercises/anagram/bsconfig.json +30 -0
  44. data/tracks/reasonml/exercises/anagram/package.json +20 -0
  45. data/tracks/reasonml/exercises/anagram/src/Example.re +26 -0
  46. data/tracks/reasonml/template/bsconfig.json +30 -0
  47. data/tracks/reasonml/template/package.json +20 -0
  48. data/tracks/reasonml/template/src/Example.re +0 -0
  49. metadata +11 -2
@@ -12,6 +12,6 @@ Key Benefits:
12
12
  - **Direct map to hardware:** of instructions and fundamental data types
13
13
  - **Zero-overhead abstraction:** Classes with constructors and destructors, inheritance, generic programming, functional programming techniques
14
14
 
15
- The standard for C++ is maintained by the International Organization for Standardization (ISO), and the current version of C++ as of December 2014 is C++14 (named not as the 14th version of C++, but rather signifying that the standard was ratified in 2014).
15
+ The standard for C++ is maintained by the International Organization for Standardization (ISO), and the current version of C++ as of June 2018 is C++17 (named not as the 17th version of C++, but rather signifying that the standard was ratified in 2017).
16
16
 
17
17
  The best thing about C++ is that it runs on everything from embedded processors with very limited resources to the largest mainframe supercomputer and every personal computer in between.
@@ -0,0 +1 @@
1
+ 1.2.0
@@ -14,85 +14,96 @@ public class LuhnValidatorTest {
14
14
  }
15
15
 
16
16
  @Test
17
- public void testThatSingleDigitStringIsNotValid() {
17
+ public void testSingleDigitStringInvalid() {
18
18
  assertFalse(luhnValidator.isValid("1"));
19
19
  }
20
20
 
21
21
  @Ignore("Remove to run test")
22
22
  @Test
23
- public void testThatTheStringConsistingOfASingleZeroIsInvalid() {
23
+ public void testSingleZeroIsInvalid() {
24
24
  assertFalse(luhnValidator.isValid("0"));
25
25
  }
26
26
 
27
27
  @Ignore("Remove to run test")
28
28
  @Test
29
- public void testThatASimpleValidNumberIsIdentifiedAsValid() {
30
- assertTrue(luhnValidator.isValid(" 5 9 "));
29
+ public void testSimpleValidSINReversedRemainsValid() {
30
+ assertTrue(luhnValidator.isValid("059"));
31
31
  }
32
32
 
33
33
  @Ignore("Remove to run test")
34
34
  @Test
35
- public void testThatAValidCanadianSocialInsuranceNumberIsIdentifiedAsValidV1() {
36
- assertTrue(luhnValidator.isValid("046 454 286"));
35
+ public void testSimpleValidSINReversedBecomesInvalid() {
36
+ assertTrue(luhnValidator.isValid("59"));
37
37
  }
38
38
 
39
39
  @Ignore("Remove to run test")
40
40
  @Test
41
- public void testThatAValidCanadianSocialInsuranceNumberIsIdentifiedAsValidV2() {
41
+ public void testValidCanadianSINValid() {
42
42
  assertTrue(luhnValidator.isValid("055 444 285"));
43
43
  }
44
44
 
45
45
  @Ignore("Remove to run test")
46
46
  @Test
47
- public void testThatAnInvalidCanadianSocialInsuranceNumberIsIdentifiedAsInvalid() {
48
- assertFalse(luhnValidator.isValid("046 454 287"));
47
+ public void testInvalidCanadianSINInvalid() {
48
+ assertFalse(luhnValidator.isValid("055 444 286"));
49
49
  }
50
50
 
51
51
  @Ignore("Remove to run test")
52
52
  @Test
53
- public void testThatAnInvalidCreditCardIsIdentifiedAsInvalid() {
53
+ public void testInvalidCreditCardInvalid() {
54
54
  assertFalse(luhnValidator.isValid("8273 1232 7352 0569"));
55
55
  }
56
56
 
57
57
  @Ignore("Remove to run test")
58
58
  @Test
59
- public void testThatAddingANonDigitCharacterToAValidStringInvalidatesTheString() {
60
- assertFalse(luhnValidator.isValid("046a 454 286"));
59
+ public void testStringsContainingNonDigitInvalid() {
60
+ assertFalse(luhnValidator.isValid("055a 444 285"));
61
61
  }
62
62
 
63
63
  @Ignore("Remove to run test")
64
64
  @Test
65
- public void testThatStringContainingPunctuationIsInvalid() {
65
+ public void testStringContainingPunctuationInvalid() {
66
66
  assertFalse(luhnValidator.isValid("055-444-285"));
67
67
  }
68
68
 
69
- /* The following test diverges from the canonical test data. This is because the corresponding canonical test does
70
- * not account for Java specific functions (such as Character.getNumericValue()), which can be part of incorrect yet
71
- * passing implementations. For more detail, check out issue #972 here:
72
- * (https://github.com/exercism/java/issues/972).
73
- */
74
69
  @Ignore("Remove to run test")
75
70
  @Test
76
- public void testThatStringContainingSymbolsIsInvalid() {
77
- assertFalse(luhnValidator.isValid("34&"));
71
+ public void testStringContainingSymbolsInvalid() {
72
+ assertFalse(luhnValidator.isValid("055£ 444$ 285"));
78
73
  }
79
74
 
80
75
  @Ignore("Remove to run test")
81
76
  @Test
82
- public void testThatTheStringConsistingOfASpaceAndASingleZeroIsInvalid() {
77
+ public void testSingleSpaceWithZeroInvalid() {
83
78
  assertFalse(luhnValidator.isValid(" 0"));
84
79
  }
85
80
 
86
81
  @Ignore("Remove to run test")
87
82
  @Test
88
- public void testThatStringContainingMultipleZerosIsValid() {
89
- assertTrue(luhnValidator.isValid(" 00000"));
83
+ public void testMoreThanSingleZeroValid() {
84
+ assertTrue(luhnValidator.isValid("0000 0"));
90
85
  }
91
86
 
92
87
  @Ignore("Remove to run test")
93
88
  @Test
94
- public void testThatDoublingNineIsHandledCorrectly() {
89
+ public void testDigitNineConvertedToOutputNine() {
95
90
  assertTrue(luhnValidator.isValid("091"));
96
91
  }
97
92
 
93
+ @Ignore("Remove to run test")
94
+ @Test
95
+ public void testStringsWithNonDigitsInvalid() {
96
+ assertFalse(luhnValidator.isValid(":9"));
97
+ }
98
+
99
+ /* The following test diverges from the canonical test data. This is because the corresponding canonical test does
100
+ * not account for Java specific functions (such as Character.getNumericValue()), which can be part of incorrect yet
101
+ * passing implementations. For more detail, check out issue #972 here:
102
+ * (https://github.com/exercism/java/issues/972).
103
+ */
104
+ @Ignore("Remove to run test")
105
+ @Test
106
+ public void testStringContainingSymbolsInvalidJavaTrackSpecific() {
107
+ assertFalse(luhnValidator.isValid("85&"));
108
+ }
98
109
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "language": "JavaScript",
3
3
  "active": true,
4
- "blurb": "",
4
+ "blurb": "JavaScript is a scripting language, primarily used for creating dynamic websites and programming web servers. It's a very popular language, and supports a variety of programming paradigms.",
5
5
  "test_pattern": ".*[.]spec[.]js$",
6
6
  "exercises": [
7
7
  {
@@ -3,7 +3,11 @@
3
3
  module.exports = {
4
4
  nth: function (nthPrime) {
5
5
  if (nthPrime === 0) { throw new Error('Prime is not possible'); }
6
- this.generatePrimes(200000);
6
+
7
+ // Using prime number theory to approximate the prime
8
+ // See https://en.wikipedia.org/wiki/Prime_number_theorem#Approximations_for_the_nth_prime_number
9
+ var upperBound = (nthPrime + 2) * Math.log((nthPrime + 2) * Math.log((nthPrime + 2)));
10
+ this.generatePrimes(upperBound);
7
11
  return this.realPrimes[nthPrime - 1];
8
12
  },
9
13
  generatePrimes: function (uptoNumber) {
@@ -17,6 +17,14 @@ describe('Prime', function () {
17
17
  expect(prime.nth(10001)).toEqual(104743);
18
18
  });
19
19
 
20
+ xit('massive prime', function () {
21
+ expect(prime.nth(20000)).toEqual(224737);
22
+ });
23
+
24
+ xit('extreme prime', function () {
25
+ expect(prime.nth(30000)).toEqual(350377);
26
+ });
27
+
20
28
  xit('weird case', function () {
21
29
  expect( function () {
22
30
  prime.nth(0);
@@ -19,7 +19,7 @@
19
19
  {
20
20
  "slug": "two-fer",
21
21
  "uuid": "40f85461-c256-4b96-8d5b-0509f42fab17",
22
- "core": false,
22
+ "core": true,
23
23
  "unlocked_by": null,
24
24
  "difficulty": 2,
25
25
  "topics": [
@@ -31,7 +31,7 @@
31
31
  "slug": "leap",
32
32
  "uuid": "639e59b6-84aa-4f13-9718-537606703c43",
33
33
  "core": false,
34
- "unlocked_by": null,
34
+ "unlocked_by": "hello-world",
35
35
  "difficulty": 2,
36
36
  "topics": [
37
37
  "control_flow_if_else_statements",
@@ -42,7 +42,7 @@
42
42
  "slug": "rna-transcription",
43
43
  "uuid": "9772c916-c619-445c-834d-af7dbf1ad2d9",
44
44
  "core": false,
45
- "unlocked_by": null,
45
+ "unlocked_by": "two-fer",
46
46
  "difficulty": 2,
47
47
  "topics": [
48
48
  "loops",
@@ -54,7 +54,7 @@
54
54
  "slug": "pangram",
55
55
  "uuid": "0e9ca09d-c32e-4fed-930f-1b7c10b67dc2",
56
56
  "core": false,
57
- "unlocked_by": null,
57
+ "unlocked_by": "hello-world",
58
58
  "difficulty": 3,
59
59
  "topics": [
60
60
  "pattern_matching",
@@ -65,7 +65,7 @@
65
65
  {
66
66
  "slug": "hamming",
67
67
  "uuid": "7151ff23-ebc6-43d7-86b6-81cf0dd45309",
68
- "core": false,
68
+ "core": true,
69
69
  "unlocked_by": null,
70
70
  "difficulty": 3,
71
71
  "topics": [
@@ -77,7 +77,7 @@
77
77
  {
78
78
  "slug": "gigasecond",
79
79
  "uuid": "1eb4c9d3-0085-4ca3-b1bb-9a20b88a1e7f",
80
- "core": false,
80
+ "core": true,
81
81
  "unlocked_by": null,
82
82
  "difficulty": 3,
83
83
  "topics": [
@@ -90,7 +90,7 @@
90
90
  "slug": "space-age",
91
91
  "uuid": "a91ce7e9-9a2a-44de-b10c-cc1be63df2a1",
92
92
  "core": false,
93
- "unlocked_by": null,
93
+ "unlocked_by": "gigasecond",
94
94
  "difficulty": 3,
95
95
  "topics": [
96
96
  "conditionals",
@@ -102,7 +102,7 @@
102
102
  "slug": "acronym",
103
103
  "uuid": "d8288e46-2e8c-42e4-8e14-20b1efd0f574",
104
104
  "core": false,
105
- "unlocked_by": null,
105
+ "unlocked_by": "hamming",
106
106
  "difficulty": 3,
107
107
  "topics": [
108
108
  "loops",
@@ -114,7 +114,7 @@
114
114
  {
115
115
  "slug": "scrabble-score",
116
116
  "uuid": "4d8a68eb-eee9-4c51-97b8-57f3b69f5970",
117
- "core": false,
117
+ "core": true,
118
118
  "unlocked_by": null,
119
119
  "difficulty": 3,
120
120
  "topics": [
@@ -129,7 +129,7 @@
129
129
  "slug": "raindrops",
130
130
  "uuid": "93ee76ba-d19f-4c72-b011-676f40dcda5e",
131
131
  "core": false,
132
- "unlocked_by": null,
132
+ "unlocked_by": "hello-world",
133
133
  "difficulty": 3,
134
134
  "topics": [
135
135
  "conditionals",
@@ -141,7 +141,7 @@
141
141
  {
142
142
  "slug": "difference-of-squares",
143
143
  "uuid": "d54a68fc-02dd-45ee-8c6f-3efb781ed0d2",
144
- "core": false,
144
+ "core": true,
145
145
  "unlocked_by": null,
146
146
  "difficulty": 3,
147
147
  "topics": [
@@ -153,7 +153,7 @@
153
153
  {
154
154
  "slug": "secret-handshake",
155
155
  "uuid": "feee3ee9-81d5-4a4f-ad98-e1ecf21757ed",
156
- "core": false,
156
+ "core": true,
157
157
  "unlocked_by": null,
158
158
  "difficulty": 3,
159
159
  "topics": [
@@ -171,7 +171,7 @@
171
171
  "slug": "perfect-numbers",
172
172
  "uuid": "ad7c8fd8-acf0-40d0-8a30-d959c4b0252a",
173
173
  "core": false,
174
- "unlocked_by": null,
174
+ "unlocked_by": "difference-of-squares",
175
175
  "difficulty": 3,
176
176
  "topics": [
177
177
  "enumerations",
@@ -185,7 +185,7 @@
185
185
  "slug": "sum-of-multiples",
186
186
  "uuid": "d3f960e5-cf19-4308-a1bc-897777f62689",
187
187
  "core": false,
188
- "unlocked_by": null,
188
+ "unlocked_by": "difference-of-squares",
189
189
  "difficulty": 4,
190
190
  "topics": [
191
191
  "arrays",
@@ -199,7 +199,7 @@
199
199
  "slug": "luhn",
200
200
  "uuid": "3cf8a650-6a25-416e-a0af-036f41c11cca",
201
201
  "core": false,
202
- "unlocked_by": null,
202
+ "unlocked_by": "hamming",
203
203
  "difficulty": 4,
204
204
  "topics": [
205
205
  "algorithms",
@@ -213,7 +213,7 @@
213
213
  {
214
214
  "slug": "triangle",
215
215
  "uuid": "e282536b-267f-490c-a453-758135051a54",
216
- "core": false,
216
+ "core": true,
217
217
  "unlocked_by": null,
218
218
  "difficulty": 4,
219
219
  "topics": [
@@ -228,7 +228,7 @@
228
228
  "slug": "largest-series-product",
229
229
  "uuid": "aa11e242-77b9-4ba7-97a2-d9b36e454a9d",
230
230
  "core": false,
231
- "unlocked_by": null,
231
+ "unlocked_by": "hamming",
232
232
  "difficulty": 4,
233
233
  "topics": [
234
234
  "integers",
@@ -242,7 +242,7 @@
242
242
  "slug": "grains",
243
243
  "uuid": "1fa1e0f9-6410-4197-8778-debeb274e6d4",
244
244
  "core": false,
245
- "unlocked_by": null,
245
+ "unlocked_by": "secret-handshake",
246
246
  "difficulty": 4,
247
247
  "topics": [
248
248
  "integers"
@@ -252,7 +252,7 @@
252
252
  "slug": "sieve",
253
253
  "uuid": "87ca4323-8a19-4529-962d-0f2ee63ebb2f",
254
254
  "core": false,
255
- "unlocked_by": null,
255
+ "unlocked_by": "difference-of-squares",
256
256
  "difficulty": 4,
257
257
  "topics": [
258
258
  "algorithms",
@@ -266,7 +266,7 @@
266
266
  "slug": "collatz-conjecture",
267
267
  "uuid": "ab52d0f4-a001-4d44-951e-0cfc396374f3",
268
268
  "core": false,
269
- "unlocked_by": null,
269
+ "unlocked_by": "triangle",
270
270
  "difficulty": 4,
271
271
  "topics": [
272
272
  "conditionals",
@@ -280,7 +280,7 @@
280
280
  "slug": "atbash-cipher",
281
281
  "uuid": "b325401a-c8f0-49da-9f1a-a83318e780c9",
282
282
  "core": false,
283
- "unlocked_by": null,
283
+ "unlocked_by": "rotational-cipher",
284
284
  "difficulty": 4,
285
285
  "topics": [
286
286
  "cryptography",
@@ -292,7 +292,7 @@
292
292
  "slug": "nth-prime",
293
293
  "uuid": "6e2bbe8d-b6ab-4675-9c31-5b437cefd0c4",
294
294
  "core": false,
295
- "unlocked_by": null,
295
+ "unlocked_by": "triangle",
296
296
  "difficulty": 4,
297
297
  "topics": [
298
298
  "arrays",
@@ -305,7 +305,7 @@
305
305
  {
306
306
  "slug": "saddle-points",
307
307
  "uuid": "371901d4-0728-4abd-8374-1905d7d70329",
308
- "core": false,
308
+ "core": true,
309
309
  "unlocked_by": null,
310
310
  "difficulty": 4,
311
311
  "topics": [
@@ -321,7 +321,7 @@
321
321
  "slug": "diamond",
322
322
  "uuid": "03c71e34-ecaf-47a4-9854-48600e1bf0d4",
323
323
  "core": false,
324
- "unlocked_by": null,
324
+ "unlocked_by": "two-fer",
325
325
  "difficulty": 4,
326
326
  "topics": [
327
327
  "arrays",
@@ -335,7 +335,7 @@
335
335
  "slug": "isogram",
336
336
  "uuid": "e5338be9-6f51-4448-9b10-20de7b1338b9",
337
337
  "core": false,
338
- "unlocked_by": null,
338
+ "unlocked_by": "hello-world",
339
339
  "difficulty": 4,
340
340
  "topics": [
341
341
  "conditionals",
@@ -347,7 +347,7 @@
347
347
  {
348
348
  "slug": "flatten-array",
349
349
  "uuid": "c67907b6-0d8b-4b12-9c41-6069845952a3",
350
- "core": false,
350
+ "core": true,
351
351
  "unlocked_by": null,
352
352
  "difficulty": 5,
353
353
  "topics": [
@@ -359,7 +359,7 @@
359
359
  "slug": "pig-latin",
360
360
  "uuid": "cb2ce8e5-f143-4423-a3bc-959f4222c186",
361
361
  "core": false,
362
- "unlocked_by": null,
362
+ "unlocked_by": "hello-world",
363
363
  "difficulty": 5,
364
364
  "topics": [
365
365
  "arrays",
@@ -372,7 +372,7 @@
372
372
  "slug": "phone-number",
373
373
  "uuid": "2c8c1c16-bbb8-49e5-a248-f7a473c2bc86",
374
374
  "core": false,
375
- "unlocked_by": null,
375
+ "unlocked_by": "hamming",
376
376
  "difficulty": 5,
377
377
  "topics": [
378
378
  "conditionals",
@@ -385,7 +385,7 @@
385
385
  "slug": "nucleotide-count",
386
386
  "uuid": "62bd648a-e959-4ec4-8a5f-09e08fa0b2c8",
387
387
  "core": false,
388
- "unlocked_by": null,
388
+ "unlocked_by": "hamming",
389
389
  "difficulty": 5,
390
390
  "topics": [
391
391
  "conditionals",
@@ -400,7 +400,7 @@
400
400
  {
401
401
  "slug": "word-count",
402
402
  "uuid": "3b8b77ef-da2d-499d-9513-8fe771e86b3e",
403
- "core": false,
403
+ "core": true,
404
404
  "unlocked_by": null,
405
405
  "difficulty": 5,
406
406
  "topics": [
@@ -415,7 +415,7 @@
415
415
  "slug": "spiral-matrix",
416
416
  "uuid": "e3407da5-0524-4565-b724-9778bba1033f",
417
417
  "core": false,
418
- "unlocked_by": null,
418
+ "unlocked_by": "flatten-array",
419
419
  "difficulty": 5,
420
420
  "topics": [
421
421
  "arrays",
@@ -428,7 +428,7 @@
428
428
  {
429
429
  "slug": "robot-name",
430
430
  "uuid": "ce475b23-5dfc-4049-90c5-0c387926686f",
431
- "core": false,
431
+ "core": true,
432
432
  "unlocked_by": null,
433
433
  "difficulty": 5,
434
434
  "topics": [
@@ -443,7 +443,7 @@
443
443
  "slug": "prime-factors",
444
444
  "uuid": "0e92ba19-2727-4a5e-be38-e88878322c53",
445
445
  "core": false,
446
- "unlocked_by": null,
446
+ "unlocked_by": "triangle",
447
447
  "difficulty": 5,
448
448
  "topics": [
449
449
  "arrays",
@@ -458,7 +458,7 @@
458
458
  "slug": "allergies",
459
459
  "uuid": "a826af04-b7f3-426e-9bce-42375d0d928b",
460
460
  "core": false,
461
- "unlocked_by": null,
461
+ "unlocked_by": "gigasecond",
462
462
  "difficulty": 5,
463
463
  "topics": [
464
464
  "booleans",
@@ -473,7 +473,7 @@
473
473
  "slug": "bob",
474
474
  "uuid": "f3713067-7f37-4dd6-a189-c80f46dab8ec",
475
475
  "core": false,
476
- "unlocked_by": null,
476
+ "unlocked_by": "two-fer",
477
477
  "difficulty": 5,
478
478
  "topics": [
479
479
  "booleans",
@@ -485,7 +485,7 @@
485
485
  "slug": "pascals-triangle",
486
486
  "uuid": "67db30e4-b4d8-4224-b0f8-19a00af40387",
487
487
  "core": false,
488
- "unlocked_by": null,
488
+ "unlocked_by": "triangle",
489
489
  "difficulty": 5,
490
490
  "topics": [
491
491
  "algorithms",
@@ -500,7 +500,7 @@
500
500
  "slug": "bracket-push",
501
501
  "uuid": "cbbbd7db-224f-45ca-a108-4dc6bc98e4a0",
502
502
  "core": false,
503
- "unlocked_by": null,
503
+ "unlocked_by": "flatten-array",
504
504
  "difficulty": 5,
505
505
  "topics": [
506
506
  "stacks",
@@ -511,7 +511,7 @@
511
511
  "slug": "series",
512
512
  "uuid": "9caa5fd9-a774-4d4c-951d-053a4f3f2726",
513
513
  "core": false,
514
- "unlocked_by": null,
514
+ "unlocked_by": "hamming",
515
515
  "difficulty": 5,
516
516
  "topics": [
517
517
  "conditionals",
@@ -524,7 +524,7 @@
524
524
  {
525
525
  "slug": "rotational-cipher",
526
526
  "uuid": "7c24087a-ca61-48d3-9cb9-c3fde2edba86",
527
- "core": false,
527
+ "core": true,
528
528
  "unlocked_by": null,
529
529
  "difficulty": 5,
530
530
  "topics": [
@@ -536,7 +536,7 @@
536
536
  {
537
537
  "slug": "bank-account",
538
538
  "uuid": "12e1d685-32be-4b2c-a40b-c68e5b60de1d",
539
- "core": false,
539
+ "core": true,
540
540
  "unlocked_by": null,
541
541
  "difficulty": 6,
542
542
  "topics": [
@@ -549,7 +549,7 @@
549
549
  "slug": "roman-numerals",
550
550
  "uuid": "da466ad5-6837-47d8-af39-2c0563d35a3c",
551
551
  "core": false,
552
- "unlocked_by": null,
552
+ "unlocked_by": "hamming",
553
553
  "difficulty": 6,
554
554
  "topics": [
555
555
  "integers",
@@ -564,7 +564,7 @@
564
564
  "slug": "beer-song",
565
565
  "uuid": "34f0e7d0-29df-44e5-a7a7-4a12584af62e",
566
566
  "core": false,
567
- "unlocked_by": null,
567
+ "unlocked_by": "two-fer",
568
568
  "difficulty": 6,
569
569
  "topics": [
570
570
  "conditionals",
@@ -578,7 +578,7 @@
578
578
  "slug": "etl",
579
579
  "uuid": "f0f297f2-429f-4626-8b7f-0706a1e8f255",
580
580
  "core": false,
581
- "unlocked_by": null,
581
+ "unlocked_by": "word-count",
582
582
  "difficulty": 6,
583
583
  "topics": [
584
584
  "lists",
@@ -589,7 +589,7 @@
589
589
  {
590
590
  "slug": "linked-list",
591
591
  "uuid": "fc977979-c8a4-44b6-a685-c8a32bd12bc3",
592
- "core": false,
592
+ "core": true,
593
593
  "unlocked_by": null,
594
594
  "difficulty": 6,
595
595
  "topics": [
@@ -602,7 +602,7 @@
602
602
  "slug": "grade-school",
603
603
  "uuid": "62eb71dd-18ba-427f-a27a-86e993b4055a",
604
604
  "core": false,
605
- "unlocked_by": null,
605
+ "unlocked_by": "word-count",
606
606
  "difficulty": 6,
607
607
  "topics": [
608
608
  "conditionals",
@@ -616,7 +616,7 @@
616
616
  "slug": "robot-simulator",
617
617
  "uuid": "6e3b294b-16a3-4ebb-a78b-4bf7f6b96736",
618
618
  "core": false,
619
- "unlocked_by": null,
619
+ "unlocked_by": "secret-handshake",
620
620
  "difficulty": 6,
621
621
  "topics": [
622
622
  "classes",
@@ -628,7 +628,7 @@
628
628
  {
629
629
  "slug": "binary-search",
630
630
  "uuid": "c8815b6c-19b8-4f4d-9be4-6717e933591a",
631
- "core": false,
631
+ "core": true,
632
632
  "unlocked_by": null,
633
633
  "difficulty": 6,
634
634
  "topics": [
@@ -642,7 +642,7 @@
642
642
  "slug": "minesweeper",
643
643
  "uuid": "8eb6f225-fa3d-4a33-b476-2cae45053c82",
644
644
  "core": false,
645
- "unlocked_by": null,
645
+ "unlocked_by": "scrabble-score",
646
646
  "difficulty": 6,
647
647
  "topics": [
648
648
  "conditionals",
@@ -657,7 +657,7 @@
657
657
  "slug": "all-your-base",
658
658
  "uuid": "19d00436-f26a-47ad-b13e-128181dc09f3",
659
659
  "core": false,
660
- "unlocked_by": null,
660
+ "unlocked_by": "saddle-points",
661
661
  "difficulty": 6,
662
662
  "topics": [
663
663
  "arrays",
@@ -672,7 +672,7 @@
672
672
  "slug": "say",
673
673
  "uuid": "5607dae5-13aa-4cd4-8b4c-d270516182d7",
674
674
  "core": false,
675
- "unlocked_by": null,
675
+ "unlocked_by": "rotational-cipher",
676
676
  "difficulty": 6,
677
677
  "topics": [
678
678
  "strings",
@@ -683,7 +683,7 @@
683
683
  "slug": "anagram",
684
684
  "uuid": "f754e1cc-cb88-4776-ab11-3e6ae8362d5a",
685
685
  "core": false,
686
- "unlocked_by": null,
686
+ "unlocked_by": "hello-world",
687
687
  "difficulty": 7,
688
688
  "topics": [
689
689
  "arrays",
@@ -698,7 +698,7 @@
698
698
  "slug": "sublist",
699
699
  "uuid": "ebfdf40a-1fde-4c88-aa93-95e3190f5261",
700
700
  "core": false,
701
- "unlocked_by": null,
701
+ "unlocked_by": "linked-list",
702
702
  "difficulty": 7,
703
703
  "topics": [
704
704
  "enumeration",
@@ -712,7 +712,7 @@
712
712
  "slug": "meetup",
713
713
  "uuid": "d617987e-64b8-4c21-89a9-66a932c4668d",
714
714
  "core": false,
715
- "unlocked_by": null,
715
+ "unlocked_by": "gigasecond",
716
716
  "difficulty": 7,
717
717
  "topics": [
718
718
  "conditionals",
@@ -725,7 +725,7 @@
725
725
  "slug": "clock",
726
726
  "uuid": "1dcefdea-5447-4622-a064-079aad781398",
727
727
  "core": false,
728
- "unlocked_by": null,
728
+ "unlocked_by": "saddle-points",
729
729
  "difficulty": 7,
730
730
  "topics": [
731
731
  "equality",
@@ -740,7 +740,7 @@
740
740
  "slug": "list-ops",
741
741
  "uuid": "34f1d5bf-f31f-415e-9905-4d48e6205d28",
742
742
  "core": false,
743
- "unlocked_by": null,
743
+ "unlocked_by": "linked-list",
744
744
  "difficulty": 8,
745
745
  "topics": [
746
746
  "filtering",
@@ -754,7 +754,7 @@
754
754
  "slug": "simple-cipher",
755
755
  "uuid": "e23b06de-bd91-482f-9783-b0334b75b489",
756
756
  "core": false,
757
- "unlocked_by": null,
757
+ "unlocked_by": "rotational-cipher",
758
758
  "difficulty": 8,
759
759
  "topics": [
760
760
  "cryptography",
@@ -769,7 +769,7 @@
769
769
  "slug": "complex-numbers",
770
770
  "uuid": "83dec96f-9cdf-4b9b-abc4-cbd2066d919a",
771
771
  "core": false,
772
- "unlocked_by": null,
772
+ "unlocked_by": "triangle",
773
773
  "difficulty": 8,
774
774
  "topics": [
775
775
  "floating_point_numbers",
@@ -780,7 +780,7 @@
780
780
  "slug": "change",
781
781
  "uuid": "0d69c1cd-f190-4b3b-8472-bf78c02acbc5",
782
782
  "core": false,
783
- "unlocked_by": null,
783
+ "unlocked_by": "flatten-array",
784
784
  "difficulty": 8,
785
785
  "topics": [
786
786
  "algorithms",
@@ -793,7 +793,7 @@
793
793
  "slug": "forth",
794
794
  "uuid": "eecd4f8b-eedc-49a3-adad-49747521ef66",
795
795
  "core": false,
796
- "unlocked_by": null,
796
+ "unlocked_by": "secret-handshake",
797
797
  "difficulty": 9,
798
798
  "topics": [
799
799
  "exception_handling",
@@ -808,7 +808,7 @@
808
808
  "slug": "react",
809
809
  "uuid": "240788cd-afa5-4fd6-8df0-a158239c0610",
810
810
  "core": false,
811
- "unlocked_by": null,
811
+ "unlocked_by": "binary-search",
812
812
  "difficulty": 10,
813
813
  "topics": [
814
814
  "generics",