trackler 2.2.1.24 → 2.2.1.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/TOPICS.txt +73 -73
  4. data/tracks/bash/config.json +82 -73
  5. data/tracks/bash/config/maintainers.json +9 -9
  6. data/tracks/bash/exercises/nucleotide-count/README.md +38 -0
  7. data/tracks/bash/exercises/nucleotide-count/example.sh +38 -0
  8. data/tracks/bash/exercises/nucleotide-count/nucleotide_count_test.sh +29 -0
  9. data/tracks/csharp/.travis.yml +9 -2
  10. data/tracks/csharp/build.cake +7 -34
  11. data/tracks/csharp/build.ps1 +2 -2
  12. data/tracks/csharp/build.sh +2 -2
  13. data/tracks/csharp/docs/GENERATORS.md +102 -0
  14. data/tracks/csharp/exercises/Exercises.sln +669 -0
  15. data/tracks/csharp/exercises/queen-attack/Example.cs +14 -1
  16. data/tracks/csharp/exercises/queen-attack/QueenAttack.cs +6 -1
  17. data/tracks/csharp/exercises/queen-attack/QueenAttackTest.cs +57 -19
  18. data/tracks/csharp/generators/Exercises/QueenAttack.cs +85 -0
  19. data/tracks/d/README.md +3 -2
  20. data/tracks/d/docs/SNIPPET.txt +7 -0
  21. data/tracks/d/exercises/crypto-square/.dub/dub.json +6 -0
  22. data/tracks/d/exercises/crypto-square/example/crypto_square.d +4 -2
  23. data/tracks/dart/exercises/bob/pubspec.lock +28 -16
  24. data/tracks/dart/exercises/bob/pubspec.yaml +1 -1
  25. data/tracks/dart/exercises/bob/test/bob_test.dart +2 -0
  26. data/tracks/dart/exercises/difference-of-squares/pubspec.lock +28 -16
  27. data/tracks/dart/exercises/difference-of-squares/pubspec.yaml +1 -1
  28. data/tracks/dart/exercises/gigasecond/pubspec.lock +28 -16
  29. data/tracks/dart/exercises/gigasecond/pubspec.yaml +1 -1
  30. data/tracks/dart/exercises/hamming/pubspec.lock +28 -16
  31. data/tracks/dart/exercises/hamming/pubspec.yaml +1 -1
  32. data/tracks/dart/exercises/hello-world/pubspec.lock +28 -16
  33. data/tracks/dart/exercises/hello-world/pubspec.yaml +1 -1
  34. data/tracks/dart/exercises/hello-world/test/hello_world_test.dart +13 -15
  35. data/tracks/dart/exercises/leap/pubspec.lock +28 -16
  36. data/tracks/dart/exercises/leap/pubspec.yaml +1 -1
  37. data/tracks/dart/exercises/rna-transcription/pubspec.lock +28 -16
  38. data/tracks/dart/exercises/rna-transcription/pubspec.yaml +1 -1
  39. data/tracks/elixir/exercises/pig-latin/example.exs +17 -18
  40. data/tracks/elixir/exercises/pig-latin/pig_latin_test.exs +16 -1
  41. data/tracks/fsharp/build.cake +0 -2
  42. data/tracks/go/exercises/error-handling/.meta/description.md +39 -0
  43. data/tracks/go/exercises/error-handling/.meta/hints.md +5 -0
  44. data/tracks/go/exercises/error-handling/.meta/metadata.yml +2 -0
  45. data/tracks/go/exercises/error-handling/README.md +43 -5
  46. data/tracks/go/exercises/error-handling/common.go +4 -3
  47. data/tracks/go/exercises/error-handling/error_handling_test.go +1 -38
  48. data/tracks/go/exercises/secret-handshake/secret_handshake_test.go +3 -1
  49. data/tracks/haxe/docs/LEARNING.md +8 -0
  50. data/tracks/java/.gitignore +2 -1
  51. data/tracks/java/config.json +337 -491
  52. data/tracks/java/config/maintainers.json +26 -26
  53. data/tracks/java/exercises/bob/src/test/java/BobTest.java +7 -1
  54. data/tracks/java/exercises/rna-transcription/src/example/java/RnaTranscription.java +4 -2
  55. data/tracks/java/exercises/rna-transcription/src/main/java/RnaTranscription.java +5 -3
  56. data/tracks/java/exercises/rna-transcription/src/test/java/RnaTranscriptionTest.java +21 -26
  57. data/tracks/javascript/config.json +662 -664
  58. data/tracks/javascript/config/maintainers.json +35 -35
  59. data/tracks/javascript/exercises/simple-cipher/simple-cipher.spec.js +7 -3
  60. data/tracks/plsql/config.json +52 -66
  61. data/tracks/plsql/docs/SNIPPET.txt +6 -0
  62. data/tracks/plsql/exercises/hello-world/example.plsql +20 -0
  63. data/tracks/plsql/exercises/hello-world/hello_world#.plsql +20 -0
  64. data/tracks/plsql/exercises/hello-world/ut_hello_world#.plsql +60 -0
  65. data/tracks/sml/Makefile +5 -0
  66. data/tracks/sml/bin/generate +3 -4
  67. data/tracks/sml/config.json +55 -5
  68. data/tracks/sml/exercises/collatz-conjecture/README.md +63 -0
  69. data/tracks/sml/exercises/collatz-conjecture/collatz-conjecture.sml +4 -0
  70. data/tracks/sml/exercises/collatz-conjecture/example.sml +17 -0
  71. data/tracks/sml/exercises/collatz-conjecture/test.sml +30 -0
  72. data/tracks/sml/exercises/collatz-conjecture/testlib.sml +159 -0
  73. data/tracks/sml/exercises/leap/README.md +63 -0
  74. data/tracks/sml/exercises/leap/example.sml +2 -0
  75. data/tracks/sml/exercises/leap/leap.sml +2 -0
  76. data/tracks/sml/exercises/leap/test.sml +24 -0
  77. data/tracks/sml/exercises/leap/testlib.sml +159 -0
  78. data/tracks/sml/exercises/rna-transcription/README.md +55 -0
  79. data/tracks/sml/exercises/rna-transcription/example.sml +20 -0
  80. data/tracks/sml/exercises/rna-transcription/rna-transcription.sml +2 -0
  81. data/tracks/sml/exercises/rna-transcription/test.sml +36 -0
  82. data/tracks/sml/exercises/rna-transcription/testlib.sml +159 -0
  83. data/tracks/sml/exercises/sum-of-multiples/README.md +48 -0
  84. data/tracks/sml/exercises/sum-of-multiples/example.sml +8 -0
  85. data/tracks/sml/exercises/sum-of-multiples/sum-of-multiples.sml +2 -0
  86. data/tracks/sml/exercises/sum-of-multiples/test.sml +48 -0
  87. data/tracks/sml/exercises/sum-of-multiples/testlib.sml +159 -0
  88. data/tracks/sml/exercises/two-fer/README.md +78 -0
  89. data/tracks/sml/exercises/two-fer/example.sml +1 -0
  90. data/tracks/sml/exercises/two-fer/test.sml +21 -0
  91. data/tracks/sml/exercises/two-fer/testlib.sml +159 -0
  92. data/tracks/sml/exercises/two-fer/two-fer.sml +2 -0
  93. metadata +43 -5
  94. data/tracks/csharp/exercises/Exercises.All.sln +0 -1545
  95. data/tracks/csharp/exercises/Exercises.Default.sln +0 -1503
  96. data/tracks/csharp/exercises/Exercises.Refactoring.sln +0 -61
@@ -1,3 +1,3 @@
1
1
  name: 'rna_transcription'
2
2
  dev_dependencies:
3
- test: '0.12.23+1'
3
+ test: '<0.13.0'
@@ -17,28 +17,27 @@ defmodule PigLatin do
17
17
  def translate(phrase) do
18
18
  phrase
19
19
  |> String.split(" ")
20
- |> Enum.map_join(" ", &to_pig_latin/1)
20
+ |> Enum.map(&translate_word/1)
21
+ |> Enum.join(" ")
21
22
  end
22
23
 
