trackler 2.2.1.164 → 2.2.1.165

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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",