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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/docs/INSTALLATION.md +1 -1
  4. data/tracks/csharp/exercises/binary-search/BinarySearchTest.cs +2 -2
  5. data/tracks/csharp/exercises/poker/Example.cs +69 -20
  6. data/tracks/csharp/exercises/poker/PokerTest.cs +152 -82
  7. data/tracks/csharp/exercises/raindrops/RaindropsTest.cs +4 -4
  8. data/tracks/csharp/exercises/roman-numerals/RomanNumeralsTest.cs +4 -4
  9. data/tracks/csharp/exercises/word-count/Example.cs +2 -2
  10. data/tracks/csharp/exercises/word-count/WordCount.cs +2 -2
  11. data/tracks/csharp/exercises/word-count/WordCountTest.cs +85 -87
  12. data/tracks/csharp/generators/Exercises/Pangram.cs +0 -1
  13. data/tracks/csharp/generators/Exercises/Poker.cs +19 -0
  14. data/tracks/csharp/generators/Exercises/RomanNumerals.cs +0 -1
  15. data/tracks/csharp/generators/Exercises/WordCount.cs +27 -0
  16. data/tracks/csharp/generators/Output/NameExtensions.cs +6 -4
  17. data/tracks/delphi/{docs → exercises/hello-world}/GETTING_STARTED_GUIDE.md +0 -0
  18. data/tracks/go/config.json +629 -618
  19. data/tracks/go/config/maintainers.json +33 -33
  20. data/tracks/go/exercises/accumulate/README.md +0 -3
  21. data/tracks/go/exercises/hello-world/example.go +0 -2
  22. data/tracks/go/exercises/hello-world/hello_test.go +0 -20
  23. data/tracks/go/exercises/hello-world/hello_world.go +1 -36
  24. data/tracks/go/exercises/leap/leap.go +0 -1
  25. data/tracks/go/exercises/leap/leap_test.go +7 -3
  26. data/tracks/go/exercises/two-fer/README.md +66 -0
  27. data/tracks/go/exercises/two-fer/example.go +9 -0
  28. data/tracks/go/exercises/{hello-world/example_helloworld_test.go → two-fer/example_two_fer_test.go} +9 -9
  29. data/tracks/go/exercises/two-fer/two_fer.go +15 -0
  30. data/tracks/go/exercises/two-fer/two_fer_test.go +20 -0
  31. data/tracks/go/gen/gen.go +11 -10
  32. data/tracks/python/exercises/change/change_test.py +7 -2
  33. data/tracks/rust/config.json +1 -0
  34. data/tracks/rust/docs/ABOUT.md +1 -1
  35. data/tracks/scala/exercises/nth-prime/example.scala +2 -2
  36. data/tracks/scala/exercises/nth-prime/src/test/scala/NthPrimeTest.scala +29 -0
  37. data/tracks/scala/testgen/src/main/scala/NthPrimeTestGenerator.scala +34 -0
  38. metadata +12 -7
  39. data/tracks/fsharp/appveyor.yml +0 -4
  40. data/tracks/fsharp/circle.yml +0 -16
  41. 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 The_sound_for_15_is_pling_plang_as_it_has_factors_3_and_5()
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 The_sound_for_21_is_pling_plong_as_it_has_factors_3_and_7()
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 The_sound_for_35_is_plang_plong_as_it_has_factors_5_and_7()
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 The_sound_for_105_is_pling_plang_plong_as_it_has_factors_3_5_and_7()
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 Number_2_is_two_i_s()
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 Number_3_is_three_i_s()
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 Number_20_is_two_x_s()
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 Number_3000_is_three_m_s()
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 Phrase
5
+ public static class WordCount
6
6
  {
7
- public static IDictionary<string, int> WordCount(string phrase)
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 Phrase
4
+ public static class WordCount
5
5
  {
6
- public static IDictionary<string, int> WordCount(string phrase)
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
- using System.Collections.Generic;
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 counts = new Dictionary<string,int> {
10
- { "word", 1 }
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 Count_one_of_each()
20
+ public void Count_one_of_each_word()
18
21
  {
19
- var counts = new Dictionary<string,int> {
20
- { "one", 1 },
21
- { "of", 1 },
22
- { "each", 1 }
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 Count_multiple_occurrences()
33
+ public void Multiple_occurrences_of_a_word()
30
34
  {
31
- var counts = new Dictionary<string,int> {
32
- { "one", 1 },
33
- { "fish", 4 },
34
- { "two", 1 },
35
- { "red", 1 },
36
- { "blue", 1 },
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 Count_everything_just_once()
48
+ public void Handles_cramped_lists()
44
49
  {
45
- var counts = new Dictionary<string,int> {
46
- { "all", 2 },
47
- { "the", 2 },
48
- { "kings", 2 },
49
- { "horses", 1 },
50
- { "and", 1 },
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 Ignore_punctuation()
61
+ public void Handles_expanded_lists()
59
62
  {
60
- var counts = new Dictionary<string,int> {
61
- { "car", 1 },
62
- { "carpet", 1 },
63
- { "as", 1 },
64
- { "java", 1 },
65
- { "javascript", 1 },
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 Handles_cramped_list()
74
+ public void Ignore_punctuation()
73
75
  {
74
- var counts = new Dictionary<string,int> {
75
- { "one", 1 },
76
- { "two", 1 },
77
- { "three", 1 },
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 counts = new Dictionary<string,int> {
87
- { "testing", 2 },
88
- { "1", 1 },
89
- { "2", 1 },
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 counts = new Dictionary<string,int> {
99
- { "go", 3 },
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 counts = new Dictionary<string,int> {
109
- { "first", 1 },
110
- { "don't", 2 },
111
- { "laugh", 1 },
112
- { "then", 1 },
113
- { "cry", 1 },
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 With_free_standing_apostrophes()
129
+ public void With_quotations()
121
130
  {
122
- var counts = new Dictionary<string, int> {
123
- { "go", 3 },
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
- Regex.Replace(input.Replace(":", " is"), @"[^\w]+", "_", RegexOptions.Compiled)
19
- .Underscore()
20
- .Transform(To.TitleCase);
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;
@@ -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
- "Strings"
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
- "Control-flow (loops)",
30
- "Equality",
31
- "Strings"
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
- "Control-flow (conditionals)",
42
- "Strings",
43
- "Filtering"
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
- "Control-flow (loops)",
54
- "Maps",
55
- "Strings"
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
- "Control-flow (loops)",
66
- "Maps",
67
- "Transforming"
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
- "Algorithms",
78
- "Mathematics"
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
- "Filtering",
89
- "Control-flow (loops)",
90
- "Arrays"
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
- "Strings",
101
- "Transforming",
102
- "Regular Expressions"
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
- "Control-flow (conditionals)",
113
- "Booleans",
114
- "Logic"
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
- "Time",
125
- "Mathematics",
126
- "Text formatting",
127
- "Equality"
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
- "Strings",
138
- "Sorting"
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
- "Concurrency"
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
- "Control-flow (if-else statements)",
159
- "Bitwise operations",
160
- "Mathematics",
161
- "Type conversion",
162
- "Integers"
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
- "Strings",
173
- "Arrays",
174
- "Refactoring"
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
- "Algorithms",
185
- "Arrays",
186
- "Searching",
187
- "Sorting"
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
- "Strings",
198
- "Sequences",
199
- "Algorithms",
200
- "Pattern recognition",
201
- "Text formatting"
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
- "Matrices",
212
- "Type conversion",
213
- "Arrays",
214
- "Exception handling",
215
- "Strings"
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
- "Arrays",
226
- "Mathematics"
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
- "Booleans",
237
- "Logic",
238
- "Games",
239
- "Errors"
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
- "Control-flow (conditionals)",
250
- "Booleans",
251
- "Integers",
252
- "Logic"
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
- "Time"
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
- "Lists"
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
- "Control-flow (loops)",
283
- "Strings"
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
- "Control-flow (conditionals)",
294
- "Strings"
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
- "Exception handling"
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
- "Bitwise operations",
315
- "Arrays",
316
- "Integers"
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
- "Strings",
327
- "Text formatting",
328
- "Recursion"
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
- "Control-flow (loops)",
339
- "Mathematics"
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
- "Algorithms",
350
- "Mathematics"
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
- "Strings",
361
- "Sequences"
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
- "Concurrency",
372
- "Integers"
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
- "Cryptography",
383
- "Filtering",
384
- "Strings",
385
- "Text Formatting",
386
- "Transforming"
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
- "Algorithms",
397
- "Integers",
398
- "Strings"
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
- "Control-flow (conditionals)",
409
- "Control-flow (loops)",
410
- "Recursion",
411
- "Strings",
412
- "Text Formatting"
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
- "Integers",
423
- "Sequences",
424
- "Algorithms"
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
- "Algorithms",
435
- "Integers",
436
- "Mathematics",
437
- "Sorting",
438
- "Control-flow (loops)"
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
- "Mathematics",
449
- "Algorithms"
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
- "Filtering",
460
- "Maps",
461
- "Sequences"
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
- "Integers",
472
- "Algorithms",
473
- "Mathematics",
474
- "Filtering"
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
- "Parsing",
485
- "Strings"
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
- "Strings",
496
- "Parsing",
497
- "Filtering"
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
- "Enumeration",
508
- "Bitwise operations"
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
- "Maps",
519
- "Transforming"
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
- "Numbers",
530
- "Transforming"
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
- "Numbers",
541
- "Strings",
542
- "Transforming",
543
- "Text Formatting"
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
- "Queues",
554
- "Structs"
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
- "Randomness"
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
- "Strings",
575
- "Text formatting",
576
- "Algorithms",
577
- "Control-flow (conditionals)",
578
- "Control-flow (loops)"
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
- "Reactive programming"
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
- "Sets",
599
- "Control-flow (loops)",
600
- "Filtering"
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
- "Algorithms",
611
- "Strings",
612
- "Transforming",
613
- "Cryptography"
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
- "Control-flow (conditionals)",
624
- "Strings",
625
- "Transforming",
626
- "Text formatting"
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
- "Strings",
637
- "Transforming",
638
- "Control-flow (conditionals)"
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
- "Mathematics",
649
- "Algorithms",
650
- "Integers"
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
- "Control-flow (loops)",
661
- "Strings",
662
- "Transforming"
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
- "Mathematics",
673
- "Algorithms",
674
- "Integers"
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
- "Cryptography",
685
- "Integers",
686
- "Algorithms",
687
- "Transforming"
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
- "Strings",
698
- "Text formatting",
699
- "Control-flow (loops)"
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
- "Parsing",
710
- "Pattern recognition"
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
- "Parsing",
721
- "Control-flow (conditionals)",
722
- "Type conversion",
723
- "Integers",
724
- "Strings"
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
- "Strings",
735
- "Parsing",
736
- "Maps"
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
- "Sorting",
747
- "Structs",
748
- "Lists"
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
- "Arrays",
759
- "Integers",
760
- "Matrices",
761
- "Searching"
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
- "Dates",
772
- "Time",
773
- "Transforming",
774
- "Type conversion"
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
- "Algorithms",
785
- "Recursion",
786
- "Searching",
787
- "Sorting",
788
- "Structs",
789
- "Trees"
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
- "Records",
800
- "Refactoring",
801
- "Sorting",
802
- "Trees"
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
- "Parsing",
813
- "Records",
814
- "Searching",
815
- "Strings",
816
- "Structs"
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
- "Algorithms",
827
- "Cryptography",
828
- "Interfaces",
829
- "Strings",
830
- "Transforming"
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
- "Concurrency",
841
- "Interfaces",
842
- "Networking"
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
- "Graphs",
853
- "Recursion",
854
- "Structs",
855
- "Transforming",
856
- "Trees"
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
- "Arrays",
867
- "Control-flow (loops)",
868
- "Matrices",
869
- "Games",
870
- "Transforming"
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
- "Concurrency",
881
- "Control-flow (loops)",
882
- "Sequences",
883
- "Strings",
884
- "Structs"
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
- "Integers",
895
- "Parsing",
896
- "Records",
897
- "Sorting",
898
- "Strings",
899
- "Text formatting",
900
- "Transforming"
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
- "Matrices",
911
- "Searching",
912
- "Strings"
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
- "Integers",
923
- "Mathematics",
924
- "Transforming"
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
- "Arrays",
935
- "Control-flow (loops)",
936
- "Games",
937
- "Graphs",
938
- "Searching"
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
- "Dates",
949
- "Integers",
950
- "Records",
951
- "Refactoring",
952
- "Sorting",
953
- "Strings",
954
- "Text formatting"
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
- "Equality",
965
- "Games",
966
- "Parsing",
967
- "Pattern matching",
968
- "Sequences",
969
- "Strings"
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
- "Bitwise operations",
980
- "Integers",
981
- "Transforming"
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
- "Domain-specific languages",
992
- "Parsing",
993
- "Stacks"
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
- "Algorithms",
1004
- "Arrays",
1005
- "Control-flow (loops)",
1006
- "Mathematics",
1007
- "Searching"
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
- "Algorithms",
1018
- "Arrays",
1019
- "Control-flow (conditionals)"
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
- "uuid": "bf2dcbc4-266f-4cad-9cd7-76d446360a5d",
1027
+ "deprecated": true,
1024
1028
  "slug": "binary",
1025
- "deprecated": true
1029
+ "uuid": "bf2dcbc4-266f-4cad-9cd7-76d446360a5d"
1026
1030
  },
1027
1031
  {
1028
- "uuid": "9a06556b-a661-4329-97a1-b5d0f0c7590c",
1032
+ "deprecated": true,
1029
1033
  "slug": "counter",
1030
- "deprecated": true
1034
+ "uuid": "9a06556b-a661-4329-97a1-b5d0f0c7590c"
1031
1035
  },
1032
1036
  {
1033
- "uuid": "0c9cef3d-57f6-479a-aca4-25f310426d6a",
1037
+ "deprecated": true,
1034
1038
  "slug": "hexadecimal",
1035
- "deprecated": true
1039
+ "uuid": "0c9cef3d-57f6-479a-aca4-25f310426d6a"
1036
1040
  },
1037
1041
  {
1038
- "uuid": "4840c889-ebe5-4082-98c0-b9ed8618f6eb",
1042
+ "deprecated": true,
1039
1043
  "slug": "octal",
1040
- "deprecated": true
1044
+ "uuid": "4840c889-ebe5-4082-98c0-b9ed8618f6eb"
1041
1045
  },
1042
1046
  {
1043
- "uuid": "52af9f03-8b6b-4d75-a363-124f3269dccd",
1047
+ "deprecated": true,
1044
1048
  "slug": "trinary",
1045
- "deprecated": true
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
+ }