23
- @consonant_sounds ["ch", "sch", "qu", "squ", "thr", "th"]
24
- @vowel_sounds ["xr", "yt"]
25
- @consonants "bcdfghjklmnpqrstvwxyz" |> String.graphemes
26
- @vowels "aeiou" |> String.graphemes
27
-
28
- for sound <- @consonant_sounds do
29
- defp to_pig_latin(unquote(sound) <> rest), do: "#{rest}#{unquote(sound)}ay"
30
- end
31
-
32
- for sound <- @vowel_sounds do
33
- defp to_pig_latin(unquote(sound) <> rest), do: "#{unquote(sound)}#{rest}ay"
34
- end
35
-
36
- for sound <- @consonants do
37
- defp to_pig_latin(unquote(sound) <> rest), do: "#{rest}#{unquote(sound)}ay"
24
+ defp translate_word(word) do
25
+ word
26
+ |> consonant_prefix_and_rest
27
+ |> case do
28
+ ["", _] -> word <> "ay"
29
+ [consonant_prefix, rest] -> rest <> consonant_prefix <> "ay"
30
+ _ -> word
31
+ end
38
32
  end
39
33
 
40
- for sound <- @vowels do
41
- defp to_pig_latin(unquote(sound) <> rest), do: "#{unquote(sound)}#{rest}ay"
34
+ defp consonant_prefix_and_rest(word) do
35
+ if Regex.match?(~r/^yt|xr/, word) do
36
+ ["", word]
37
+ else
38
+ ~r/^(s?qu|(?:[^aeiou]*))?([aeiou].*)$/
39
+ |> Regex.run(word, capture: :all_but_first)
40
+ end
42
41
  end
43
42
  end
44
43
 
@@ -40,7 +40,7 @@ defmodule PigLatinTest do
40
40
  end
41
41
  end
42
42
 
43
- describe "first letter and ay are moved to the end of words that start with consonants" do
43
+ describe "first consonant letters and ay are moved to the end of words that start with consonants" do
44
44
  @tag :pending
45
45
  test "word beginning with p" do
46
46
  assert PigLatin.translate("pig") == "igpay"
@@ -65,6 +65,21 @@ defmodule PigLatinTest do
65
65
  test "word beginning with q without a following u" do
66
66
  assert PigLatin.translate("qat") == "atqay"
67
67
  end
68
+
69
+ @tag :pending
70
+ test "word beginning with two consonants" do
71
+ assert PigLatin.translate("pleasure") == "easureplay"
72
+ end
73
+
74
+ @tag :pending
75
+ test "word beginning with three consonants" do
76
+ assert PigLatin.translate("stringify") == "ingifystray"
77
+ end
78
+
79
+ @tag :pending
80
+ test "word beginning with a serie of consonants : aliens speak Pig Latin too" do
81
+ assert PigLatin.translate("zkrrkrkrkrzzzkewk") == "ewkzkrrkrkrkrzzzkay"
82
+ end
68
83
  end
69
84
 
70
85
  describe "some letter clusters are treated like a single consonant" do
@@ -8,8 +8,6 @@ var exercise = Argument<string>("exercise", null);
8
8
  var sourceDir = "./exercises";
9
9
  var buildDir = "./build";
10
10
 
11
- var solutionPath = buildDir + "/Exercises.sln";
12
-
13
11
  var parallelOptions = new ParallelOptions { MaxDegreeOfParallelism = System.Environment.ProcessorCount };
14
12
 
15
13
  Task("Clean")
