trackler 2.2.1.14 → 2.2.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/docs/INSTALLATION.md +1 -1
- data/tracks/csharp/exercises/binary-search/BinarySearchTest.cs +2 -2
- data/tracks/csharp/exercises/poker/Example.cs +69 -20
- data/tracks/csharp/exercises/poker/PokerTest.cs +152 -82
- data/tracks/csharp/exercises/raindrops/RaindropsTest.cs +4 -4
- data/tracks/csharp/exercises/roman-numerals/RomanNumeralsTest.cs +4 -4
- data/tracks/csharp/exercises/word-count/Example.cs +2 -2
- data/tracks/csharp/exercises/word-count/WordCount.cs +2 -2
- data/tracks/csharp/exercises/word-count/WordCountTest.cs +85 -87
- data/tracks/csharp/generators/Exercises/Pangram.cs +0 -1
- data/tracks/csharp/generators/Exercises/Poker.cs +19 -0
- data/tracks/csharp/generators/Exercises/RomanNumerals.cs +0 -1
- data/tracks/csharp/generators/Exercises/WordCount.cs +27 -0
- data/tracks/csharp/generators/Output/NameExtensions.cs +6 -4
- data/tracks/delphi/{docs → exercises/hello-world}/GETTING_STARTED_GUIDE.md +0 -0
- data/tracks/go/config.json +629 -618
- data/tracks/go/config/maintainers.json +33 -33
- data/tracks/go/exercises/accumulate/README.md +0 -3
- data/tracks/go/exercises/hello-world/example.go +0 -2
- data/tracks/go/exercises/hello-world/hello_test.go +0 -20
- data/tracks/go/exercises/hello-world/hello_world.go +1 -36
- data/tracks/go/exercises/leap/leap.go +0 -1
- data/tracks/go/exercises/leap/leap_test.go +7 -3
- data/tracks/go/exercises/two-fer/README.md +66 -0
- data/tracks/go/exercises/two-fer/example.go +9 -0
- data/tracks/go/exercises/{hello-world/example_helloworld_test.go → two-fer/example_two_fer_test.go} +9 -9
- data/tracks/go/exercises/two-fer/two_fer.go +15 -0
- data/tracks/go/exercises/two-fer/two_fer_test.go +20 -0
- data/tracks/go/gen/gen.go +11 -10
- data/tracks/python/exercises/change/change_test.py +7 -2
- data/tracks/rust/config.json +1 -0
- data/tracks/rust/docs/ABOUT.md +1 -1
- data/tracks/scala/exercises/nth-prime/example.scala +2 -2
- data/tracks/scala/exercises/nth-prime/src/test/scala/NthPrimeTest.scala +29 -0
- data/tracks/scala/testgen/src/main/scala/NthPrimeTestGenerator.scala +34 -0
- metadata +12 -7
- data/tracks/fsharp/appveyor.yml +0 -4
- data/tracks/fsharp/circle.yml +0 -16
- data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +0 -37
@@ -59,13 +59,13 @@ public void The_sound_for_14_is_plong_as_it_has_a_factor_of_7()
|
|
59
59
|
}
|
60
60
|
|
61
61
|
[Fact(Skip = "Remove to run test")]
|
62
|
-
public void
|
62
|
+
public void The_sound_for_15_is_plingplang_as_it_has_factors_3_and_5()
|
63
63
|
{
|
64
64
|
Assert.Equal("PlingPlang", Raindrops.Convert(15));
|
65
65
|
}
|
66
66
|
|
67
67
|
[Fact(Skip = "Remove to run test")]
|
68
|
-
public void
|
68
|
+
public void The_sound_for_21_is_plingplong_as_it_has_factors_3_and_7()
|
69
69
|
{
|
70
70
|
Assert.Equal("PlingPlong", Raindrops.Convert(21));
|
71
71
|
}
|
@@ -83,7 +83,7 @@ public void The_sound_for_27_is_pling_as_it_has_a_factor_3()
|
|
83
83
|
}
|
84
84
|
|
85
85
|
[Fact(Skip = "Remove to run test")]
|
86
|
-
public void
|
86
|
+
public void The_sound_for_35_is_plangplong_as_it_has_factors_5_and_7()
|
87
87
|
{
|
88
88
|
Assert.Equal("PlangPlong", Raindrops.Convert(35));
|
89
89
|
}
|
@@ -101,7 +101,7 @@ public void The_sound_for_52_is_52()
|
|
101
101
|
}
|
102
102
|
|
103
103
|
[Fact(Skip = "Remove to run test")]
|
104
|
-
public void
|
104
|
+
public void The_sound_for_105_is_plingplangplong_as_it_has_factors_3_5_and_7()
|
105
105
|
{
|
106
106
|
Assert.Equal("PlingPlangPlong", Raindrops.Convert(105));
|
107
107
|
}
|
@@ -11,13 +11,13 @@ public void Number_1_is_a_single_i()
|
|
11
11
|
}
|
12
12
|
|
13
13
|
[Fact(Skip = "Remove to run test")]
|
14
|
-
public void
|
14
|
+
public void Number_2_is_two_is()
|
15
15
|
{
|
16
16
|
Assert.Equal("II", 2.ToRoman());
|
17
17
|
}
|
18
18
|
|
19
19
|
[Fact(Skip = "Remove to run test")]
|
20
|
-
public void
|
20
|
+
public void Number_3_is_three_is()
|
21
21
|
{
|
22
22
|
Assert.Equal("III", 3.ToRoman());
|
23
23
|
}
|
@@ -47,7 +47,7 @@ public void Number_9_being_10_1_is_ix()
|
|
47
47
|
}
|
48
48
|
|
49
49
|
[Fact(Skip = "Remove to run test")]
|
50
|
-
public void
|
50
|
+
public void Number_20_is_two_xs()
|
51
51
|
{
|
52
52
|
Assert.Equal("XXVII", 27.ToRoman());
|
53
53
|
}
|
@@ -107,7 +107,7 @@ public void Number_1000_is_a_single_m()
|
|
107
107
|
}
|
108
108
|
|
109
109
|
[Fact(Skip = "Remove to run test")]
|
110
|
-
public void
|
110
|
+
public void Number_3000_is_three_ms()
|
111
111
|
{
|
112
112
|
Assert.Equal("MMM", 3000.ToRoman());
|
113
113
|
}
|
@@ -2,9 +2,9 @@
|
|
2
2
|
using System.Text.RegularExpressions;
|
3
3
|
using System.Collections.Generic;
|
4
4
|
|
5
|
-
public static class
|
5
|
+
public static class WordCount
|
6
6
|
{
|
7
|
-
public static IDictionary<string, int>
|
7
|
+
public static IDictionary<string, int> Countwords(string phrase)
|
8
8
|
{
|
9
9
|
if (phrase == null) throw new ArgumentNullException("phrase");
|
10
10
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
using System;
|
2
2
|
using System.Collections.Generic;
|
3
3
|
|
4
|
-
public static class
|
4
|
+
public static class WordCount
|
5
5
|
{
|
6
|
-
public static IDictionary<string, int>
|
6
|
+
public static IDictionary<string, int> Countwords(string phrase)
|
7
7
|
{
|
8
8
|
throw new NotImplementedException("You need to implement this function.");
|
9
9
|
}
|
@@ -1,145 +1,143 @@
|
|
1
|
-
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
2
|
+
|
2
3
|
using Xunit;
|
4
|
+
using System.Collections.Generic;
|
3
5
|
|
4
6
|
public class WordCountTest
|
5
7
|
{
|
6
8
|
[Fact]
|
7
9
|
public void Count_one_word()
|
8
10
|
{
|
9
|
-
var
|
10
|
-
|
11
|
+
var actual = WordCount.Countwords("word");
|
12
|
+
var expected = new Dictionary<string, int>
|
13
|
+
{
|
14
|
+
["word"] = 1
|
11
15
|
};
|
12
|
-
|
13
|
-
Assert.Equal(counts, Phrase.WordCount("word"));
|
16
|
+
Assert.Equal(expected, actual);
|
14
17
|
}
|
15
18
|
|
16
19
|
[Fact(Skip = "Remove to run test")]
|
17
|
-
public void
|
20
|
+
public void Count_one_of_each_word()
|
18
21
|
{
|
19
|
-
var
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
var actual = WordCount.Countwords("one of each");
|
23
|
+
var expected = new Dictionary<string, int>
|
24
|
+
{
|
25
|
+
["one"] = 1,
|
26
|
+
["of"] = 1,
|
27
|
+
["each"] = 1
|
23
28
|
};
|
24
|
-
|
25
|
-
Assert.Equal(counts, Phrase.WordCount("one of each"));
|
29
|
+
Assert.Equal(expected, actual);
|
26
30
|
}
|
27
31
|
|
28
32
|
[Fact(Skip = "Remove to run test")]
|
29
|
-
public void
|
33
|
+
public void Multiple_occurrences_of_a_word()
|
30
34
|
{
|
31
|
-
var
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
var actual = WordCount.Countwords("one fish two fish red fish blue fish");
|
36
|
+
var expected = new Dictionary<string, int>
|
37
|
+
{
|
38
|
+
["one"] = 1,
|
39
|
+
["fish"] = 4,
|
40
|
+
["two"] = 1,
|
41
|
+
["red"] = 1,
|
42
|
+
["blue"] = 1
|
37
43
|
};
|
38
|
-
|
39
|
-
Assert.Equal(counts, Phrase.WordCount("one fish two fish red fish blue fish"));
|
44
|
+
Assert.Equal(expected, actual);
|
40
45
|
}
|
41
46
|
|
42
47
|
[Fact(Skip = "Remove to run test")]
|
43
|
-
public void
|
48
|
+
public void Handles_cramped_lists()
|
44
49
|
{
|
45
|
-
var
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
{ "men", 1 },
|
50
|
+
var actual = WordCount.Countwords("one,two,three");
|
51
|
+
var expected = new Dictionary<string, int>
|
52
|
+
{
|
53
|
+
["one"] = 1,
|
54
|
+
["two"] = 1,
|
55
|
+
["three"] = 1
|
52
56
|
};
|
53
|
-
|
54
|
-
Assert.Equal(counts, Phrase.WordCount("all the kings horses and all the kings men"));
|
57
|
+
Assert.Equal(expected, actual);
|
55
58
|
}
|
56
59
|
|
57
60
|
[Fact(Skip = "Remove to run test")]
|
58
|
-
public void
|
61
|
+
public void Handles_expanded_lists()
|
59
62
|
{
|
60
|
-
var
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
var actual = WordCount.Countwords("one,\ntwo,\nthree");
|
64
|
+
var expected = new Dictionary<string, int>
|
65
|
+
{
|
66
|
+
["one"] = 1,
|
67
|
+
["two"] = 1,
|
68
|
+
["three"] = 1
|
66
69
|
};
|
67
|
-
|
68
|
-
Assert.Equal(counts, Phrase.WordCount("car : carpet as java : javascript!!&@$%^&"));
|
70
|
+
Assert.Equal(expected, actual);
|
69
71
|
}
|
70
72
|
|
71
73
|
[Fact(Skip = "Remove to run test")]
|
72
|
-
public void
|
74
|
+
public void Ignore_punctuation()
|
73
75
|
{
|
74
|
-
var
|
75
|
-
|
76
|
-
|
77
|
-
|
76
|
+
var actual = WordCount.Countwords("car: carpet as java: javascript!!&@$%^&");
|
77
|
+
var expected = new Dictionary<string, int>
|
78
|
+
{
|
79
|
+
["car"] = 1,
|
80
|
+
["carpet"] = 1,
|
81
|
+
["as"] = 1,
|
82
|
+
["java"] = 1,
|
83
|
+
["javascript"] = 1
|
78
84
|
};
|
79
|
-
|
80
|
-
Assert.Equal(counts, Phrase.WordCount("one,two,three"));
|
85
|
+
Assert.Equal(expected, actual);
|
81
86
|
}
|
82
87
|
|
83
88
|
[Fact(Skip = "Remove to run test")]
|
84
89
|
public void Include_numbers()
|
85
90
|
{
|
86
|
-
var
|
87
|
-
|
88
|
-
|
89
|
-
|
91
|
+
var actual = WordCount.Countwords("testing, 1, 2 testing");
|
92
|
+
var expected = new Dictionary<string, int>
|
93
|
+
{
|
94
|
+
["testing"] = 2,
|
95
|
+
["1"] = 1,
|
96
|
+
["2"] = 1
|
90
97
|
};
|
91
|
-
|
92
|
-
Assert.Equal(counts, Phrase.WordCount("testing, 1, 2 testing"));
|
98
|
+
Assert.Equal(expected, actual);
|
93
99
|
}
|
94
100
|
|
95
101
|
[Fact(Skip = "Remove to run test")]
|
96
102
|
public void Normalize_case()
|
97
103
|
{
|
98
|
-
var
|
99
|
-
|
104
|
+
var actual = WordCount.Countwords("go Go GO Stop stop");
|
105
|
+
var expected = new Dictionary<string, int>
|
106
|
+
{
|
107
|
+
["go"] = 3,
|
108
|
+
["stop"] = 2
|
100
109
|
};
|
101
|
-
|
102
|
-
Assert.Equal(counts, Phrase.WordCount("go Go GO"));
|
110
|
+
Assert.Equal(expected, actual);
|
103
111
|
}
|
104
112
|
|
105
113
|
[Fact(Skip = "Remove to run test")]
|
106
114
|
public void With_apostrophes()
|
107
115
|
{
|
108
|
-
var
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
116
|
+
var actual = WordCount.Countwords("First: don't laugh. Then: don't cry.");
|
117
|
+
var expected = new Dictionary<string, int>
|
118
|
+
{
|
119
|
+
["first"] = 1,
|
120
|
+
["don't"] = 2,
|
121
|
+
["laugh"] = 1,
|
122
|
+
["then"] = 1,
|
123
|
+
["cry"] = 1
|
114
124
|
};
|
115
|
-
|
116
|
-
Assert.Equal(counts, Phrase.WordCount("First: don't laugh. Then: don't cry."));
|
125
|
+
Assert.Equal(expected, actual);
|
117
126
|
}
|
118
127
|
|
119
128
|
[Fact(Skip = "Remove to run test")]
|
120
|
-
public void
|
129
|
+
public void With_quotations()
|
121
130
|
{
|
122
|
-
var
|
123
|
-
|
131
|
+
var actual = WordCount.Countwords("Joe can't tell between 'large' and large.");
|
132
|
+
var expected = new Dictionary<string, int>
|
133
|
+
{
|
134
|
+
["joe"] = 1,
|
135
|
+
["can't"] = 1,
|
136
|
+
["tell"] = 1,
|
137
|
+
["between"] = 1,
|
138
|
+
["large"] = 2,
|
139
|
+
["and"] = 1
|
124
140
|
};
|
125
|
-
|
126
|
-
Assert.Equal(counts, Phrase.WordCount("go ' Go '' GO"));
|
141
|
+
Assert.Equal(expected, actual);
|
127
142
|
}
|
128
|
-
|
129
|
-
[Fact(Skip = "Remove to run test")]
|
130
|
-
public void With_apostrophes_as_quotes()
|
131
|
-
{
|
132
|
-
var counts = new Dictionary<string, int> {
|
133
|
-
{ "she", 1 },
|
134
|
-
{ "said", 1 },
|
135
|
-
{ "let's", 1 },
|
136
|
-
{ "meet", 1 },
|
137
|
-
{ "at", 1 },
|
138
|
-
{ "twelve", 1 },
|
139
|
-
{ "o'clock", 1 },
|
140
|
-
};
|
141
|
-
|
142
|
-
Assert.Equal(counts, Phrase.WordCount("She said, 'let's meet at twelve o'clock'"));
|
143
|
-
}
|
144
|
-
|
145
143
|
}
|
@@ -8,7 +8,6 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData)
|
|
8
8
|
{
|
9
9
|
foreach (var canonicalDataCase in CanonicalData.Cases)
|
10
10
|
{
|
11
|
-
canonicalDataCase.Description = canonicalDataCase.Description.Replace("'", string.Empty);
|
12
11
|
canonicalDataCase.UseVariablesForInput = true;
|
13
12
|
canonicalDataCase.Input["input"] = ((string)canonicalDataCase.Input["input"]).Replace("\"", "\\\"");
|
14
13
|
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
using Generators.Input;
|
2
|
+
|
3
|
+
namespace Generators.Exercises
|
4
|
+
{
|
5
|
+
public class Poker : Exercise
|
6
|
+
{
|
7
|
+
protected override void UpdateCanonicalData(CanonicalData canonicalData)
|
8
|
+
{
|
9
|
+
foreach (var canonicalDataCase in canonicalData.Cases)
|
10
|
+
{
|
11
|
+
canonicalDataCase.UseVariableForExpected = true;
|
12
|
+
canonicalDataCase.UseVariableForTested = true;
|
13
|
+
|
14
|
+
canonicalDataCase.Expected = canonicalDataCase.Expected.ConvertToEnumerable<string>();
|
15
|
+
canonicalDataCase.Input["input"] = canonicalDataCase.Input["input"].ConvertToEnumerable<string>();
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
@@ -10,7 +10,6 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData)
|
|
10
10
|
{
|
11
11
|
canonicalDataCase.TestedMethodType = TestedMethodType.Extension;
|
12
12
|
canonicalDataCase.Property = "ToRoman";
|
13
|
-
canonicalDataCase.Description = "Number_" + canonicalDataCase.Description;
|
14
13
|
}
|
15
14
|
}
|
16
15
|
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
using Generators.Input;
|
2
|
+
using Newtonsoft.Json.Linq;
|
3
|
+
using System.Collections.Generic;
|
4
|
+
|
5
|
+
namespace Generators.Exercises
|
6
|
+
{
|
7
|
+
public class WordCount : Exercise
|
8
|
+
{
|
9
|
+
protected override void UpdateCanonicalData(CanonicalData canonicalData)
|
10
|
+
{
|
11
|
+
foreach (var canonicalDataCase in CanonicalData.Cases)
|
12
|
+
{
|
13
|
+
canonicalDataCase.UseVariableForExpected = true;
|
14
|
+
canonicalDataCase.UseVariableForTested = true;
|
15
|
+
canonicalDataCase.Expected = ((JObject)canonicalDataCase.Expected).ToObject<Dictionary<string, int>>();
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
protected override HashSet<string> GetUsingNamespaces()
|
20
|
+
{
|
21
|
+
var usingNamespaces = base.GetUsingNamespaces();
|
22
|
+
usingNamespaces.Add(typeof(Dictionary<string, int>).Namespace);
|
23
|
+
|
24
|
+
return usingNamespaces;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
@@ -14,10 +14,12 @@ public static class NameExtensions
|
|
14
14
|
|
15
15
|
public static string ToTestMethodName(this string input)
|
16
16
|
{
|
17
|
-
var methodName =
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
var methodName = input
|
18
|
+
.Replace(":", " is")
|
19
|
+
.Replace("'", "");
|
20
|
+
|
21
|
+
methodName = Regex.Replace(methodName, @"[^\w]+", "_", RegexOptions.Compiled)
|
22
|
+
.Transform(To.TitleCase);
|
21
23
|
|
22
24
|
if (char.IsDigit(methodName[0]))
|
23
25
|
return "Number_" + methodName;
|
File without changes
|
data/tracks/go/config.json
CHANGED
@@ -1,1048 +1,1059 @@
|
|
1
1
|
{
|
2
|
-
"language": "Go",
|
3
2
|
"active": true,
|
4
3
|
"blurb": "Go is a compiled, open source programming language with a small, consistent syntax, a powerful standard library, and fantastic tooling. It's a great fit for web backends and command-line tools.",
|
5
|
-
"ignore_pattern": "example(?!.*test)",
|
6
|
-
"foregone": [
|
7
|
-
"space-age",
|
8
|
-
"linked-list",
|
9
|
-
"simple-linked-list"
|
10
|
-
],
|
11
4
|
"exercises": [
|
12
5
|
{
|
13
|
-
"uuid": "19957346-dedf-441e-85ea-656cac0d96d8",
|
14
|
-
"slug": "hello-world",
|
15
6
|
"core": true,
|
16
|
-
"unlocked_by": null,
|
17
7
|
"difficulty": 1,
|
8
|
+
"slug": "hello-world",
|
18
9
|
"topics": [
|
19
|
-
"
|
20
|
-
]
|
10
|
+
"strings"
|
11
|
+
],
|
12
|
+
"unlocked_by": null,
|
13
|
+
"uuid": "19957346-dedf-441e-85ea-656cac0d96d8"
|
21
14
|
},
|
22
15
|
{
|
23
|
-
"uuid": "52582415-8f7f-4ac5-857f-5c160ec48134",
|
24
|
-
"slug": "hamming",
|
25
16
|
"core": true,
|
26
|
-
"unlocked_by":null,
|
27
17
|
"difficulty": 1,
|
18
|
+
"slug": "two-fer",
|
28
19
|
"topics": [
|
29
|
-
"
|
30
|
-
"
|
31
|
-
|
32
|
-
|
20
|
+
"control-flow-(conditionals)",
|
21
|
+
"strings"
|
22
|
+
],
|
23
|
+
"unlocked_by": null,
|
24
|
+
"uuid": "dc4ad67d-0fe4-0880-5a13-3aebb8759bcc3095de1"
|
33
25
|
},
|
34
26
|
{
|
35
|
-
"uuid": "2f51e32a-9b1f-4100-9eec-517115c858e9",
|
36
|
-
"slug": "raindrops",
|
37
27
|
"core": true,
|
38
|
-
"unlocked_by": null,
|
39
28
|
"difficulty": 1,
|
29
|
+
"slug": "hamming",
|
40
30
|
"topics": [
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
]
|
31
|
+
"control-flow-(loops)",
|
32
|
+
"equality",
|
33
|
+
"strings"
|
34
|
+
],
|
35
|
+
"unlocked_by": null,
|
36
|
+
"uuid": "52582415-8f7f-4ac5-857f-5c160ec48134"
|
45
37
|
},
|
46
38
|
{
|
47
|
-
"uuid": "20cbd8f9-f8e3-4767-a0f5-94810ba3f902",
|
48
|
-
"slug": "scrabble-score",
|
49
39
|
"core": true,
|
50
|
-
"unlocked_by": null,
|
51
40
|
"difficulty": 1,
|
41
|
+
"slug": "raindrops",
|
52
42
|
"topics": [
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
56
|
-
]
|
43
|
+
"control-flow-(conditionals)",
|
44
|
+
"filtering",
|
45
|
+
"strings"
|
46
|
+
],
|
47
|
+
"unlocked_by": null,
|
48
|
+
"uuid": "2f51e32a-9b1f-4100-9eec-517115c858e9"
|
57
49
|
},
|
58
50
|
{
|
59
|
-
"uuid": "73da448c-33b7-4565-ab48-1de5020d65ab",
|
60
|
-
"slug": "etl",
|
61
51
|
"core": true,
|
62
|
-
"unlocked_by": null,
|
63
52
|
"difficulty": 1,
|
53
|
+
"slug": "scrabble-score",
|
64
54
|
"topics": [
|
65
|
-
"
|
66
|
-
"
|
67
|
-
"
|
68
|
-
]
|
55
|
+
"control-flow-(loops)",
|
56
|
+
"maps",
|
57
|
+
"strings"
|
58
|
+
],
|
59
|
+
"unlocked_by": null,
|
60
|
+
"uuid": "20cbd8f9-f8e3-4767-a0f5-94810ba3f902"
|
69
61
|
},
|
70
62
|
{
|
71
|
-
"uuid": "19628c8a-a89f-457e-9526-3d400024a927",
|
72
|
-
"slug": "difference-of-squares",
|
73
63
|
"core": true,
|
64
|
+
"difficulty": 1,
|
65
|
+
"slug": "etl",
|
66
|
+
"topics": [
|
67
|
+
"control-flow-(loops)",
|
68
|
+
"maps",
|
69
|
+
"transforming"
|
70
|
+
],
|
74
71
|
"unlocked_by": null,
|
72
|
+
"uuid": "73da448c-33b7-4565-ab48-1de5020d65ab"
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"core": true,
|
75
76
|
"difficulty": 2,
|
77
|
+
"slug": "difference-of-squares",
|
76
78
|
"topics": [
|
77
|
-
"
|
78
|
-
"
|
79
|
-
]
|
79
|
+
"algorithms",
|
80
|
+
"mathematics"
|
81
|
+
],
|
82
|
+
"unlocked_by": null,
|
83
|
+
"uuid": "19628c8a-a89f-457e-9526-3d400024a927"
|
80
84
|
},
|
81
85
|
{
|
82
|
-
"uuid": "7fbb0d9d-71d1-4654-8ca0-bb07ddbe6cb5",
|
83
|
-
"slug": "strain",
|
84
86
|
"core": true,
|
85
|
-
"unlocked_by": null,
|
86
87
|
"difficulty": 2,
|
88
|
+
"slug": "strain",
|
87
89
|
"topics": [
|
88
|
-
"
|
89
|
-
"
|
90
|
-
"
|
91
|
-
]
|
90
|
+
"arrays",
|
91
|
+
"control-flow-(loops)",
|
92
|
+
"filtering"
|
93
|
+
],
|
94
|
+
"unlocked_by": null,
|
95
|
+
"uuid": "7fbb0d9d-71d1-4654-8ca0-bb07ddbe6cb5"
|
92
96
|
},
|
93
97
|
{
|
94
|
-
"uuid": "b39d9e79-dee0-4c70-a6c3-114bee8083f2",
|
95
|
-
"slug": "acronym",
|
96
98
|
"core": true,
|
97
|
-
"unlocked_by": null,
|
98
99
|
"difficulty": 3,
|
100
|
+
"slug": "acronym",
|
99
101
|
"topics": [
|
100
|
-
"
|
101
|
-
"
|
102
|
-
"
|
103
|
-
]
|
102
|
+
"regular-expressions",
|
103
|
+
"strings",
|
104
|
+
"transforming"
|
105
|
+
],
|
106
|
+
"unlocked_by": null,
|
107
|
+
"uuid": "b39d9e79-dee0-4c70-a6c3-114bee8083f2"
|
104
108
|
},
|
105
109
|
{
|
106
|
-
"uuid": "6769557a-33fa-4257-adbf-e66dc8c06f85",
|
107
|
-
"slug": "triangle",
|
108
110
|
"core": true,
|
109
|
-
"unlocked_by": null,
|
110
111
|
"difficulty": 3,
|
112
|
+
"slug": "triangle",
|
111
113
|
"topics": [
|
112
|
-
"
|
113
|
-
"
|
114
|
-
"
|
115
|
-
]
|
114
|
+
"booleans",
|
115
|
+
"control-flow-(conditionals)",
|
116
|
+
"logic"
|
117
|
+
],
|
118
|
+
"unlocked_by": null,
|
119
|
+
"uuid": "6769557a-33fa-4257-adbf-e66dc8c06f85"
|
116
120
|
},
|
117
121
|
{
|
118
|
-
"uuid": "7d2de21e-bf67-495e-8d90-05e1a35d5b99",
|
119
|
-
"slug": "clock",
|
120
122
|
"core": true,
|
121
|
-
"unlocked_by": null,
|
122
123
|
"difficulty": 3,
|
124
|
+
"slug": "clock",
|
123
125
|
"topics": [
|
124
|
-
"
|
125
|
-
"
|
126
|
-
"
|
127
|
-
"
|
128
|
-
]
|
126
|
+
"equality",
|
127
|
+
"mathematics",
|
128
|
+
"text-formatting",
|
129
|
+
"time"
|
130
|
+
],
|
131
|
+
"unlocked_by": null,
|
132
|
+
"uuid": "7d2de21e-bf67-495e-8d90-05e1a35d5b99"
|
129
133
|
},
|
130
134
|
{
|
131
|
-
"uuid": "b765fde9-84b4-44cc-bdf1-f66ac1ab8e2c",
|
132
|
-
"slug": "word-count",
|
133
135
|
"core": true,
|
134
|
-
"unlocked_by": null,
|
135
136
|
"difficulty": 3,
|
137
|
+
"slug": "word-count",
|
136
138
|
"topics": [
|
137
|
-
"
|
138
|
-
"
|
139
|
-
]
|
139
|
+
"sorting",
|
140
|
+
"strings"
|
141
|
+
],
|
142
|
+
"unlocked_by": null,
|
143
|
+
"uuid": "b765fde9-84b4-44cc-bdf1-f66ac1ab8e2c"
|
140
144
|
},
|
141
145
|
{
|
142
|
-
"uuid": "bf366b19-63bf-4a75-9a35-08b881af6951",
|
143
|
-
"slug": "parallel-letter-frequency",
|
144
146
|
"core": true,
|
145
|
-
"unlocked_by": null,
|
146
147
|
"difficulty": 3,
|
148
|
+
"slug": "parallel-letter-frequency",
|
147
149
|
"topics": [
|
148
|
-
"
|
149
|
-
]
|
150
|
+
"concurrency"
|
151
|
+
],
|
152
|
+
"unlocked_by": null,
|
153
|
+
"uuid": "bf366b19-63bf-4a75-9a35-08b881af6951"
|
150
154
|
},
|
151
155
|
{
|
152
|
-
"uuid": "b4f6b08b-a132-447b-b447-66bf37ab20c6",
|
153
|
-
"slug": "grains",
|
154
156
|
"core": true,
|
155
|
-
"unlocked_by": null,
|
156
157
|
"difficulty": 2,
|
158
|
+
"slug": "grains",
|
157
159
|
"topics": [
|
158
|
-
"
|
159
|
-
"
|
160
|
-
"
|
161
|
-
"
|
162
|
-
"
|
163
|
-
]
|
160
|
+
"bitwise-operations",
|
161
|
+
"control-flow-(if-else-statements)",
|
162
|
+
"integers",
|
163
|
+
"mathematics",
|
164
|
+
"type-conversion"
|
165
|
+
],
|
166
|
+
"unlocked_by": null,
|
167
|
+
"uuid": "b4f6b08b-a132-447b-b447-66bf37ab20c6"
|
164
168
|
},
|
165
169
|
{
|
166
|
-
"uuid": "2c5fb577-a9ce-4c4c-8fc8-fffb38d020d6",
|
167
|
-
"slug": "series",
|
168
170
|
"core": true,
|
169
|
-
"unlocked_by": null,
|
170
171
|
"difficulty": 3,
|
172
|
+
"slug": "series",
|
171
173
|
"topics": [
|
172
|
-
"
|
173
|
-
"
|
174
|
-
"
|
175
|
-
]
|
174
|
+
"arrays",
|
175
|
+
"refactoring",
|
176
|
+
"strings"
|
177
|
+
],
|
178
|
+
"unlocked_by": null,
|
179
|
+
"uuid": "2c5fb577-a9ce-4c4c-8fc8-fffb38d020d6"
|
176
180
|
},
|
177
181
|
{
|
178
|
-
"uuid": "31c77516-6702-417e-9c6e-19c7e965d513",
|
179
|
-
"slug": "binary-search",
|
180
182
|
"core": true,
|
181
|
-
"unlocked_by": null,
|
182
183
|
"difficulty": 5,
|
184
|
+
"slug": "binary-search",
|
183
185
|
"topics": [
|
184
|
-
"
|
185
|
-
"
|
186
|
-
"
|
187
|
-
"
|
188
|
-
]
|
186
|
+
"algorithms",
|
187
|
+
"arrays",
|
188
|
+
"searching",
|
189
|
+
"sorting"
|
190
|
+
],
|
191
|
+
"unlocked_by": null,
|
192
|
+
"uuid": "31c77516-6702-417e-9c6e-19c7e965d513"
|
189
193
|
},
|
190
194
|
{
|
191
|
-
"uuid": "75b6e2e8-1e20-4f53-b7c5-e32f9f7eea58",
|
192
|
-
"slug": "twelve-days",
|
193
195
|
"core": true,
|
194
|
-
"unlocked_by": null,
|
195
196
|
"difficulty": 4,
|
197
|
+
"slug": "twelve-days",
|
196
198
|
"topics": [
|
197
|
-
"
|
198
|
-
"
|
199
|
-
"
|
200
|
-
"
|
201
|
-
"
|
202
|
-
]
|
199
|
+
"algorithms",
|
200
|
+
"pattern-recognition",
|
201
|
+
"sequences",
|
202
|
+
"strings",
|
203
|
+
"text-formatting"
|
204
|
+
],
|
205
|
+
"unlocked_by": null,
|
206
|
+
"uuid": "75b6e2e8-1e20-4f53-b7c5-e32f9f7eea58"
|
203
207
|
},
|
204
208
|
{
|
205
|
-
"uuid": "62aa3d20-65d8-440f-9d08-48bbc823f4fe",
|
206
|
-
"slug": "matrix",
|
207
209
|
"core": true,
|
208
|
-
"unlocked_by": null,
|
209
210
|
"difficulty": 4,
|
211
|
+
"slug": "matrix",
|
210
212
|
"topics": [
|
211
|
-
"
|
212
|
-
"
|
213
|
-
"
|
214
|
-
"
|
215
|
-
"
|
216
|
-
]
|
213
|
+
"arrays",
|
214
|
+
"exception-handling",
|
215
|
+
"matrices",
|
216
|
+
"strings",
|
217
|
+
"type-conversion"
|
218
|
+
],
|
219
|
+
"unlocked_by": null,
|
220
|
+
"uuid": "62aa3d20-65d8-440f-9d08-48bbc823f4fe"
|
217
221
|
},
|
218
222
|
{
|
219
|
-
"uuid": "92e2a192-5ee9-422a-8699-c231a7136b10",
|
220
|
-
"slug": "pascals-triangle",
|
221
223
|
"core": false,
|
222
|
-
"unlocked_by": "series",
|
223
224
|
"difficulty": 4,
|
225
|
+
"slug": "pascals-triangle",
|
224
226
|
"topics": [
|
225
|
-
"
|
226
|
-
"
|
227
|
-
]
|
227
|
+
"arrays",
|
228
|
+
"mathematics"
|
229
|
+
],
|
230
|
+
"unlocked_by": "series",
|
231
|
+
"uuid": "92e2a192-5ee9-422a-8699-c231a7136b10"
|
228
232
|
},
|
229
233
|
{
|
230
|
-
"uuid": "95f49a88-6f01-4905-a8b1-a3fcec1f535a",
|
231
|
-
"slug": "queen-attack",
|
232
234
|
"core": true,
|
233
|
-
"unlocked_by": null,
|
234
235
|
"difficulty": 5,
|
236
|
+
"slug": "queen-attack",
|
235
237
|
"topics": [
|
236
|
-
"
|
237
|
-
"
|
238
|
-
"
|
239
|
-
"
|
240
|
-
]
|
238
|
+
"booleans",
|
239
|
+
"errors",
|
240
|
+
"games",
|
241
|
+
"logic"
|
242
|
+
],
|
243
|
+
"unlocked_by": null,
|
244
|
+
"uuid": "95f49a88-6f01-4905-a8b1-a3fcec1f535a"
|
241
245
|
},
|
242
246
|
{
|
243
|
-
"uuid": "fee57b09-2b67-4483-a2e5-3dfec0568b15",
|
244
|
-
"slug": "leap",
|
245
247
|
"core": false,
|
246
|
-
"unlocked_by": "hamming",
|
247
248
|
"difficulty": 1,
|
249
|
+
"slug": "leap",
|
248
250
|
"topics": [
|
249
|
-
"
|
250
|
-
"
|
251
|
-
"
|
252
|
-
"
|
253
|
-
]
|
251
|
+
"booleans",
|
252
|
+
"control-flow-(conditionals)",
|
253
|
+
"integers",
|
254
|
+
"logic"
|
255
|
+
],
|
256
|
+
"unlocked_by": "hamming",
|
257
|
+
"uuid": "fee57b09-2b67-4483-a2e5-3dfec0568b15"
|
254
258
|
},
|
255
259
|
{
|
256
|
-
"uuid": "ea390e58-6ac5-4219-89bb-648852712a6a",
|
257
|
-
"slug": "gigasecond",
|
258
260
|
"core": false,
|
259
|
-
"unlocked_by": "hamming",
|
260
261
|
"difficulty": 1,
|
262
|
+
"slug": "gigasecond",
|
261
263
|
"topics": [
|
262
|
-
"
|
263
|
-
]
|
264
|
+
"time"
|
265
|
+
],
|
266
|
+
"unlocked_by": "hamming",
|
267
|
+
"uuid": "ea390e58-6ac5-4219-89bb-648852712a6a"
|
264
268
|
},
|
265
269
|
{
|
266
|
-
"uuid": "fb03948c-11e8-440d-9a5d-979396451270",
|
267
|
-
"slug": "accumulate",
|
268
270
|
"core": false,
|
269
|
-
"unlocked_by": "raindrops",
|
270
271
|
"difficulty": 1,
|
272
|
+
"slug": "accumulate",
|
271
273
|
"topics": [
|
272
|
-
"
|
273
|
-
]
|
274
|
+
"lists"
|
275
|
+
],
|
276
|
+
"unlocked_by": "raindrops",
|
277
|
+
"uuid": "fb03948c-11e8-440d-9a5d-979396451270"
|
274
278
|
},
|
275
279
|
{
|
276
|
-
"uuid": "d14c6283-e57c-472c-8181-87f82d9088dd",
|
277
|
-
"slug": "pangram",
|
278
280
|
"core": false,
|
279
|
-
"unlocked_by": "raindrops",
|
280
281
|
"difficulty": 2,
|
282
|
+
"slug": "pangram",
|
281
283
|
"topics": [
|
282
|
-
"
|
283
|
-
"
|
284
|
-
]
|
284
|
+
"control-flow-(loops)",
|
285
|
+
"strings"
|
286
|
+
],
|
287
|
+
"unlocked_by": "raindrops",
|
288
|
+
"uuid": "d14c6283-e57c-472c-8181-87f82d9088dd"
|
285
289
|
},
|
286
290
|
{
|
287
|
-
"uuid": "efdf07a1-e329-4d0f-90a1-374b9b8af748",
|
288
|
-
"slug": "bob",
|
289
291
|
"core": false,
|
290
|
-
"unlocked_by": "raindrops",
|
291
292
|
"difficulty": 2,
|
293
|
+
"slug": "bob",
|
292
294
|
"topics": [
|
293
|
-
"
|
294
|
-
"
|
295
|
-
]
|
295
|
+
"control-flow-(conditionals)",
|
296
|
+
"strings"
|
297
|
+
],
|
298
|
+
"unlocked_by": "raindrops",
|
299
|
+
"uuid": "efdf07a1-e329-4d0f-90a1-374b9b8af748"
|
296
300
|
},
|
297
301
|
{
|
298
|
-
"uuid": "cd05b63b-df20-4c8d-8743-53033acf7696",
|
299
|
-
"slug": "error-handling",
|
300
302
|
"core": false,
|
301
|
-
"unlocked_by": "queen-attack",
|
302
303
|
"difficulty": 5,
|
304
|
+
"slug": "error-handling",
|
303
305
|
"topics": [
|
304
|
-
"
|
305
|
-
]
|
306
|
+
"exception-handling"
|
307
|
+
],
|
308
|
+
"unlocked_by": "queen-attack",
|
309
|
+
"uuid": "cd05b63b-df20-4c8d-8743-53033acf7696"
|
306
310
|
},
|
307
311
|
{
|
308
|
-
"uuid": "9a1870e0-dce7-496e-9521-2f2b606ac6c5",
|
309
|
-
"slug": "secret-handshake",
|
310
312
|
"core": false,
|
311
|
-
"unlocked_by": "grains",
|
312
313
|
"difficulty": 5,
|
314
|
+
"slug": "secret-handshake",
|
313
315
|
"topics": [
|
314
|
-
"
|
315
|
-
"
|
316
|
-
"
|
317
|
-
]
|
316
|
+
"arrays",
|
317
|
+
"bitwise-operations",
|
318
|
+
"integers"
|
319
|
+
],
|
320
|
+
"unlocked_by": "grains",
|
321
|
+
"uuid": "9a1870e0-dce7-496e-9521-2f2b606ac6c5"
|
318
322
|
},
|
319
323
|
{
|
320
|
-
"uuid": "11008fb0-4ef9-4aff-befb-c56f4084f96e",
|
321
|
-
"slug": "house",
|
322
324
|
"core": false,
|
323
|
-
"unlocked_by": "twelve-days",
|
324
325
|
"difficulty": 4,
|
326
|
+
"slug": "house",
|
325
327
|
"topics": [
|
326
|
-
"
|
327
|
-
"
|
328
|
-
"
|
329
|
-
]
|
328
|
+
"recursion",
|
329
|
+
"strings",
|
330
|
+
"text-formatting"
|
331
|
+
],
|
332
|
+
"unlocked_by": "twelve-days",
|
333
|
+
"uuid": "11008fb0-4ef9-4aff-befb-c56f4084f96e"
|
330
334
|
},
|
331
335
|
{
|
332
|
-
"uuid": "f0c25fde-960e-4161-a642-4414925b4d0a",
|
333
|
-
"slug": "sum-of-multiples",
|
334
336
|
"core": false,
|
335
|
-
"unlocked_by": "difference-of-squares",
|
336
337
|
"difficulty": 5,
|
338
|
+
"slug": "sum-of-multiples",
|
337
339
|
"topics": [
|
338
|
-
"
|
339
|
-
"
|
340
|
-
]
|
340
|
+
"control-flow-(loops)",
|
341
|
+
"mathematics"
|
342
|
+
],
|
343
|
+
"unlocked_by": "difference-of-squares",
|
344
|
+
"uuid": "f0c25fde-960e-4161-a642-4414925b4d0a"
|
341
345
|
},
|
342
346
|
{
|
343
|
-
"uuid": "6c919eab-7c63-444a-a485-db74d51c3430",
|
344
|
-
"slug": "pythagorean-triplet",
|
345
347
|
"core": false,
|
346
|
-
"unlocked_by": "difference-of-squares",
|
347
348
|
"difficulty": 5,
|
349
|
+
"slug": "pythagorean-triplet",
|
348
350
|
"topics": [
|
349
|
-
"
|
350
|
-
"
|
351
|
-
]
|
351
|
+
"algorithms",
|
352
|
+
"mathematics"
|
353
|
+
],
|
354
|
+
"unlocked_by": "difference-of-squares",
|
355
|
+
"uuid": "6c919eab-7c63-444a-a485-db74d51c3430"
|
352
356
|
},
|
353
357
|
{
|
354
|
-
"uuid": "c2064df8-cce5-4f03-9d85-0818b4e34112",
|
355
|
-
"slug": "isogram",
|
356
358
|
"core": false,
|
357
|
-
"unlocked_by": "pangram",
|
358
359
|
"difficulty": 3,
|
360
|
+
"slug": "isogram",
|
359
361
|
"topics": [
|
360
|
-
"
|
361
|
-
"
|
362
|
-
]
|
362
|
+
"sequences",
|
363
|
+
"strings"
|
364
|
+
],
|
365
|
+
"unlocked_by": "pangram",
|
366
|
+
"uuid": "c2064df8-cce5-4f03-9d85-0818b4e34112"
|
363
367
|
},
|
364
368
|
{
|
365
|
-
"uuid": "7cb6c78e-44e9-499b-a745-3ecb73bea3ab",
|
366
|
-
"slug": "bank-account",
|
367
369
|
"core": false,
|
368
|
-
"unlocked_by": "parallel-letter-frequency",
|
369
370
|
"difficulty": 4,
|
371
|
+
"slug": "bank-account",
|
370
372
|
"topics": [
|
371
|
-
"
|
372
|
-
"
|
373
|
-
]
|
373
|
+
"concurrency",
|
374
|
+
"integers"
|
375
|
+
],
|
376
|
+
"unlocked_by": "parallel-letter-frequency",
|
377
|
+
"uuid": "7cb6c78e-44e9-499b-a745-3ecb73bea3ab"
|
374
378
|
},
|
375
379
|
{
|
376
|
-
"uuid": "a1c065d9-6971-4286-8413-c944e2dddefa",
|
377
|
-
"slug": "crypto-square",
|
378
380
|
"core": false,
|
379
|
-
"unlocked_by": "luhn",
|
380
381
|
"difficulty": 3,
|
382
|
+
"slug": "crypto-square",
|
381
383
|
"topics": [
|
382
|
-
"
|
383
|
-
"
|
384
|
-
"
|
385
|
-
"
|
386
|
-
"
|
387
|
-
]
|
384
|
+
"cryptography",
|
385
|
+
"filtering",
|
386
|
+
"strings",
|
387
|
+
"text-formatting",
|
388
|
+
"transforming"
|
389
|
+
],
|
390
|
+
"unlocked_by": "luhn",
|
391
|
+
"uuid": "a1c065d9-6971-4286-8413-c944e2dddefa"
|
388
392
|
},
|
389
393
|
{
|
390
|
-
"uuid": "8b29da0e-8ead-4e72-a12a-d448c8434767",
|
391
|
-
"slug": "luhn",
|
392
394
|
"core": false,
|
393
|
-
"unlocked_by": "acronym",
|
394
395
|
"difficulty": 2,
|
396
|
+
"slug": "luhn",
|
395
397
|
"topics": [
|
396
|
-
"
|
397
|
-
"
|
398
|
-
"
|
399
|
-
]
|
398
|
+
"algorithms",
|
399
|
+
"integers",
|
400
|
+
"strings"
|
401
|
+
],
|
402
|
+
"unlocked_by": "acronym",
|
403
|
+
"uuid": "8b29da0e-8ead-4e72-a12a-d448c8434767"
|
400
404
|
},
|
401
405
|
{
|
402
|
-
"uuid": "12a16ab5-35fc-4fb2-a018-504953f3ad80",
|
403
|
-
"slug": "food-chain",
|
404
406
|
"core": false,
|
405
|
-
"unlocked_by": "twelve-days",
|
406
407
|
"difficulty": 4,
|
408
|
+
"slug": "food-chain",
|
407
409
|
"topics": [
|
408
|
-
"
|
409
|
-
"
|
410
|
-
"
|
411
|
-
"
|
412
|
-
"
|
413
|
-
]
|
410
|
+
"control-flow-(conditionals)",
|
411
|
+
"control-flow-(loops)",
|
412
|
+
"recursion",
|
413
|
+
"strings",
|
414
|
+
"text-formatting"
|
415
|
+
],
|
416
|
+
"unlocked_by": "twelve-days",
|
417
|
+
"uuid": "12a16ab5-35fc-4fb2-a018-504953f3ad80"
|
414
418
|
},
|
415
419
|
{
|
416
|
-
"uuid": "8ec72d61-d830-48cf-819d-cd4faf0cf67d",
|
417
|
-
"slug": "largest-series-product",
|
418
420
|
"core": false,
|
419
|
-
"unlocked_by": "difference-of-squares",
|
420
421
|
"difficulty": 3,
|
422
|
+
"slug": "largest-series-product",
|
421
423
|
"topics": [
|
422
|
-
"
|
423
|
-
"
|
424
|
-
"
|
425
|
-
]
|
424
|
+
"algorithms",
|
425
|
+
"integers",
|
426
|
+
"sequences"
|
427
|
+
],
|
428
|
+
"unlocked_by": "difference-of-squares",
|
429
|
+
"uuid": "8ec72d61-d830-48cf-819d-cd4faf0cf67d"
|
426
430
|
},
|
427
431
|
{
|
428
|
-
"uuid": "c3469a26-b133-43b4-ab7d-32ea04fa5ce4",
|
429
|
-
"slug": "sieve",
|
430
432
|
"core": false,
|
431
|
-
"unlocked_by": "strain",
|
432
433
|
"difficulty": 3,
|
434
|
+
"slug": "sieve",
|
433
435
|
"topics": [
|
434
|
-
"
|
435
|
-
"
|
436
|
-
"
|
437
|
-
"
|
438
|
-
"
|
439
|
-
]
|
436
|
+
"algorithms",
|
437
|
+
"control-flow-(loops)",
|
438
|
+
"integers",
|
439
|
+
"mathematics",
|
440
|
+
"sorting"
|
441
|
+
],
|
442
|
+
"unlocked_by": "strain",
|
443
|
+
"uuid": "c3469a26-b133-43b4-ab7d-32ea04fa5ce4"
|
440
444
|
},
|
441
445
|
{
|
442
|
-
"uuid": "10f091b1-deda-4fec-8e3c-9dabb080d473",
|
443
|
-
"slug": "palindrome-products",
|
444
446
|
"core": false,
|
445
|
-
"unlocked_by": "perfect-numbers",
|
446
447
|
"difficulty": 6,
|
448
|
+
"slug": "palindrome-products",
|
447
449
|
"topics": [
|
448
|
-
"
|
449
|
-
"
|
450
|
-
]
|
450
|
+
"algorithms",
|
451
|
+
"mathematics"
|
452
|
+
],
|
453
|
+
"unlocked_by": "perfect-numbers",
|
454
|
+
"uuid": "10f091b1-deda-4fec-8e3c-9dabb080d473"
|
451
455
|
},
|
452
456
|
{
|
453
|
-
"uuid": "0b9e07de-c8e4-4d28-b589-897a7ef8062a",
|
454
|
-
"slug": "protein-translation",
|
455
457
|
"core": false,
|
456
|
-
"unlocked_by": "rna-transcription",
|
457
458
|
"difficulty": 3,
|
459
|
+
"slug": "protein-translation",
|
458
460
|
"topics": [
|
459
|
-
"
|
460
|
-
"
|
461
|
-
"
|
462
|
-
]
|
461
|
+
"filtering",
|
462
|
+
"maps",
|
463
|
+
"sequences"
|
464
|
+
],
|
465
|
+
"unlocked_by": "rna-transcription",
|
466
|
+
"uuid": "0b9e07de-c8e4-4d28-b589-897a7ef8062a"
|
463
467
|
},
|
464
468
|
{
|
465
|
-
"uuid": "362f93ab-51e8-4d6a-bd2f-b46432843eb9",
|
466
|
-
"slug": "perfect-numbers",
|
467
469
|
"core": false,
|
468
|
-
"unlocked_by": "clock",
|
469
470
|
"difficulty": 4,
|
471
|
+
"slug": "perfect-numbers",
|
470
472
|
"topics": [
|
471
|
-
"
|
472
|
-
"
|
473
|
-
"
|
474
|
-
"
|
475
|
-
]
|
473
|
+
"algorithms",
|
474
|
+
"filtering",
|
475
|
+
"integers",
|
476
|
+
"mathematics"
|
477
|
+
],
|
478
|
+
"unlocked_by": "clock",
|
479
|
+
"uuid": "362f93ab-51e8-4d6a-bd2f-b46432843eb9"
|
476
480
|
},
|
477
481
|
{
|
478
|
-
"uuid": "6c2499f7-d42c-4d0f-9680-f5f7650023ff",
|
479
|
-
"slug": "bracket-push",
|
480
482
|
"core": false,
|
481
|
-
"unlocked_by": "poker",
|
482
483
|
"difficulty": 7,
|
484
|
+
"slug": "bracket-push",
|
483
485
|
"topics": [
|
484
|
-
"
|
485
|
-
"
|
486
|
-
]
|
486
|
+
"parsing",
|
487
|
+
"strings"
|
488
|
+
],
|
489
|
+
"unlocked_by": "poker",
|
490
|
+
"uuid": "6c2499f7-d42c-4d0f-9680-f5f7650023ff"
|
487
491
|
},
|
488
492
|
{
|
489
|
-
"uuid": "f1db7190-a53d-411d-b538-8dc3f75ddc32",
|
490
|
-
"slug": "anagram",
|
491
493
|
"core": false,
|
492
|
-
"unlocked_by": "scrabble-score",
|
493
494
|
"difficulty": 3,
|
495
|
+
"slug": "anagram",
|
494
496
|
"topics": [
|
495
|
-
"
|
496
|
-
"
|
497
|
-
"
|
498
|
-
]
|
497
|
+
"filtering",
|
498
|
+
"parsing",
|
499
|
+
"strings"
|
500
|
+
],
|
501
|
+
"unlocked_by": "scrabble-score",
|
502
|
+
"uuid": "f1db7190-a53d-411d-b538-8dc3f75ddc32"
|
499
503
|
},
|
500
504
|
{
|
501
|
-
"uuid": "cbfd4cfb-abe7-45f9-80e4-3de3b2639fc8",
|
502
|
-
"slug": "allergies",
|
503
505
|
"core": false,
|
504
|
-
"unlocked_by": "grains",
|
505
506
|
"difficulty": 4,
|
507
|
+
"slug": "allergies",
|
506
508
|
"topics": [
|
507
|
-
"
|
508
|
-
"
|
509
|
-
]
|
509
|
+
"bitwise-operations",
|
510
|
+
"enumeration"
|
511
|
+
],
|
512
|
+
"unlocked_by": "grains",
|
513
|
+
"uuid": "cbfd4cfb-abe7-45f9-80e4-3de3b2639fc8"
|
510
514
|
},
|
511
515
|
{
|
512
|
-
"uuid": "9bef2163-2a24-4d50-9610-e3cac2e7772a",
|
513
|
-
"slug": "rna-transcription",
|
514
516
|
"core": false,
|
515
|
-
"unlocked_by": "scrabble-score",
|
516
517
|
"difficulty": 2,
|
518
|
+
"slug": "rna-transcription",
|
517
519
|
"topics": [
|
518
|
-
|
519
|
-
|
520
|
-
]
|
520
|
+
"maps",
|
521
|
+
"transforming"
|
522
|
+
],
|
523
|
+
"unlocked_by": "scrabble-score",
|
524
|
+
"uuid": "9bef2163-2a24-4d50-9610-e3cac2e7772a"
|
521
525
|
},
|
522
526
|
{
|
523
|
-
"uuid": "eccfd2b3-93cf-41a8-b39b-c29596469e8e",
|
524
|
-
"slug": "roman-numerals",
|
525
527
|
"core": false,
|
526
|
-
"unlocked_by": "acronym",
|
527
528
|
"difficulty": 2,
|
529
|
+
"slug": "roman-numerals",
|
528
530
|
"topics": [
|
529
|
-
"
|
530
|
-
"
|
531
|
-
]
|
531
|
+
"numbers",
|
532
|
+
"transforming"
|
533
|
+
],
|
534
|
+
"unlocked_by": "acronym",
|
535
|
+
"uuid": "eccfd2b3-93cf-41a8-b39b-c29596469e8e"
|
532
536
|
},
|
533
537
|
{
|
534
|
-
"uuid": "5d742499-b130-458a-ba3e-a4c3d75419c3",
|
535
|
-
"slug": "say",
|
536
538
|
"core": false,
|
537
|
-
"unlocked_by": "meetup",
|
538
539
|
"difficulty": 7,
|
540
|
+
"slug": "say",
|
539
541
|
"topics": [
|
540
|
-
"
|
541
|
-
"
|
542
|
-
"
|
543
|
-
"
|
544
|
-
]
|
542
|
+
"numbers",
|
543
|
+
"strings",
|
544
|
+
"text-formatting",
|
545
|
+
"transforming"
|
546
|
+
],
|
547
|
+
"unlocked_by": "meetup",
|
548
|
+
"uuid": "5d742499-b130-458a-ba3e-a4c3d75419c3"
|
545
549
|
},
|
546
550
|
{
|
547
|
-
"uuid": "c13edd0a-cd39-4f25-970c-c1f9e32bac2c",
|
548
|
-
"slug": "circular-buffer",
|
549
551
|
"core": false,
|
550
|
-
"unlocked_by": "grade-school",
|
551
552
|
"difficulty": 5,
|
553
|
+
"slug": "circular-buffer",
|
552
554
|
"topics": [
|
553
|
-
"
|
554
|
-
"
|
555
|
-
]
|
555
|
+
"queues",
|
556
|
+
"structs"
|
557
|
+
],
|
558
|
+
"unlocked_by": "grade-school",
|
559
|
+
"uuid": "c13edd0a-cd39-4f25-970c-c1f9e32bac2c"
|
556
560
|
},
|
557
561
|
{
|
558
|
-
"uuid": "86b8f1e6-e088-403e-984a-abd360f5dcef",
|
559
|
-
"slug": "robot-name",
|
560
562
|
"core": false,
|
561
|
-
"unlocked_by": "scrabble-score",
|
562
563
|
"difficulty": 3,
|
564
|
+
"slug": "robot-name",
|
563
565
|
"topics": [
|
564
|
-
"
|
565
|
-
]
|
566
|
+
"randomness"
|
567
|
+
],
|
568
|
+
"unlocked_by": "scrabble-score",
|
569
|
+
"uuid": "86b8f1e6-e088-403e-984a-abd360f5dcef"
|
566
570
|
},
|
567
571
|
{
|
568
|
-
"uuid": "47b9ad32-e9d9-4cbc-b106-540f3afbfa80",
|
569
|
-
"slug": "diamond",
|
570
572
|
"core": false,
|
571
|
-
"unlocked_by": "series",
|
572
573
|
"difficulty": 4,
|
574
|
+
"slug": "diamond",
|
573
575
|
"topics": [
|
574
|
-
"
|
575
|
-
"
|
576
|
-
"
|
577
|
-
"
|
578
|
-
"
|
579
|
-
]
|
576
|
+
"algorithms",
|
577
|
+
"control-flow-(conditionals)",
|
578
|
+
"control-flow-(loops)",
|
579
|
+
"strings",
|
580
|
+
"text-formatting"
|
581
|
+
],
|
582
|
+
"unlocked_by": "series",
|
583
|
+
"uuid": "47b9ad32-e9d9-4cbc-b106-540f3afbfa80"
|
580
584
|
},
|
581
585
|
{
|
582
|
-
"uuid": "4b168cb9-605b-465d-8f89-3a3b760c1402",
|
583
|
-
"slug": "react",
|
584
586
|
"core": false,
|
585
|
-
"unlocked_by": "queen-attack",
|
586
587
|
"difficulty": 9,
|
588
|
+
"slug": "react",
|
587
589
|
"topics": [
|
588
|
-
"
|
589
|
-
]
|
590
|
+
"reactive-programming"
|
591
|
+
],
|
592
|
+
"unlocked_by": "queen-attack",
|
593
|
+
"uuid": "4b168cb9-605b-465d-8f89-3a3b760c1402"
|
590
594
|
},
|
591
595
|
{
|
592
|
-
"uuid": "ad12bbf9-e0c8-433a-8a6b-847ff2d36acf",
|
593
|
-
"slug": "custom-set",
|
594
596
|
"core": false,
|
595
|
-
"unlocked_by": "strain",
|
596
597
|
"difficulty": 4,
|
598
|
+
"slug": "custom-set",
|
597
599
|
"topics": [
|
598
|
-
"
|
599
|
-
"
|
600
|
-
"
|
601
|
-
]
|
600
|
+
"control-flow-(loops)",
|
601
|
+
"filtering",
|
602
|
+
"sets"
|
603
|
+
],
|
604
|
+
"unlocked_by": "strain",
|
605
|
+
"uuid": "ad12bbf9-e0c8-433a-8a6b-847ff2d36acf"
|
602
606
|
},
|
603
607
|
{
|
604
|
-
"uuid": "84bda80c-b82c-45f6-95d4-5568d23a22dd",
|
605
|
-
"slug": "atbash-cipher",
|
606
608
|
"core": false,
|
607
|
-
"unlocked_by": "luhn",
|
608
609
|
"difficulty": 3,
|
610
|
+
"slug": "atbash-cipher",
|
609
611
|
"topics": [
|
610
|
-
"
|
611
|
-
"
|
612
|
-
"
|
613
|
-
"
|
614
|
-
]
|
612
|
+
"algorithms",
|
613
|
+
"cryptography",
|
614
|
+
"strings",
|
615
|
+
"transforming"
|
616
|
+
],
|
617
|
+
"unlocked_by": "luhn",
|
618
|
+
"uuid": "84bda80c-b82c-45f6-95d4-5568d23a22dd"
|
615
619
|
},
|
616
620
|
{
|
617
|
-
"uuid": "458053ea-43a9-409f-a1a6-a7f31329aca4",
|
618
|
-
"slug": "phone-number",
|
619
621
|
"core": false,
|
620
|
-
"unlocked_by": "etl",
|
621
622
|
"difficulty": 3,
|
623
|
+
"slug": "phone-number",
|
622
624
|
"topics": [
|
623
|
-
"
|
624
|
-
"
|
625
|
-
"
|
626
|
-
"
|
627
|
-
]
|
625
|
+
"control-flow-(conditionals)",
|
626
|
+
"strings",
|
627
|
+
"text-formatting",
|
628
|
+
"transforming"
|
629
|
+
],
|
630
|
+
"unlocked_by": "etl",
|
631
|
+
"uuid": "458053ea-43a9-409f-a1a6-a7f31329aca4"
|
628
632
|
},
|
629
633
|
{
|
630
|
-
"uuid": "4fe8ba14-20ba-4aa3-b134-7aed799a7522",
|
631
|
-
"slug": "pig-latin",
|
632
634
|
"core": false,
|
633
|
-
"unlocked_by": "phone-number",
|
634
635
|
"difficulty": 4,
|
636
|
+
"slug": "pig-latin",
|
635
637
|
"topics": [
|
636
|
-
"
|
637
|
-
"
|
638
|
-
"
|
639
|
-
]
|
638
|
+
"control-flow-(conditionals)",
|
639
|
+
"strings",
|
640
|
+
"transforming"
|
641
|
+
],
|
642
|
+
"unlocked_by": "phone-number",
|
643
|
+
"uuid": "4fe8ba14-20ba-4aa3-b134-7aed799a7522"
|
640
644
|
},
|
641
645
|
{
|
642
|
-
"uuid": "dbf4d64e-c02d-4bdf-8be1-43f9acb5f2ad",
|
643
|
-
"slug": "prime-factors",
|
644
646
|
"core": false,
|
645
|
-
"unlocked_by": "clock",
|
646
647
|
"difficulty": 3,
|
648
|
+
"slug": "prime-factors",
|
647
649
|
"topics": [
|
648
|
-
"
|
649
|
-
"
|
650
|
-
"
|
651
|
-
]
|
650
|
+
"algorithms",
|
651
|
+
"integers",
|
652
|
+
"mathematics"
|
653
|
+
],
|
654
|
+
"unlocked_by": "clock",
|
655
|
+
"uuid": "dbf4d64e-c02d-4bdf-8be1-43f9acb5f2ad"
|
652
656
|
},
|
653
657
|
{
|
654
|
-
"uuid": "7f19ebbd-b072-45e5-ad67-2fff8ad1c9e2",
|
655
|
-
"slug": "transpose",
|
656
658
|
"core": false,
|
657
|
-
"unlocked_by": "roman-numerals",
|
658
659
|
"difficulty": 5,
|
660
|
+
"slug": "transpose",
|
659
661
|
"topics": [
|
660
|
-
"
|
661
|
-
"
|
662
|
-
"
|
663
|
-
]
|
662
|
+
"control-flow-(loops)",
|
663
|
+
"strings",
|
664
|
+
"transforming"
|
665
|
+
],
|
666
|
+
"unlocked_by": "roman-numerals",
|
667
|
+
"uuid": "7f19ebbd-b072-45e5-ad67-2fff8ad1c9e2"
|
664
668
|
},
|
665
669
|
{
|
666
|
-
"uuid": "128e0b12-0ad2-431a-971c-ad4ab098b42d",
|
667
|
-
"slug": "nth-prime",
|
668
670
|
"core": false,
|
669
|
-
"unlocked_by": "difference-of-squares",
|
670
671
|
"difficulty": 3,
|
672
|
+
"slug": "nth-prime",
|
671
673
|
"topics": [
|
672
|
-
"
|
673
|
-
"
|
674
|
-
"
|
675
|
-
]
|
674
|
+
"algorithms",
|
675
|
+
"integers",
|
676
|
+
"mathematics"
|
677
|
+
],
|
678
|
+
"unlocked_by": "difference-of-squares",
|
679
|
+
"uuid": "128e0b12-0ad2-431a-971c-ad4ab098b42d"
|
676
680
|
},
|
677
681
|
{
|
678
|
-
"uuid": "f3058f8b-7e0e-4adb-9add-1df23607d4ed",
|
679
|
-
"slug": "diffie-hellman",
|
680
682
|
"core": false,
|
681
|
-
"unlocked_by": "luhn",
|
682
683
|
"difficulty": 5,
|
684
|
+
"slug": "diffie-hellman",
|
683
685
|
"topics": [
|
684
|
-
"
|
685
|
-
"
|
686
|
-
"
|
687
|
-
"
|
688
|
-
]
|
686
|
+
"algorithms",
|
687
|
+
"cryptography",
|
688
|
+
"integers",
|
689
|
+
"transforming"
|
690
|
+
],
|
691
|
+
"unlocked_by": "luhn",
|
692
|
+
"uuid": "f3058f8b-7e0e-4adb-9add-1df23607d4ed"
|
689
693
|
},
|
690
694
|
{
|
691
|
-
"uuid": "094ea17e-1759-443a-9117-7c72c6f68b8d",
|
692
|
-
"slug": "beer-song",
|
693
695
|
"core": false,
|
694
|
-
"unlocked_by": "twelve-days",
|
695
696
|
"difficulty": 3,
|
697
|
+
"slug": "beer-song",
|
696
698
|
"topics": [
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
]
|
699
|
+
"control-flow-(loops)",
|
700
|
+
"strings",
|
701
|
+
"text-formatting"
|
702
|
+
],
|
703
|
+
"unlocked_by": "twelve-days",
|
704
|
+
"uuid": "094ea17e-1759-443a-9117-7c72c6f68b8d"
|
701
705
|
},
|
702
706
|
{
|
703
|
-
"uuid": "13e58d89-4dbb-4384-9268-2f8083588d7a",
|
704
|
-
"slug": "ocr-numbers",
|
705
707
|
"core": false,
|
706
|
-
"unlocked_by": "poker",
|
707
708
|
"difficulty": 7,
|
709
|
+
"slug": "ocr-numbers",
|
708
710
|
"topics": [
|
709
|
-
"
|
710
|
-
"
|
711
|
-
]
|
711
|
+
"parsing",
|
712
|
+
"pattern-recognition"
|
713
|
+
],
|
714
|
+
"unlocked_by": "poker",
|
715
|
+
"uuid": "13e58d89-4dbb-4384-9268-2f8083588d7a"
|
712
716
|
},
|
713
717
|
{
|
714
|
-
"uuid": "1eb7d7b2-6367-4038-bb86-7dc6c682b6a3",
|
715
|
-
"slug": "wordy",
|
716
718
|
"core": false,
|
717
|
-
"unlocked_by": "triangle",
|
718
719
|
"difficulty": 3,
|
720
|
+
"slug": "wordy",
|
719
721
|
"topics": [
|
720
|
-
"
|
721
|
-
"
|
722
|
-
"
|
723
|
-
"
|
724
|
-
"
|
725
|
-
]
|
722
|
+
"control-flow-(conditionals)",
|
723
|
+
"integers",
|
724
|
+
"parsing",
|
725
|
+
"strings",
|
726
|
+
"type-conversion"
|
727
|
+
],
|
728
|
+
"unlocked_by": "triangle",
|
729
|
+
"uuid": "1eb7d7b2-6367-4038-bb86-7dc6c682b6a3"
|
726
730
|
},
|
727
731
|
{
|
728
|
-
"uuid": "5911d90f-ba2f-482f-8c92-c01c112d6fdd",
|
729
|
-
"slug": "nucleotide-count",
|
730
732
|
"core": false,
|
731
|
-
"unlocked_by": "scrabble-score",
|
732
733
|
"difficulty": 2,
|
734
|
+
"slug": "nucleotide-count",
|
733
735
|
"topics": [
|
734
|
-
"
|
735
|
-
"
|
736
|
-
"
|
737
|
-
]
|
736
|
+
"maps",
|
737
|
+
"parsing",
|
738
|
+
"strings"
|
739
|
+
],
|
740
|
+
"unlocked_by": "scrabble-score",
|
741
|
+
"uuid": "5911d90f-ba2f-482f-8c92-c01c112d6fdd"
|
738
742
|
},
|
739
743
|
{
|
740
|
-
"uuid": "aa598f3e-9d2b-4f9f-8c14-46e0ac27d5be",
|
741
|
-
"slug": "grade-school",
|
742
744
|
"core": false,
|
743
|
-
"unlocked_by": "word-count",
|
744
745
|
"difficulty": 5,
|
746
|
+
"slug": "grade-school",
|
745
747
|
"topics": [
|
746
|
-
"
|
747
|
-
"
|
748
|
-
"
|
749
|
-
]
|
748
|
+
"lists",
|
749
|
+
"sorting",
|
750
|
+
"structs"
|
751
|
+
],
|
752
|
+
"unlocked_by": "word-count",
|
753
|
+
"uuid": "aa598f3e-9d2b-4f9f-8c14-46e0ac27d5be"
|
750
754
|
},
|
751
755
|
{
|
752
|
-
"uuid": "c78102b0-aaa3-4edb-a315-4fcdc26ccae8",
|
753
|
-
"slug": "saddle-points",
|
754
756
|
"core": false,
|
755
|
-
"unlocked_by": "matrix",
|
756
757
|
"difficulty": 5,
|
758
|
+
"slug": "saddle-points",
|
757
759
|
"topics": [
|
758
|
-
"
|
759
|
-
"
|
760
|
-
"
|
761
|
-
"
|
762
|
-
]
|
760
|
+
"arrays",
|
761
|
+
"integers",
|
762
|
+
"matrices",
|
763
|
+
"searching"
|
764
|
+
],
|
765
|
+
"unlocked_by": "matrix",
|
766
|
+
"uuid": "c78102b0-aaa3-4edb-a315-4fcdc26ccae8"
|
763
767
|
},
|
764
768
|
{
|
765
|
-
"uuid": "fcf735fe-a659-40ae-858e-6d1e834a4faf",
|
766
|
-
"slug": "meetup",
|
767
769
|
"core": false,
|
768
|
-
"unlocked_by": "roman-numerals",
|
769
770
|
"difficulty": 3,
|
771
|
+
"slug": "meetup",
|
770
772
|
"topics": [
|
771
|
-
"
|
772
|
-
"
|
773
|
-
"
|
774
|
-
"
|
775
|
-
]
|
773
|
+
"dates",
|
774
|
+
"time",
|
775
|
+
"transforming",
|
776
|
+
"type-conversion"
|
777
|
+
],
|
778
|
+
"unlocked_by": "roman-numerals",
|
779
|
+
"uuid": "fcf735fe-a659-40ae-858e-6d1e834a4faf"
|
776
780
|
},
|
777
781
|
{
|
778
|
-
"uuid": "ac680609-4e52-468d-bf17-afbf7b2fa74b",
|
779
|
-
"slug": "binary-search-tree",
|
780
782
|
"core": false,
|
781
|
-
"unlocked_by": "binary-search",
|
782
783
|
"difficulty": 5,
|
784
|
+
"slug": "binary-search-tree",
|
783
785
|
"topics": [
|
784
|
-
"
|
785
|
-
"
|
786
|
-
"
|
787
|
-
"
|
788
|
-
"
|
789
|
-
"
|
790
|
-
]
|
786
|
+
"algorithms",
|
787
|
+
"recursion",
|
788
|
+
"searching",
|
789
|
+
"sorting",
|
790
|
+
"structs",
|
791
|
+
"trees"
|
792
|
+
],
|
793
|
+
"unlocked_by": "binary-search",
|
794
|
+
"uuid": "ac680609-4e52-468d-bf17-afbf7b2fa74b"
|
791
795
|
},
|
792
796
|
{
|
793
|
-
"uuid": "d0a2afab-e30d-4617-b646-413a44ecf2ed",
|
794
|
-
"slug": "tree-building",
|
795
797
|
"core": false,
|
796
|
-
"unlocked_by": "series",
|
797
798
|
"difficulty": 3,
|
799
|
+
"slug": "tree-building",
|
798
800
|
"topics": [
|
799
|
-
"
|
800
|
-
"
|
801
|
-
"
|
802
|
-
"
|
803
|
-
]
|
801
|
+
"records",
|
802
|
+
"refactoring",
|
803
|
+
"sorting",
|
804
|
+
"trees"
|
805
|
+
],
|
806
|
+
"unlocked_by": "series",
|
807
|
+
"uuid": "d0a2afab-e30d-4617-b646-413a44ecf2ed"
|
804
808
|
},
|
805
809
|
{
|
806
|
-
"uuid": "4282b1f6-d1a2-41b4-9a7f-a9a145fb283b",
|
807
|
-
"slug": "kindergarten-garden",
|
808
810
|
"core": false,
|
809
|
-
"unlocked_by": "clock",
|
810
811
|
"difficulty": 3,
|
812
|
+
"slug": "kindergarten-garden",
|
811
813
|
"topics": [
|
812
|
-
"
|
813
|
-
"
|
814
|
-
"
|
815
|
-
"
|
816
|
-
"
|
817
|
-
]
|
814
|
+
"parsing",
|
815
|
+
"records",
|
816
|
+
"searching",
|
817
|
+
"strings",
|
818
|
+
"structs"
|
819
|
+
],
|
820
|
+
"unlocked_by": "clock",
|
821
|
+
"uuid": "4282b1f6-d1a2-41b4-9a7f-a9a145fb283b"
|
818
822
|
},
|
819
823
|
{
|
820
|
-
"uuid": "7b9201fa-92d2-43fd-8b35-4c552336570b",
|
821
|
-
"slug": "simple-cipher",
|
822
824
|
"core": false,
|
823
|
-
"unlocked_by": "luhn",
|
824
825
|
"difficulty": 3,
|
826
|
+
"slug": "simple-cipher",
|
825
827
|
"topics": [
|
826
|
-
"
|
827
|
-
"
|
828
|
-
"
|
829
|
-
"
|
830
|
-
"
|
831
|
-
]
|
828
|
+
"algorithms",
|
829
|
+
"cryptography",
|
830
|
+
"interfaces",
|
831
|
+
"strings",
|
832
|
+
"transforming"
|
833
|
+
],
|
834
|
+
"unlocked_by": "luhn",
|
835
|
+
"uuid": "7b9201fa-92d2-43fd-8b35-4c552336570b"
|
832
836
|
},
|
833
837
|
{
|
834
|
-
"uuid": "5dbec590-7a50-4398-987b-7252734216a2",
|
835
|
-
"slug": "paasio",
|
836
838
|
"core": false,
|
837
|
-
"unlocked_by": "parallel-letter-frequency",
|
838
839
|
"difficulty": 5,
|
840
|
+
"slug": "paasio",
|
839
841
|
"topics": [
|
840
|
-
"
|
841
|
-
"
|
842
|
-
"
|
843
|
-
]
|
842
|
+
"concurrency",
|
843
|
+
"interfaces",
|
844
|
+
"networking"
|
845
|
+
],
|
846
|
+
"unlocked_by": "parallel-letter-frequency",
|
847
|
+
"uuid": "5dbec590-7a50-4398-987b-7252734216a2"
|
844
848
|
},
|
845
849
|
{
|
846
|
-
"uuid": "cdbadf95-66ff-455f-bea3-eff5024afcb7",
|
847
|
-
"slug": "pov",
|
848
850
|
"core": false,
|
849
|
-
"unlocked_by": "tree-building",
|
850
851
|
"difficulty": 7,
|
852
|
+
"slug": "pov",
|
851
853
|
"topics": [
|
852
|
-
"
|
853
|
-
"
|
854
|
-
"
|
855
|
-
"
|
856
|
-
"
|
857
|
-
]
|
854
|
+
"graphs",
|
855
|
+
"recursion",
|
856
|
+
"structs",
|
857
|
+
"transforming",
|
858
|
+
"trees"
|
859
|
+
],
|
860
|
+
"unlocked_by": "tree-building",
|
861
|
+
"uuid": "cdbadf95-66ff-455f-bea3-eff5024afcb7"
|
858
862
|
},
|
859
863
|
{
|
860
|
-
"uuid": "3bf049f8-7283-4370-aa0c-e10e99d9ef80",
|
861
|
-
"slug": "minesweeper",
|
862
864
|
"core": false,
|
863
|
-
"unlocked_by": "sieve",
|
864
865
|
"difficulty": 5,
|
866
|
+
"slug": "minesweeper",
|
865
867
|
"topics": [
|
866
|
-
"
|
867
|
-
"
|
868
|
-
"
|
869
|
-
"
|
870
|
-
"
|
871
|
-
]
|
868
|
+
"arrays",
|
869
|
+
"control-flow-(loops)",
|
870
|
+
"games",
|
871
|
+
"matrices",
|
872
|
+
"transforming"
|
873
|
+
],
|
874
|
+
"unlocked_by": "sieve",
|
875
|
+
"uuid": "3bf049f8-7283-4370-aa0c-e10e99d9ef80"
|
872
876
|
},
|
873
877
|
{
|
874
|
-
"uuid": "fc0e4034-0744-43f8-9969-7789cff0607f",
|
875
|
-
"slug": "robot-simulator",
|
876
878
|
"core": false,
|
877
|
-
"unlocked_by": "queen-attack",
|
878
879
|
"difficulty": 6,
|
880
|
+
"slug": "robot-simulator",
|
879
881
|
"topics": [
|
880
|
-
"
|
881
|
-
"
|
882
|
-
"
|
883
|
-
"
|
884
|
-
"
|
885
|
-
]
|
882
|
+
"concurrency",
|
883
|
+
"control-flow-(loops)",
|
884
|
+
"sequences",
|
885
|
+
"strings",
|
886
|
+
"structs"
|
887
|
+
],
|
888
|
+
"unlocked_by": "queen-attack",
|
889
|
+
"uuid": "fc0e4034-0744-43f8-9969-7789cff0607f"
|
886
890
|
},
|
887
891
|
{
|
888
|
-
"uuid": "572d03ec-d763-400e-ba4f-5a6a92d5af98",
|
889
|
-
"slug": "tournament",
|
890
892
|
"core": false,
|
891
|
-
"unlocked_by": "kindergarten-garden",
|
892
893
|
"difficulty": 3,
|
894
|
+
"slug": "tournament",
|
893
895
|
"topics": [
|
894
|
-
"
|
895
|
-
"
|
896
|
-
"
|
897
|
-
"
|
898
|
-
"
|
899
|
-
"
|
900
|
-
"
|
901
|
-
]
|
896
|
+
"integers",
|
897
|
+
"parsing",
|
898
|
+
"records",
|
899
|
+
"sorting",
|
900
|
+
"strings",
|
901
|
+
"text-formatting",
|
902
|
+
"transforming"
|
903
|
+
],
|
904
|
+
"unlocked_by": "kindergarten-garden",
|
905
|
+
"uuid": "572d03ec-d763-400e-ba4f-5a6a92d5af98"
|
902
906
|
},
|
903
907
|
{
|
904
|
-
"uuid": "7fdf352b-e5a3-452e-91a2-03587be48ad0",
|
905
|
-
"slug": "word-search",
|
906
908
|
"core": false,
|
907
|
-
"unlocked_by": "matrix",
|
908
909
|
"difficulty": 4,
|
910
|
+
"slug": "word-search",
|
909
911
|
"topics": [
|
910
|
-
"
|
911
|
-
"
|
912
|
-
"
|
913
|
-
]
|
912
|
+
"matrices",
|
913
|
+
"searching",
|
914
|
+
"strings"
|
915
|
+
],
|
916
|
+
"unlocked_by": "matrix",
|
917
|
+
"uuid": "7fdf352b-e5a3-452e-91a2-03587be48ad0"
|
914
918
|
},
|
915
919
|
{
|
916
|
-
"uuid": "932a7ed0-c331-49b1-917b-a197198f642a",
|
917
|
-
"slug": "all-your-base",
|
918
920
|
"core": false,
|
919
|
-
"unlocked_by": "wordy",
|
920
921
|
"difficulty": 3,
|
922
|
+
"slug": "all-your-base",
|
921
923
|
"topics": [
|
922
|
-
"
|
923
|
-
"
|
924
|
-
"
|
925
|
-
]
|
924
|
+
"integers",
|
925
|
+
"mathematics",
|
926
|
+
"transforming"
|
927
|
+
],
|
928
|
+
"unlocked_by": "wordy",
|
929
|
+
"uuid": "932a7ed0-c331-49b1-917b-a197198f642a"
|
926
930
|
},
|
927
931
|
{
|
928
|
-
"uuid": "395116bc-5be9-4140-a2ef-c7e8689149f2",
|
929
|
-
"slug": "connect",
|
930
932
|
"core": false,
|
931
|
-
"unlocked_by": "bowling",
|
932
933
|
"difficulty": 9,
|
934
|
+
"slug": "connect",
|
933
935
|
"topics": [
|
934
|
-
"
|
935
|
-
"
|
936
|
-
"
|
937
|
-
"
|
938
|
-
"
|
939
|
-
]
|
936
|
+
"arrays",
|
937
|
+
"control-flow-(loops)",
|
938
|
+
"games",
|
939
|
+
"graphs",
|
940
|
+
"searching"
|
941
|
+
],
|
942
|
+
"unlocked_by": "bowling",
|
943
|
+
"uuid": "395116bc-5be9-4140-a2ef-c7e8689149f2"
|
940
944
|
},
|
941
945
|
{
|
942
|
-
"uuid": "7aa53a27-4ff3-4891-809f-2af728eb55a0",
|
943
|
-
"slug": "ledger",
|
944
946
|
"core": false,
|
945
|
-
"unlocked_by": "series",
|
946
947
|
"difficulty": 4,
|
948
|
+
"slug": "ledger",
|
947
949
|
"topics": [
|
948
|
-
"
|
949
|
-
"
|
950
|
-
"
|
951
|
-
"
|
952
|
-
"
|
953
|
-
"
|
954
|
-
"
|
955
|
-
]
|
950
|
+
"dates",
|
951
|
+
"integers",
|
952
|
+
"records",
|
953
|
+
"refactoring",
|
954
|
+
"sorting",
|
955
|
+
"strings",
|
956
|
+
"text-formatting"
|
957
|
+
],
|
958
|
+
"unlocked_by": "series",
|
959
|
+
"uuid": "7aa53a27-4ff3-4891-809f-2af728eb55a0"
|
956
960
|
},
|
957
961
|
{
|
958
|
-
"uuid": "9be60690-39bb-4173-a2ed-faa4acd8f38f",
|
959
|
-
"slug": "poker",
|
960
962
|
"core": false,
|
961
|
-
"unlocked_by": "tournament",
|
962
963
|
"difficulty": 5,
|
964
|
+
"slug": "poker",
|
963
965
|
"topics": [
|
964
|
-
"
|
965
|
-
"
|
966
|
-
"
|
967
|
-
"
|
968
|
-
"
|
969
|
-
"
|
970
|
-
]
|
966
|
+
"equality",
|
967
|
+
"games",
|
968
|
+
"parsing",
|
969
|
+
"pattern-matching",
|
970
|
+
"sequences",
|
971
|
+
"strings"
|
972
|
+
],
|
973
|
+
"unlocked_by": "tournament",
|
974
|
+
"uuid": "9be60690-39bb-4173-a2ed-faa4acd8f38f"
|
971
975
|
},
|
972
976
|
{
|
973
|
-
"uuid": "333231db-2605-438e-9eb0-d1bdc51c7419",
|
974
|
-
"slug": "variable-length-quantity",
|
975
977
|
"core": false,
|
976
|
-
"unlocked_by": "grains",
|
977
978
|
"difficulty": 5,
|
979
|
+
"slug": "variable-length-quantity",
|
978
980
|
"topics": [
|
979
|
-
"
|
980
|
-
"
|
981
|
-
"
|
982
|
-
]
|
981
|
+
"bitwise-operations",
|
982
|
+
"integers",
|
983
|
+
"transforming"
|
984
|
+
],
|
985
|
+
"unlocked_by": "grains",
|
986
|
+
"uuid": "333231db-2605-438e-9eb0-d1bdc51c7419"
|
983
987
|
},
|
984
988
|
{
|
985
|
-
"uuid": "09d0d78f-f262-4f34-b1de-c2acd7ed80cd",
|
986
|
-
"slug": "forth",
|
987
989
|
"core": false,
|
988
|
-
"unlocked_by": "bracket-push",
|
989
990
|
"difficulty": 8,
|
991
|
+
"slug": "forth",
|
990
992
|
"topics": [
|
991
|
-
"
|
992
|
-
"
|
993
|
-
"
|
994
|
-
]
|
993
|
+
"domain-specific-languages",
|
994
|
+
"parsing",
|
995
|
+
"stacks"
|
996
|
+
],
|
997
|
+
"unlocked_by": "bracket-push",
|
998
|
+
"uuid": "09d0d78f-f262-4f34-b1de-c2acd7ed80cd"
|
995
999
|
},
|
996
1000
|
{
|
997
|
-
"uuid": "94a21509-ebd5-4a66-bb0e-0341e57e3c73",
|
998
|
-
"slug": "change",
|
999
1001
|
"core": false,
|
1000
|
-
"unlocked_by": "kindergarten-garden",
|
1001
1002
|
"difficulty": 5,
|
1003
|
+
"slug": "change",
|
1002
1004
|
"topics": [
|
1003
|
-
"
|
1004
|
-
"
|
1005
|
-
"
|
1006
|
-
"
|
1007
|
-
"
|
1008
|
-
]
|
1005
|
+
"algorithms",
|
1006
|
+
"arrays",
|
1007
|
+
"control-flow-(loops)",
|
1008
|
+
"mathematics",
|
1009
|
+
"searching"
|
1010
|
+
],
|
1011
|
+
"unlocked_by": "kindergarten-garden",
|
1012
|
+
"uuid": "94a21509-ebd5-4a66-bb0e-0341e57e3c73"
|
1009
1013
|
},
|
1010
1014
|
{
|
1011
|
-
"uuid": "8d5aaf47-7503-4797-85ed-d35a8755cfd4",
|
1012
|
-
"slug": "bowling",
|
1013
1015
|
"core": false,
|
1014
|
-
"unlocked_by": "queen-attack",
|
1015
1016
|
"difficulty": 5,
|
1017
|
+
"slug": "bowling",
|
1016
1018
|
"topics": [
|
1017
|
-
"
|
1018
|
-
"
|
1019
|
-
"
|
1020
|
-
]
|
1019
|
+
"algorithms",
|
1020
|
+
"arrays",
|
1021
|
+
"control-flow-(conditionals)"
|
1022
|
+
],
|
1023
|
+
"unlocked_by": "queen-attack",
|
1024
|
+
"uuid": "8d5aaf47-7503-4797-85ed-d35a8755cfd4"
|
1021
1025
|
},
|
1022
1026
|
{
|
1023
|
-
"
|
1027
|
+
"deprecated": true,
|
1024
1028
|
"slug": "binary",
|
1025
|
-
"
|
1029
|
+
"uuid": "bf2dcbc4-266f-4cad-9cd7-76d446360a5d"
|
1026
1030
|
},
|
1027
1031
|
{
|
1028
|
-
"
|
1032
|
+
"deprecated": true,
|
1029
1033
|
"slug": "counter",
|
1030
|
-
"
|
1034
|
+
"uuid": "9a06556b-a661-4329-97a1-b5d0f0c7590c"
|
1031
1035
|
},
|
1032
1036
|
{
|
1033
|
-
"
|
1037
|
+
"deprecated": true,
|
1034
1038
|
"slug": "hexadecimal",
|
1035
|
-
"
|
1039
|
+
"uuid": "0c9cef3d-57f6-479a-aca4-25f310426d6a"
|
1036
1040
|
},
|
1037
1041
|
{
|
1038
|
-
"
|
1042
|
+
"deprecated": true,
|
1039
1043
|
"slug": "octal",
|
1040
|
-
"
|
1044
|
+
"uuid": "4840c889-ebe5-4082-98c0-b9ed8618f6eb"
|
1041
1045
|
},
|
1042
1046
|
{
|
1043
|
-
"
|
1047
|
+
"deprecated": true,
|
1044
1048
|
"slug": "trinary",
|
1045
|
-
"
|
1049
|
+
"uuid": "52af9f03-8b6b-4d75-a363-124f3269dccd"
|
1046
1050
|
}
|
1047
|
-
]
|
1048
|
-
|
1051
|
+
],
|
1052
|
+
"foregone": [
|
1053
|
+
"space-age",
|
1054
|
+
"linked-list",
|
1055
|
+
"simple-linked-list"
|
1056
|
+
],
|
1057
|
+
"ignore_pattern": "example(?!.*test)",
|
1058
|
+
"language": "Go"
|
1059
|
+
}
|