@@ -0,0 +1,39 @@
1
+ Implement various kinds of error handling and resource management.
2
+
3
+ An important point of programming is how to handle errors and close resources
4
+ even if errors occur.
5
+
6
+ If you are new to Go errors or panics we recommend reading
7
+ [the documentation on these topics](https://blog.golang.org/defer-panic-and-recover)
8
+ first for context.
9
+
10
+ In this exercise you will be required to define a function `Use(o
11
+ ResourceOpener, input string) error` that opens a resource, calls Frob(input) on
12
+ the result resource and then closes that resource (in all cases). Your function
13
+ should properly handle errors and panics.
14
+
15
+ `ResourceOpener o` will be a function you may invoke directly `o()` in an
16
+ attempt to "open" the resource. It returns a Resource and error value in the
17
+ [idiomatic Go fashion](https://blog.golang.org/error-handling-and-go):
18
+
19
+ See the [common.go](./common.go) file for the definitions of Resource,
20
+ ResourceOpener, FrobError and TransientError. You will define your solution to
21
+ be in the same package as [common.go](./common.go) and
22
+ [error\_handling\_test.go](./error_handling_test.go): "erratum". This will make
23
+ those types available for use in your solution.
24
+
25
+ There will be a few places in your Use function where errors may occur:
26
+
27
+ * Invoking the ResourceOpener function passed into Use as the first parameter,
28
+ it may fail with an error of type TransientError, if so keep trying to open
29
+ the resource. If it is some other sort of error, return it from your `Use`
30
+ function.
31
+
32
+ * Calling the Frob function on the Resource returned from the ResourceOpener
33
+ function, it may **panic** with a FrobError (or another type of error). If it
34
+ is indeed a FrobError you will have to call the Resource's `Defrob` function
35
+ *using the panic FrobError's `.defrobTag` variable as input to the `Defrob`
36
+ function*. Either way `Use` should return the error.
37
+
38
+ * *Also note*: if the Resource was opened successfully make sure to call its
39
+ Close function no matter what (even if errors have occurred).
@@ -0,0 +1,5 @@
1
+ Testing for specific error types may be performed by
2
+ [type assertions](https://golang.org/ref/spec#Type_assertions). You may also
3
+ need to look at
4
+ [named return values](https://blog.golang.org/error-handling-and-go) as a
5
+ helpful way to return error information from panic recovery.
@@ -0,0 +1,2 @@
1
+ ---
2
+ blurb: "Implement various kinds of error handling and resource management"
@@ -2,12 +2,50 @@
2
2
 
3
3
  Implement various kinds of error handling and resource management.
4
4
 
5
- An important point of programming is how to handle errors and close
6
- resources even if errors occur.
5
+ An important point of programming is how to handle errors and close resources
6
+ even if errors occur.
7
+
8
+ If you are new to Go errors or panics we recommend reading
9
+ [the documentation on these topics](https://blog.golang.org/defer-panic-and-recover)
10
+ first for context.
11
+
12
+ In this exercise you will be required to define a function `Use(o
13
+ ResourceOpener, input string) error` that opens a resource, calls Frob(input) on
14
+ the result resource and then closes that resource (in all cases). Your function
15
+ should properly handle errors and panics.
16
+
17
+ `ResourceOpener o` will be a function you may invoke directly `o()` in an
18
+ attempt to "open" the resource. It returns a Resource and error value in the
19
+ [idiomatic Go fashion](https://blog.golang.org/error-handling-and-go):
20
+
21
+ See the [common.go](./common.go) file for the definitions of Resource,
22
+ ResourceOpener, FrobError and TransientError. You will define your solution to
23
+ be in the same package as [common.go](./common.go) and
24
+ [error\_handling\_test.go](./error_handling_test.go): "erratum". This will make
25
+ those types available for use in your solution.
26
+
27
+ There will be a few places in your Use function where errors may occur:
28
+
29
+ * Invoking the ResourceOpener function passed into Use as the first parameter,
30
+ it may fail with an error of type TransientError, if so keep trying to open
31
+ the resource. If it is some other sort of error, return it from your `Use`
32
+ function.
33
+
34
+ * Calling the Frob function on the Resource returned from the ResourceOpener
35
+ function, it may **panic** with a FrobError (or another type of error). If it
36
+ is indeed a FrobError you will have to call the Resource's `Defrob` function
37
+ *using the panic FrobError's `.defrobTag` variable as input to the `Defrob`
38
+ function*. Either way `Use` should return the error.
39
+
40
+ * *Also note*: if the Resource was opened successfully make sure to call its
41
+ Close function no matter what (even if errors have occurred).
42
+
43
+ Testing for specific error types may be performed by
44
+ [type assertions](https://golang.org/ref/spec#Type_assertions). You may also
45
+ need to look at
46
+ [named return values](https://blog.golang.org/error-handling-and-go) as a
47
+ helpful way to return error information from panic recovery.
7
48
 
8
- This exercise requires you to handle various errors. Because error handling
9
- is rather programming language specific you'll have to refer to the tests
10
- for your track to see what's exactly required.
11
49
 
12
50
  ## Running the tests
13
51
 
@@ -36,15 +36,16 @@ func (e FrobError) Error() string {
36
36
  type Resource interface {
37
37
 
38
38
  // Resource is using composition to inherit the requirements of the io.Closer
39
- // interface. What this means is that a Resource will have a .Close() method.
39
+ // interface. What this means is that a Resource implementation will be
40
+ // expected to have a .Close() method too.
40
41
  io.Closer
41
42
 
42
43
  // Frob does something with the input string.
43
44
  // Because this is an incredibly badly designed system if there is an error
44
45
  // it panics.
45
46
  //
46
- // The paniced error may be a FrobError in which case Defrob should be called
47
- // with the defrobTag string.
47
+ // The panicked error may be a FrobError in which case Defrob should be
48
+ // called with the .defrobTag string property of the error.
48
49
  Frob(string)
49
50
 
50
51
  Defrob(string)
@@ -5,44 +5,7 @@ import (
5
5
  "testing"
6
6
  )
7
7
 
8
- // Because this exercise is generally unique to each language and how it
9
- // handles errors, most of the definition of your expected solution is provided
10
- // here instead of the README.
11
- // You should read this carefully (more than once) before implementation.
12
-
13
- // Define a function `Use(o ResourceOpener, input string) error` that opens a
14
- // resource, calls Frob(input) and closes the resource (in all cases). Your
15
- // function should properly handle errors, as defined by the expectations of
16
- // this test suite. ResourceOpener will be a function you may invoke directly
17
- // `o()` in an attempt to "open" the resource. It returns a Resource and error
18
- // value in the idiomatic Go fashion:
19
- // https://blog.golang.org/error-handling-and-go
20
- //
21
- // See the ./common.go file for the definitions of Resource, ResourceOpener,
22
- // FrobError and TransientError.
23
- //
24
- // There will be a few places in your Use function where errors may occur:
25
- //
26
- // - Invoking the ResourceOpener function passed into Use as the first
27
- // parameter, it may fail with a TransientError, if so keep trying to open it.
28
- // If it is some other sort of error, return it.
29
- //
30
- // - Calling the Frob function on the Resource returned from the ResourceOpener
31
- // function, it may panic with a FrobError (or another type of error). If
32
- // it is indeed a FrobError you will have to call the Resource's Defrob
33
- // function using the FrobError's defrobTag variable as input. Either way
34
- // return the error.
35
- //
36
- // Also note: if the Resource was opened successfully make sure to call its
37
- // Close function no matter what (even if errors occur).
38
- //
39
- // If you are new to Go errors or panics here is a good place to start:
40
- // https://blog.golang.org/defer-panic-and-recover
41
- //
42
- // You may also need to look at named return values as a helpful way to
43
- // return error information from panic recovery:
44
- // https://tour.golang.org/basics/7
45
-
8
+ // Please review the README for this exercise carefully before implementation.
46
9
  const targetTestVersion = 2
47
10
 
48
11
  // Little helper to let us customize behaviour of the resource on a per-test
@@ -29,6 +29,8 @@ func TestHandshake(t *testing.T) {
29
29
 
30
30
  func BenchmarkHandshake(b *testing.B) {
31
31
  for i := 0; i < b.N; i++ {
32
- Handshake(31)
32
+ for j := uint(0); j < 32; j++ {
33
+ Handshake(j)
34
+ }
33
35
  }
34
36
  }
@@ -0,0 +1,8 @@
1
+ # Learning Haxe
2
+
3
+ * [Official Haxe Documentation](http://haxe.org/documentation/introduction/)
4
+ * [Introduction to the Haxe Toolkit](http://haxe.org/documentation/introduction/toolkit-introduction.html)
5
+ * [Manual](http://haxe.org/manual/introduction.html)
6
+ * [API Docs](http://haxe.org/api/)
7
+ * [Haxe Code Cookbook](http://code.haxe.org) - Study examples of Haxe source code
8
+ * [Try Haxe](https://try.haxe.org) - Run examples of Haxe code or try your own in the browser
@@ -8,4 +8,5 @@ build/
8
8
  *.iml
9
9
  bin/configlet
10
10
  bin/configlet.exe
11
- /exercises/.nb-gradle/
11
+ /exercises/.nb-gradle/
12
+ **/out
@@ -1,836 +1,682 @@
1
1
  {
2
- "language": "Java",
3
2
  "active": true,
4
3
  "blurb": "Java is a very widely used Object Oriented programming language. It's safe, simple to use and portable so that you can \"write once, run anywhere\".",
5
4
  "exercises": [
6
5
  {
7
- "uuid": "f77dc7e3-35a8-4300-a7c8-2c1765e9644d",
8
- "slug": "hello-world",
9
6
  "core": true,
10
- "unlocked_by": null,
11
7
  "difficulty": 1,
12
- "topics": [
13
-
14
- ]
8
+ "slug": "hello-world",
9
+ "topics": null,
10
+ "unlocked_by": null,
11
+ "uuid": "f77dc7e3-35a8-4300-a7c8-2c1765e9644d"
15
12
  },
16
13
  {
17
- "uuid": "74515d45-565b-4be2-96c4-77e58efa9257",
18
- "slug": "two-fer",
19
14
  "core": true,
20
- "unlocked_by": null,
21
15
  "difficulty": 1,
22
- "topics": [
23
-
24
- ]
16
+ "slug": "two-fer",
17
+ "topics": null,
18
+ "unlocked_by": null,
19
+ "uuid": "74515d45-565b-4be2-96c4-77e58efa9257"
25
20
  },
26
21
  {
27
- "uuid": "8e983ed2-62f7-439a-a144-fb8fdbdf4d30",
28
- "slug": "rna-transcription",
29
22
  "core": false,
30
- "unlocked_by": null,
31
23
  "difficulty": 2,
32
- "topics": [
33
-
34
- ]
24
+ "slug": "rna-transcription",
25
+ "topics": null,
26
+ "unlocked_by": null,
27
+ "uuid": "8e983ed2-62f7-439a-a144-fb8fdbdf4d30"
35
28
  },
36
29
  {
37
- "uuid": "133b0f84-bdc7-4508-a0a1-5732a7db81ef",
38
- "slug": "pangram",
39
30
  "core": false,
40
- "unlocked_by": null,
41
31
  "difficulty": 3,
42
- "topics": [
43
-
44
- ]
32
+ "slug": "pangram",
33
+ "topics": null,
34
+ "unlocked_by": null,
35
+ "uuid": "133b0f84-bdc7-4508-a0a1-5732a7db81ef"
45
36
  },
46
37
  {
47
- "uuid": "ce899ca6-9cc7-47ba-b76f-1bbcf2630b76",
48
- "slug": "hamming",
49
38
  "core": true,
50
- "unlocked_by": null,
51
39
  "difficulty": 3,
52
- "topics": [
53
-
54
- ]
40
+ "slug": "hamming",
41
+ "topics": null,
42
+ "unlocked_by": null,
43
+ "uuid": "ce899ca6-9cc7-47ba-b76f-1bbcf2630b76"
55
44
  },
56
45
  {
57
- "uuid": "bf1641c8-dc0d-4d38-9cfe-b4c132ea3553",
58
- "slug": "gigasecond",
59
46
  "core": true,
60
- "unlocked_by": null,
61
47
  "difficulty": 3,
62
- "topics": [
63
-
64
- ]
48
+ "slug": "gigasecond",
49
+ "topics": null,
50
+ "unlocked_by": null,
51
+ "uuid": "bf1641c8-dc0d-4d38-9cfe-b4c132ea3553"
65
52
  },
66
53
  {
67
- "uuid": "e5b524cd-3a1c-468a-8981-13e8eeccb29d",
68
- "slug": "space-age",
69
54
  "core": false,
70
- "unlocked_by": null,
71
55
  "difficulty": 3,
72
- "topics": [
73
-
74
- ]
56
+ "slug": "space-age",
57
+ "topics": null,
58
+ "unlocked_by": null,
59
+ "uuid": "e5b524cd-3a1c-468a-8981-13e8eeccb29d"
75
60
  },
76
61
  {
77
- "uuid": "c31bbc6d-bdcf-44f7-bf35-5f98752e38d0",
78
- "slug": "acronym",
79
62
  "core": false,
80
- "unlocked_by": null,
81
63
  "difficulty": 3,
82
- "topics": [
83
-
84
- ]
64
+ "slug": "acronym",
65
+ "topics": null,
66
+ "unlocked_by": null,
67
+ "uuid": "c31bbc6d-bdcf-44f7-bf35-5f98752e38d0"
85
68
  },
86
69
  {
87
- "uuid": "afae9f2d-8baf-4bd7-8d7c-d486337f7c97",
88
- "slug": "scrabble-score",
89
70
  "core": true,
90
- "unlocked_by": null,
91
71
  "difficulty": 3,
92
- "topics": [
93
-
94
- ]
72
+ "slug": "scrabble-score",
73
+ "topics": null,
74
+ "unlocked_by": null,
75
+ "uuid": "afae9f2d-8baf-4bd7-8d7c-d486337f7c97"
95
76
  },
96
77
  {
97
- "uuid": "d916e4f8-fda1-41c0-ab24-79e8fc3f1272",
98
- "slug": "raindrops",
99
78
  "core": false,
100
- "unlocked_by": "hello-world",
101
79
  "difficulty": 3,
102
- "topics": [
103
-
104
- ]
80
+ "slug": "raindrops",
81
+ "topics": null,
82
+ "unlocked_by": "hello-world",
83
+ "uuid": "d916e4f8-fda1-41c0-ab24-79e8fc3f1272"
105
84
  },
106
85
  {
107
- "uuid": "b0da59c6-1b55-405c-b163-007ebf09f5e8",
108
- "slug": "difference-of-squares",
109
86
  "core": true,
110
- "unlocked_by": null,
111
87
  "difficulty": 3,
112
- "topics": [
113
-
114
- ]
88
+ "slug": "difference-of-squares",
89
+ "topics": null,
90
+ "unlocked_by": null,
91
+ "uuid": "b0da59c6-1b55-405c-b163-007ebf09f5e8"
115
92
  },
116
93
  {
117
- "uuid": "71c7c174-7e2c-43c2-bdd6-7515fcb12a91",
118
- "slug": "secret-handshake",
119
94
  "core": true,
120
- "unlocked_by": null,
121
95
  "difficulty": 3,
122
- "topics": [
123
-
124
- ]
96
+ "slug": "secret-handshake",
97
+ "topics": null,
98
+ "unlocked_by": null,
99
+ "uuid": "71c7c174-7e2c-43c2-bdd6-7515fcb12a91"
125
100
  },
126
101
  {
127
- "uuid": "d0dcc898-ec38-4822-9e3c-1a1829c9b2d9",
128
- "slug": "perfect-numbers",
129
102
  "core": false,
130
- "unlocked_by": "difference-of-squares",
131
103
  "difficulty": 3,
132
- "topics": [
133
-
134
- ]
104
+ "slug": "perfect-numbers",
105
+ "topics": null,
106
+ "unlocked_by": "difference-of-squares",
107
+ "uuid": "d0dcc898-ec38-4822-9e3c-1a1829c9b2d9"
135
108
  },
136
109
  {
137
- "uuid": "2f244afc-3e7b-4f89-92af-e2b427f4ef35",
138
- "slug": "sum-of-multiples",
139
110
  "core": false,
140
- "unlocked_by": "difference-of-squares",
141
111
  "difficulty": 4,
142
- "topics": [
143
-
144
- ]
112
+ "slug": "sum-of-multiples",
113
+ "topics": null,
114
+ "unlocked_by": "difference-of-squares",
115
+ "uuid": "2f244afc-3e7b-4f89-92af-e2b427f4ef35"
145
116
  },
146
117
  {
147
- "uuid": "5227a76c-8ecb-4e5f-b023-6af65a057c41",
148
- "slug": "luhn",
149
118
  "core": false,
150
- "unlocked_by": "hamming",
151
119
  "difficulty": 4,
152
- "topics": [
153
-
154
- ]
120
+ "slug": "luhn",
121
+ "topics": null,
122
+ "unlocked_by": "hamming",
123
+ "uuid": "5227a76c-8ecb-4e5f-b023-6af65a057c41"
155
124
  },
156
125
  {
157
- "uuid": "c1d4e0b4-6a0f-4be9-8222-345966621f53",
158
- "slug": "matrix",
159
126
  "core": true,
160
- "unlocked_by": null,
161
127
  "difficulty": 4,
162
- "topics": [
163
-
164
- ]
128
+ "slug": "matrix",
129
+ "topics": null,
130
+ "unlocked_by": null,
131
+ "uuid": "c1d4e0b4-6a0f-4be9-8222-345966621f53"
165
132
  },
166
133
  {
167
- "uuid": "ec268d8e-997b-4553-8c67-8bdfa1ecb888",
168
- "slug": "triangle",
169
134
  "core": true,
170
- "unlocked_by": null,
171
135
  "difficulty": 4,
172
- "topics": [
173
-
174
- ]
136
+ "slug": "triangle",
137
+ "topics": null,
138
+ "unlocked_by": null,
139
+ "uuid": "ec268d8e-997b-4553-8c67-8bdfa1ecb888"
175
140
  },
176
141
  {
177
- "uuid": "b7310b6e-435c-4d5f-b2bd-31e586d0f238",
178
- "slug": "largest-series-product",
179
142
  "core": false,
180
- "unlocked_by": "hamming",
181
143
  "difficulty": 4,
182
- "topics": [
183
-
184
- ]
144
+ "slug": "largest-series-product",
145
+ "topics": null,
146
+ "unlocked_by": "hamming",
147
+ "uuid": "b7310b6e-435c-4d5f-b2bd-31e586d0f238"
185
148
  },
186
149
  {
187
- "uuid": "6791d01f-bae4-4b63-ae76-86529ac49e36",
188
- "slug": "sieve",
189
150
  "core": false,
190
- "unlocked_by": "difference-of-squares",
191
151
  "difficulty": 4,
192
- "topics": [
193
-
194
- ]
152
+ "slug": "sieve",
153
+ "topics": null,
154
+ "unlocked_by": "difference-of-squares",
155
+ "uuid": "6791d01f-bae4-4b63-ae76-86529ac49e36"
195
156
  },
196
157
  {
197
- "uuid": "581afdbb-dfb6-4dc5-9554-a025b5469a3c",
198
- "slug": "twelve-days",
199
158
  "core": false,
200
- "unlocked_by": "two-fer",
201
159
  "difficulty": 4,
202
- "topics": [
203
-
204
- ]
160
+ "slug": "twelve-days",
161
+ "topics": null,
162
+ "unlocked_by": "two-fer",
163
+ "uuid": "581afdbb-dfb6-4dc5-9554-a025b5469a3c"
205
164
  },
206
165
  {
207
- "uuid": "9eb41883-55ef-4681-b5ac-5c2259302772",
208
- "slug": "rotational-cipher",
209
166
  "core": true,
210
- "unlocked_by": null,
211
167
  "difficulty": 4,
212
- "topics": [
213
-
214
- ]
168
+ "slug": "rotational-cipher",
169
+ "topics": null,
170
+ "unlocked_by": null,
171
+ "uuid": "9eb41883-55ef-4681-b5ac-5c2259302772"
215
172
  },
216
173
  {
217
- "uuid": "0b92ffee-c092-4ab1-ad78-76c8cf80e1b5",
218
- "slug": "kindergarten-garden",
219
174
  "core": false,
220
- "unlocked_by": "matrix",
221
175
  "difficulty": 4,
222
- "topics": [
223
-
224
- ]
176
+ "slug": "kindergarten-garden",
177
+ "topics": null,
178
+ "unlocked_by": "matrix",
179
+ "uuid": "0b92ffee-c092-4ab1-ad78-76c8cf80e1b5"
225
180
  },
226
181
  {
227
- "uuid": "1500d39a-c9d9-4d3a-9e77-fdc1837fc6ad",
228
- "slug": "collatz-conjecture",
229
182
  "core": false,
230
- "unlocked_by": "triangle",
231
183
  "difficulty": 4,
232
- "topics": [
233
-
234
- ]
184
+ "slug": "collatz-conjecture",
185
+ "topics": null,
186
+ "unlocked_by": "triangle",
187
+ "uuid": "1500d39a-c9d9-4d3a-9e77-fdc1837fc6ad"
235
188
  },
236
189
  {
237
- "uuid": "2c69db99-648d-4bd7-8012-1fbdeff6ca0a",
238
- "slug": "nth-prime",
239
190
  "core": false,
240
- "unlocked_by": "triangle",
241
191
  "difficulty": 4,
242
- "topics": [
243
-
244
- ]
192
+ "slug": "nth-prime",
193
+ "topics": null,
194
+ "unlocked_by": "triangle",
195
+ "uuid": "2c69db99-648d-4bd7-8012-1fbdeff6ca0a"
245
196
  },
246
197
  {
247
- "uuid": "8dfc2f0d-1141-46e9-95e2-6f35ccf6f160",
248
- "slug": "saddle-points",
249
198
  "core": true,
250
- "unlocked_by": null,
251
199
  "difficulty": 4,
252
- "topics": [
253
-
254
- ]
200
+ "slug": "saddle-points",
201
+ "topics": null,
202
+ "unlocked_by": null,
203
+ "uuid": "8dfc2f0d-1141-46e9-95e2-6f35ccf6f160"
255
204
  },
256
205
  {
257
- "uuid": "ecbd997b-86f4-4e11-9ff0-706ac2899415",
258
- "slug": "diamond",
259
206
  "core": false,
260
- "unlocked_by": "two-fer",
261
207
  "difficulty": 4,
262
- "topics": [
263
-
264
- ]
208
+ "slug": "diamond",
209
+ "topics": null,
210
+ "unlocked_by": "two-fer",
211
+ "uuid": "ecbd997b-86f4-4e11-9ff0-706ac2899415"
265
212
  },
266
213
  {
267
- "uuid": "c3e89c7c-3a8a-4ddc-b653-9b0ff9e1d7d8",
268
- "slug": "isogram",
269
214
  "core": false,
270
- "unlocked_by": "hello-world",
271
215
  "difficulty": 4,
272
- "topics": [
273
-
274
- ]
216
+ "slug": "isogram",
217
+ "topics": null,
218
+ "unlocked_by": "hello-world",
219
+ "uuid": "c3e89c7c-3a8a-4ddc-b653-9b0ff9e1d7d8"
275
220
  },
276
221
  {
277
- "uuid": "a732a838-8170-458a-a85e-d6b4c46f97a1",
278
- "slug": "flatten-array",
279
222
  "core": true,
280
- "unlocked_by": null,
281
223
  "difficulty": 5,
282
- "topics": [
283
-
284
- ]
224
+ "slug": "flatten-array",
225
+ "topics": null,
226
+ "unlocked_by": null,
227
+ "uuid": "a732a838-8170-458a-a85e-d6b4c46f97a1"
285
228
  },
286
229
  {
287
- "uuid": "38bc80ae-d842-4c04-a797-48edf322504d",
288
- "slug": "pig-latin",
289
230
  "core": false,
290
- "unlocked_by": "hello-world",
291
231
  "difficulty": 5,
292
- "topics": [
293
-
294
- ]
232
+ "slug": "pig-latin",
233
+ "topics": null,
234
+ "unlocked_by": "hello-world",
235
+ "uuid": "38bc80ae-d842-4c04-a797-48edf322504d"
295
236
  },
296
237
  {
297
- "uuid": "5f9139e7-9fbb-496a-a0d7-a946283033de",
298
- "slug": "phone-number",
299
238
  "core": false,
300
- "unlocked_by": "hamming",
301
239
  "difficulty": 5,
302
- "topics": [
303
-
304
- ]
240
+ "slug": "phone-number",
241
+ "topics": null,
242
+ "unlocked_by": "hamming",
243
+ "uuid": "5f9139e7-9fbb-496a-a0d7-a946283033de"
305
244
  },
306
245
  {
307
- "uuid": "2d80fdfc-5bd7-4b67-9fbe-8ab820d89051",
308
- "slug": "nucleotide-count",
309
246
  "core": false,
310
- "unlocked_by": "hamming",
311
247
  "difficulty": 5,
312
- "topics": [
313
-
314
- ]
248
+ "slug": "nucleotide-count",
249
+ "topics": null,
250
+ "unlocked_by": "hamming",
251
+ "uuid": "2d80fdfc-5bd7-4b67-9fbe-8ab820d89051"
315
252
  },
316
253
  {
317
- "uuid": "3603b770-87a5-4758-91f3-b4d1f9075bc1",
318
- "slug": "word-count",
319
254
  "core": true,
320
- "unlocked_by": null,
321
255
  "difficulty": 5,
322
- "topics": [
323
-
324
- ]
256
+ "slug": "word-count",
257
+ "topics": null,
258
+ "unlocked_by": null,
259
+ "uuid": "3603b770-87a5-4758-91f3-b4d1f9075bc1"
325
260
  },
326
261
  {
327
- "uuid": "4499a3f9-73a7-48bf-8753-d5b6abf588c9",
328
- "slug": "run-length-encoding",
329
262
  "core": false,
330
- "unlocked_by": "rotational-cipher",
331
263
  "difficulty": 5,
332
- "topics": [
333
-
334
- ]
264
+ "slug": "run-length-encoding",
265
+ "topics": null,
266
+ "unlocked_by": "rotational-cipher",
267
+ "uuid": "4499a3f9-73a7-48bf-8753-d5b6abf588c9"
335
268
  },
336
269
  {
337
- "uuid": "d7c2eed9-64c7-4c4a-b45d-c787d460337f",
338
- "slug": "robot-name",
339
270
  "core": true,
340
- "unlocked_by": null,
341
271
  "difficulty": 5,
342
- "topics": [
343
-
344
- ]
272
+ "slug": "robot-name",
273
+ "topics": null,
274
+ "unlocked_by": null,
275
+ "uuid": "d7c2eed9-64c7-4c4a-b45d-c787d460337f"
345
276
  },
346
277
  {
347
- "uuid": "599c08ec-7338-46ed-99f8-a76f78f724e6",
348
- "slug": "prime-factors",
349
278
  "core": false,
350
- "unlocked_by": "triangle",
351
279
  "difficulty": 5,
352
- "topics": [
353
-
354
- ]
280
+ "slug": "prime-factors",
281
+ "topics": null,
282
+ "unlocked_by": "triangle",
283
+ "uuid": "599c08ec-7338-46ed-99f8-a76f78f724e6"
355
284
  },
356
285
  {
357
- "uuid": "6a617ddb-04e3-451c-bb30-27ccd0be9125",
358
- "slug": "allergies",
359
286
  "core": false,
360
- "unlocked_by": "gigasecond",
361
287
  "difficulty": 5,
362
- "topics": [
363
-
364
- ]
288
+ "slug": "allergies",
289
+ "topics": null,
290
+ "unlocked_by": "gigasecond",
291
+ "uuid": "6a617ddb-04e3-451c-bb30-27ccd0be9125"
365
292
  },
366
293
  {
367
- "uuid": "34cd328c-cd96-492b-abd4-2b8716cdcd9a",
368
- "slug": "bob",
369
294
  "core": false,
370
- "unlocked_by": "two-fer",
371
295
  "difficulty": 5,
372
- "topics": [
373
-
374
- ]
296
+ "slug": "bob",
297
+ "topics": null,
298
+ "unlocked_by": "two-fer",
299
+ "uuid": "34cd328c-cd96-492b-abd4-2b8716cdcd9a"
375
300
  },
376
301
  {
377
- "uuid": "d2a76905-1c8c-4b03-b4f7-4fbff19329f3",
378
- "slug": "pascals-triangle",
379
302
  "core": false,
380
- "unlocked_by": "matrix",
381
303
  "difficulty": 5,
382
- "topics": [
383
-
384
- ]
304
+ "slug": "pascals-triangle",
305
+ "topics": null,
306
+ "unlocked_by": "matrix",
307
+ "uuid": "d2a76905-1c8c-4b03-b4f7-4fbff19329f3"
385
308
  },
386
309
  {
387
- "uuid": "85aa50ac-0141-49eb-bc6f-62f3f7a97647",
388
- "slug": "bracket-push",
389
310
  "core": false,
390
- "unlocked_by": "flatten-array",
391
311
  "difficulty": 5,
392
- "topics": [
393
-
394
- ]
312
+ "slug": "bracket-push",
313
+ "topics": null,
314
+ "unlocked_by": "flatten-array",
315
+ "uuid": "85aa50ac-0141-49eb-bc6f-62f3f7a97647"
395
316
  },
396
317
  {
397
- "uuid": "af80d7f4-c7d0-4d0b-9c30-09da120f6bb9",
398
- "slug": "series",
399
318
  "core": false,
400
- "unlocked_by": "hamming",
401
319
  "difficulty": 5,
402
- "topics": [
403
-
404
- ]
320
+ "slug": "series",
321
+ "topics": null,
322
+ "unlocked_by": "hamming",
323
+ "uuid": "af80d7f4-c7d0-4d0b-9c30-09da120f6bb9"
405
324
  },
406
325
  {
407
- "uuid": "d36ce010-210f-4e9a-9d6c-cb933e0a59af",
408
- "slug": "atbash-cipher",
409
326
  "core": false,
410
- "unlocked_by": "rotational-cipher",
411
327
  "difficulty": 5,
412
- "topics": [
413
-
414
- ]
328
+ "slug": "atbash-cipher",
329
+ "topics": null,
330
+ "unlocked_by": "rotational-cipher",
331
+ "uuid": "d36ce010-210f-4e9a-9d6c-cb933e0a59af"
415
332
  },
416
333
  {
417
- "uuid": "163fcc6b-c054-4232-a88b-0aded846a6eb",
418
- "slug": "spiral-matrix",
419
334
  "core": false,
420
- "unlocked_by": "matrix",
421
335
  "difficulty": 6,
422
- "topics": [
423
-
424
- ]
336
+ "slug": "spiral-matrix",
337
+ "topics": null,
338
+ "unlocked_by": "matrix",
339
+ "uuid": "163fcc6b-c054-4232-a88b-0aded846a6eb"
425
340
  },
426
341
  {
427
- "uuid": "3e728cd4-5e5f-4c69-8a53-bc36d020fcdb",
428
- "slug": "roman-numerals",
429
342
  "core": false,
430
- "unlocked_by": "hamming",
431
343
  "difficulty": 6,
432
- "topics": [
433
-
434
- ]
344
+ "slug": "roman-numerals",
345
+ "topics": null,
346
+ "unlocked_by": "hamming",
347
+ "uuid": "3e728cd4-5e5f-4c69-8a53-bc36d020fcdb"
435
348
  },
436
349
  {
437
- "uuid": "57b76837-4610-466f-9373-d5c2697625f1",
438
- "slug": "transpose",
439
350
  "core": false,
440
- "unlocked_by": "matrix",
441
351
  "difficulty": 6,
442
- "topics": [
443
-
444
- ]
352
+ "slug": "transpose",
353
+ "topics": null,
354
+ "unlocked_by": "matrix",
355
+ "uuid": "57b76837-4610-466f-9373-d5c2697625f1"
445
356
  },
446
357
  {
447
- "uuid": "6b51aca3-3451-4a64-ad7b-00b151d7548a",
358
+ "core": false,
359
+ "difficulty": 6,
448
360
  "slug": "house",
449
- "core": false,
361
+ "topics": null,
450
362
  "unlocked_by": "two-fer",
451
- "difficulty": 6,
452
- "topics": [
453
-
454
- ]
363
+ "uuid": "6b51aca3-3451-4a64-ad7b-00b151d7548a"
455
364
  },
456
365
  {
457
- "uuid": "dd3e6fd6-5359-4978-acd7-c39374cead4d",
458
- "slug": "food-chain",
459
366
  "core": false,
460
- "unlocked_by": "two-fer",
461
367
  "difficulty": 6,
462
- "topics": [
463
-
464
- ]
368
+ "slug": "food-chain",
369
+ "topics": null,
370
+ "unlocked_by": "two-fer",
371
+ "uuid": "dd3e6fd6-5359-4978-acd7-c39374cead4d"
465
372
  },
466
373
  {
467
- "uuid": "56943095-de76-40bf-b42b-fa3e70f8df5e",
468
- "slug": "beer-song",
469
374
  "core": false,
470
- "unlocked_by": "two-fer",
471
375
  "difficulty": 6,
472
- "topics": [
473
-
474
- ]
376
+ "slug": "beer-song",
377
+ "topics": null,
378
+ "unlocked_by": "two-fer",
379
+ "uuid": "56943095-de76-40bf-b42b-fa3e70f8df5e"
475
380
  },
476
381
  {
477
- "uuid": "5404109e-3ed9-4691-8eaf-af8b36024a44",
478
- "slug": "queen-attack",
479
382
  "core": false,
480
- "unlocked_by": "scrabble-score",
481
383
  "difficulty": 6,
482
- "topics": [
483
-
484
- ]
384
+ "slug": "queen-attack",
385
+ "topics": null,
386
+ "unlocked_by": "scrabble-score",
387
+ "uuid": "5404109e-3ed9-4691-8eaf-af8b36024a44"
485
388
  },
486
389
  {
487
- "uuid": "76d28d97-75d3-47eb-bb77-3d347b76f1b6",
488
- "slug": "etl",
489
390
  "core": false,
490
- "unlocked_by": "word-count",
491
391
  "difficulty": 6,
492
- "topics": [
493
-
494
- ]
392
+ "slug": "etl",
393
+ "topics": null,
394
+ "unlocked_by": "word-count",
395
+ "uuid": "76d28d97-75d3-47eb-bb77-3d347b76f1b6"
495
396
  },
496
397
  {
497
- "uuid": "7ba5084d-3b75-4406-a0d7-87c26387f9c0",
498
- "slug": "linked-list",
499
398
  "core": true,
500
- "unlocked_by": null,
501
399
  "difficulty": 6,
502
- "topics": [
503
-
504
- ]
400
+ "slug": "linked-list",
401
+ "topics": null,
402
+ "unlocked_by": null,
403
+ "uuid": "7ba5084d-3b75-4406-a0d7-87c26387f9c0"
505
404
  },
506
405
  {
507
- "uuid": "b4af5da1-601f-4b0f-bfb8-4a381851090c",
508
- "slug": "grade-school",
509
406
  "core": false,
510
- "unlocked_by": "word-count",
511
407
  "difficulty": 6,
512
- "topics": [
513
-
514
- ]
408
+ "slug": "grade-school",
409
+ "topics": null,
410
+ "unlocked_by": "word-count",
411
+ "uuid": "b4af5da1-601f-4b0f-bfb8-4a381851090c"
515
412
  },
516
413
  {
517
- "uuid": "993bde9d-7774-4e7a-a381-9eee75f28ecb",
518
- "slug": "robot-simulator",
519
414
  "core": false,
520
- "unlocked_by": "secret-handshake",
521
415
  "difficulty": 6,
522
- "topics": [
523
-
524
- ]
416
+ "slug": "robot-simulator",
417
+ "topics": null,
418
+ "unlocked_by": "secret-handshake",
419
+ "uuid": "993bde9d-7774-4e7a-a381-9eee75f28ecb"
525
420
  },
526
421
  {
527
- "uuid": "50136dc3-caf7-4fa1-b7bd-0cba1bea9176",
528
- "slug": "binary-search",
529
422
  "core": true,
530
- "unlocked_by": null,
531
423
  "difficulty": 6,
532
- "topics": [
533
-
534
- ]
424
+ "slug": "binary-search",
425
+ "topics": null,
426
+ "unlocked_by": null,
427
+ "uuid": "50136dc3-caf7-4fa1-b7bd-0cba1bea9176"
535
428
  },
536
429
  {
537
- "uuid": "416a1489-12af-4593-8540-0f55285c96b4",
538
- "slug": "minesweeper",
539
430
  "core": false,
540
- "unlocked_by": "scrabble-score",
541
431
  "difficulty": 6,
542
- "topics": [
543
-
544
- ]
432
+ "slug": "minesweeper",
433
+ "topics": null,
434
+ "unlocked_by": "scrabble-score",
435
+ "uuid": "416a1489-12af-4593-8540-0f55285c96b4"
545
436
  },
546
437
  {
547
- "uuid": "3310a3cd-c0cb-45fa-8c51-600178be904a",
548
- "slug": "wordy",
549
438
  "core": false,
550
- "unlocked_by": "secret-handshake",
551
439
  "difficulty": 6,
552
- "topics": [
553
-
554
- ]
440
+ "slug": "wordy",
441
+ "topics": null,
442
+ "unlocked_by": "secret-handshake",
443
+ "uuid": "3310a3cd-c0cb-45fa-8c51-600178be904a"
555
444
  },
556
445
  {
557
- "uuid": "f7c2e4b5-1995-4dfe-b827-c9aff8ac5332",
558
- "slug": "all-your-base",
559
446
  "core": false,
560
- "unlocked_by": "saddle-points",
561
447
  "difficulty": 6,
562
- "topics": [
563
-
564
- ]
448
+ "slug": "all-your-base",
449
+ "topics": null,
450
+ "unlocked_by": "saddle-points",
451
+ "uuid": "f7c2e4b5-1995-4dfe-b827-c9aff8ac5332"
565
452
  },
566
453
  {
567
- "uuid": "a242efc5-159d-492b-861d-12a1459fb334",
568
- "slug": "bank-account",
569
454
  "core": true,
570
- "unlocked_by": null,
571
455
  "difficulty": 6,
572
- "topics": [
573
-
574
- ]
456
+ "slug": "bank-account",
457
+ "topics": null,
458
+ "unlocked_by": null,
459
+ "uuid": "a242efc5-159d-492b-861d-12a1459fb334"
575
460
  },
576
461
  {
577
- "uuid": "4b3f7771-c642-4278-a3d9-2fb958f26361",
578
- "slug": "bowling",
579
462
  "core": false,
580
- "unlocked_by": "scrabble-score",
581
463
  "difficulty": 6,
582
- "topics": [
583
-
584
- ]
464
+ "slug": "bowling",
465
+ "topics": null,
466
+ "unlocked_by": "scrabble-score",
467
+ "uuid": "4b3f7771-c642-4278-a3d9-2fb958f26361"
585
468
  },
586
469
  {
587
- "uuid": "fb10dc2f-0ba1-44b6-8365-5e48e86d1283",
588
- "slug": "anagram",
589
470
  "core": false,
590
- "unlocked_by": "hello-world",
591
471
  "difficulty": 7,
592
- "topics": [
593
-
594
- ]
472
+ "slug": "anagram",
473
+ "topics": null,
474
+ "unlocked_by": "hello-world",
475
+ "uuid": "fb10dc2f-0ba1-44b6-8365-5e48e86d1283"
595
476
  },
596
477
  {
597
- "uuid": "d2aedbd7-092a-43d0-8a5e-ae3ebd5b9c7f",
598
- "slug": "sublist",
599
478
  "core": false,
600
- "unlocked_by": "linked-list",
601
479
  "difficulty": 7,
602
- "topics": [
603
-
604
- ]
480
+ "slug": "sublist",
481
+ "topics": null,
482
+ "unlocked_by": "linked-list",
483
+ "uuid": "d2aedbd7-092a-43d0-8a5e-ae3ebd5b9c7f"
605
484
  },
606
485
  {
607
- "uuid": "b53bde52-cb5f-4d43-86ec-18aa509d62f9",
608
- "slug": "word-search",
609
486
  "core": false,
610
- "unlocked_by": "scrabble-score",
611
487
  "difficulty": 7,
612
- "topics": [
613
-
614
- ]
488
+ "slug": "word-search",
489
+ "topics": null,
490
+ "unlocked_by": "scrabble-score",
491
+ "uuid": "b53bde52-cb5f-4d43-86ec-18aa509d62f9"
615
492
  },
616
493
  {
617
- "uuid": "e3e5ffe5-cfc1-467e-a28a-da0302130144",
618
- "slug": "simple-linked-list",
619
494
  "core": false,
620
- "unlocked_by": "linked-list",
621
495
  "difficulty": 7,
622
- "topics": [
623
-
624
- ]
496
+ "slug": "simple-linked-list",
497
+ "topics": null,
498
+ "unlocked_by": "linked-list",
499
+ "uuid": "e3e5ffe5-cfc1-467e-a28a-da0302130144"
625
500
  },
626
501
  {
627
- "uuid": "0a2d18aa-7b5e-4401-a952-b93d2060694f",
628
- "slug": "binary-search-tree",
629
502
  "core": false,
630
- "unlocked_by": "binary-search",
631
503
  "difficulty": 7,
632
- "topics": [
633
-
634
- ]
504
+ "slug": "binary-search-tree",
505
+ "topics": null,
506
+ "unlocked_by": "binary-search",
507
+ "uuid": "0a2d18aa-7b5e-4401-a952-b93d2060694f"
635
508
  },
636
509
  {
637
- "uuid": "602511d5-7e89-4def-b072-4dd311816810",
638
- "slug": "meetup",
639
510
  "core": false,
640
- "unlocked_by": "gigasecond",
641
511
  "difficulty": 7,
642
- "topics": [
643
-
644
- ]
512
+ "slug": "meetup",
513
+ "topics": null,
514
+ "unlocked_by": "gigasecond",
515
+ "uuid": "602511d5-7e89-4def-b072-4dd311816810"
645
516
  },
646
517
  {
647
- "uuid": "162bebdc-9bf2-43c0-8460-a91f5fc16147",
648
- "slug": "crypto-square",
649
518
  "core": false,
650
- "unlocked_by": "rotational-cipher",
651
519
  "difficulty": 7,
652
- "topics": [
653
-
654
- ]
520
+ "slug": "crypto-square",
521
+ "topics": null,
522
+ "unlocked_by": "rotational-cipher",
523
+ "uuid": "162bebdc-9bf2-43c0-8460-a91f5fc16147"
655
524
  },
656
525
  {
657
- "uuid": "57eeac00-741c-4843-907a-51f0ac5ea4cb",
658
- "slug": "poker",
659
526
  "core": false,
660
- "unlocked_by": "scrabble-score",
661
527
  "difficulty": 7,
528
+ "slug": "poker",
662
529
  "topics": [
663
- "Parsing",
664
- "Sorting",
665
- "Games"
666
- ]
530
+ "games",
531
+ "parsing",
532
+ "sorting"
533
+ ],
534
+ "unlocked_by": "scrabble-score",
535
+ "uuid": "57eeac00-741c-4843-907a-51f0ac5ea4cb"
667
536
  },
668
537
  {
669
- "uuid": "97c8fcd4-85b6-41cb-9de2-b4e1b4951222",
670
- "slug": "clock",
671
538
  "core": false,
672
- "unlocked_by": "saddle-points",
673
539
  "difficulty": 7,
674
- "topics": [
675
-
676
- ]
540
+ "slug": "clock",
541
+ "topics": null,
542
+ "unlocked_by": "saddle-points",
543
+ "uuid": "97c8fcd4-85b6-41cb-9de2-b4e1b4951222"
677
544
  },
678
545
  {
679
- "uuid": "5cbc6a67-3a53-4aad-ae68-ff469525437f",
680
- "slug": "ocr-numbers",
681
546
  "core": false,
682
- "unlocked_by": "robot-name",
683
547
  "difficulty": 8,
684
- "topics": [
685
-
686
- ]
548
+ "slug": "ocr-numbers",
549
+ "topics": null,
550
+ "unlocked_by": "robot-name",
551
+ "uuid": "5cbc6a67-3a53-4aad-ae68-ff469525437f"
687
552
  },
688
553
  {
689
- "uuid": "626dc25a-062c-4053-a8c1-788e4dc44ca0",
690
- "slug": "circular-buffer",
691
554
  "core": false,
692
- "unlocked_by": "linked-list",
693
555
  "difficulty": 8,
556
+ "slug": "circular-buffer",
694
557
  "topics": [
695
- "Queues",
696
- "Classes",
697
- "Exception handling"
698
- ]
558
+ "classes",
559
+ "exception-handling",
560
+ "queues"
561
+ ],
562
+ "unlocked_by": "linked-list",
563
+ "uuid": "626dc25a-062c-4053-a8c1-788e4dc44ca0"
699
564
  },
700
565
  {
701
- "uuid": "64cda115-919a-4eef-9a45-9ec5d1af98cc",
702
- "slug": "rectangles",
703
566
  "core": false,
704
- "unlocked_by": "robot-name",
705
567
  "difficulty": 8,
706
- "topics": [
707
-
708
- ]
568
+ "slug": "rectangles",
569
+ "topics": null,
570
+ "unlocked_by": "robot-name",
571
+ "uuid": "64cda115-919a-4eef-9a45-9ec5d1af98cc"
709
572
  },
710
573
  {
711
- "uuid": "e5f05d00-fe5b-4d78-b2fa-934c1c9afb32",
712
- "slug": "book-store",
713
574
  "core": false,
714
- "unlocked_by": "flatten-array",
715
575
  "difficulty": 8,
716
- "topics": [
717
-
718
- ]
576
+ "slug": "book-store",
577
+ "topics": null,
578
+ "unlocked_by": "flatten-array",
579
+ "uuid": "e5f05d00-fe5b-4d78-b2fa-934c1c9afb32"
719
580
  },
720
581
  {
721
- "uuid": "f654831f-c34b-44f5-9dd5-054efbb486f2",
722
- "slug": "simple-cipher",
723
582
  "core": false,
724
- "unlocked_by": "rotational-cipher",
725
583
  "difficulty": 8,
726
- "topics": [
727
-
728
- ]
584
+ "slug": "simple-cipher",
585
+ "topics": null,
586
+ "unlocked_by": "rotational-cipher",
587
+ "uuid": "f654831f-c34b-44f5-9dd5-054efbb486f2"
729
588
  },
730
589
  {
731
- "uuid": "52d11278-0d65-4b5b-b387-1374fced3243",
732
- "slug": "complex-numbers",
733
590
  "core": false,
734
- "unlocked_by": "triangle",
735
591
  "difficulty": 8,
736
- "topics": [
737
-
738
- ]
592
+ "slug": "complex-numbers",
593
+ "topics": null,
594
+ "unlocked_by": "triangle",
595
+ "uuid": "52d11278-0d65-4b5b-b387-1374fced3243"
739
596
  },
740
597
  {
741
- "uuid": "a9836565-5c39-4285-b83a-53408be36ccc",
742
- "slug": "list-ops",
743
598
  "core": false,
744
- "unlocked_by": "linked-list",
745
599
  "difficulty": 8,
746
- "topics": [
747
-
748
- ]
600
+ "slug": "list-ops",
601
+ "topics": null,
602
+ "unlocked_by": "linked-list",
603
+ "uuid": "a9836565-5c39-4285-b83a-53408be36ccc"
749
604
  },
750
605
  {
751
- "uuid": "bac1f4bc-eea9-43c1-8e95-097347f5925e",
752
- "slug": "change",
753
606
  "core": false,
754
- "unlocked_by": "flatten-array",
755
607
  "difficulty": 8,
756
- "topics": [
757
-
758
- ]
608
+ "slug": "change",
609
+ "topics": null,
610
+ "unlocked_by": "flatten-array",
611
+ "uuid": "bac1f4bc-eea9-43c1-8e95-097347f5925e"
759
612
  },
760
613
  {
761
- "uuid": "873c05de-b5f5-4c5b-97f0-d1ede8a82832",
762
- "slug": "palindrome-products",
763
614
  "core": false,
764
- "unlocked_by": "saddle-points",
765
615
  "difficulty": 8,
766
- "topics": [
767
-
768
- ]
616
+ "slug": "palindrome-products",
617
+ "topics": null,
618
+ "unlocked_by": "saddle-points",
619
+ "uuid": "873c05de-b5f5-4c5b-97f0-d1ede8a82832"
769
620
  },
770
621
  {
771
- "uuid": "88505f95-89e5-4a08-8ed2-208eb818cdf1",
772
- "slug": "pythagorean-triplet",
773
622
  "core": false,
774
- "unlocked_by": "triangle",
775
623
  "difficulty": 9,
776
- "topics": [
777
-
778
- ]
624
+ "slug": "pythagorean-triplet",
625
+ "topics": null,
626
+ "unlocked_by": "triangle",
627
+ "uuid": "88505f95-89e5-4a08-8ed2-208eb818cdf1"
779
628
  },
780
629
  {
781
- "uuid": "f0c0316d-3fb5-455e-952a-91161e7fb298",
782
- "slug": "forth",
783
630
  "core": false,
784
- "unlocked_by": "secret-handshake",
785
631
  "difficulty": 9,
786
- "topics": [
787
-
788
- ]
632
+ "slug": "forth",
633
+ "topics": null,
634
+ "unlocked_by": "secret-handshake",
635
+ "uuid": "f0c0316d-3fb5-455e-952a-91161e7fb298"
789
636
  },
790
637
  {
791
- "uuid": "377fe38b-08ad-4f3a-8118-a43c10f7b9b2",
792
- "slug": "custom-set",
793
638
  "core": false,
794
- "unlocked_by": "linked-list",
795
639
  "difficulty": 10,
796
- "topics": [
797
-
798
- ]
640
+ "slug": "custom-set",
641
+ "topics": null,
642
+ "unlocked_by": "linked-list",
643
+ "uuid": "377fe38b-08ad-4f3a-8118-a43c10f7b9b2"
799
644
  },
800
645
  {
801
- "uuid": "e58c29d2-80a7-40ef-bed0-4a184ae35f34",
646
+ "deprecated": true,
802
647
  "slug": "accumulate",
803
- "deprecated": true
648
+ "uuid": "e58c29d2-80a7-40ef-bed0-4a184ae35f34"
804
649
  },
805
650
  {
806
- "uuid": "9ea6e0fa-b91d-4d17-ac8f-6d2dc30fdd44",
651
+ "deprecated": true,
807
652
  "slug": "binary",
808
- "deprecated": true
653
+ "uuid": "9ea6e0fa-b91d-4d17-ac8f-6d2dc30fdd44"
809
654
  },
810
655
  {
811
- "uuid": "6fe53a08-c123-465d-864a-ef18217203c4",
656
+ "deprecated": true,
812
657
  "slug": "hexadecimal",
813
- "deprecated": true
658
+ "uuid": "6fe53a08-c123-465d-864a-ef18217203c4"
814
659
  },
815
660
  {
816
- "uuid": "14a29e82-f9b1-4662-b678-06992e306c01",
661
+ "deprecated": true,
817
662
  "slug": "octal",
818
- "deprecated": true
663
+ "uuid": "14a29e82-f9b1-4662-b678-06992e306c01"
819
664
  },
820
665
  {
821
- "uuid": "2d195cd9-1814-490a-8dd6-a2c676f1d4cd",
666
+ "deprecated": true,
822
667
  "slug": "strain",
823
- "deprecated": true
668
+ "uuid": "2d195cd9-1814-490a-8dd6-a2c676f1d4cd"
824
669
  },
825
670
  {
826
- "uuid": "ee3a8abe-6b19-4b47-9cf6-4d39ae915fb7",
671
+ "deprecated": true,
827
672
  "slug": "trinary",
828
- "deprecated": true
673
+ "uuid": "ee3a8abe-6b19-4b47-9cf6-4d39ae915fb7"
829
674
  }
830
675
  ],
831
676
  "foregone": [
832
677
  "leap",
833
678
  "grains",
834
679
  "say"
835
- ]
836
- }
680
+ ],
681
+ "language": "Java"
682
+ }