trackler 2.1.0.0 → 2.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/connect/description.md +2 -1
  3. data/common/exercises/crypto-square/canonical-data.json +2 -2
  4. data/common/exercises/two-bucket/canonical-data.json +27 -1
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/c/exercises/perfect-numbers/src/example.c +8 -4
  7. data/tracks/clojure/config.json +5 -0
  8. data/tracks/clojure/exercises/secret-handshake/project.clj +4 -0
  9. data/tracks/clojure/exercises/secret-handshake/src/example.clj +19 -0
  10. data/tracks/clojure/exercises/secret-handshake/test/secret_handshake_test.clj +55 -0
  11. data/tracks/cpp/.travis.yml +4 -3
  12. data/tracks/cpp/README.md +1 -1
  13. data/tracks/cpp/config.json +171 -67
  14. data/tracks/cpp/docs/ABOUT.md +2 -2
  15. data/tracks/cpp/docs/INSTALLATION.md +22 -28
  16. data/tracks/cpp/docs/TESTS.md +1 -1
  17. data/tracks/cpp/exercises/anagram/CMakeLists.txt +2 -9
  18. data/tracks/cpp/exercises/beer-song/CMakeLists.txt +2 -9
  19. data/tracks/cpp/exercises/binary/CMakeLists.txt +2 -9
  20. data/tracks/cpp/exercises/bob/CMakeLists.txt +2 -9
  21. data/tracks/cpp/exercises/clock/CMakeLists.txt +2 -9
  22. data/tracks/cpp/exercises/clock/clock_test.cpp +188 -64
  23. data/tracks/cpp/exercises/clock/example.cpp +17 -12
  24. data/tracks/cpp/exercises/clock/example.h +1 -0
  25. data/tracks/cpp/exercises/crypto-square/CMakeLists.txt +2 -9
  26. data/tracks/cpp/exercises/difference-of-squares/CMakeLists.txt +2 -9
  27. data/tracks/cpp/exercises/etl/CMakeLists.txt +2 -9
  28. data/tracks/cpp/exercises/etl/etl_test.cpp +5 -5
  29. data/tracks/cpp/exercises/food-chain/CMakeLists.txt +2 -9
  30. data/tracks/cpp/exercises/gigasecond/CMakeLists.txt +2 -9
  31. data/tracks/cpp/exercises/gigasecond/example.cpp +2 -6
  32. data/tracks/cpp/exercises/gigasecond/example.h +2 -2
  33. data/tracks/cpp/exercises/gigasecond/gigasecond_test.cpp +26 -8
  34. data/tracks/cpp/exercises/grade-school/CMakeLists.txt +2 -9
  35. data/tracks/cpp/exercises/grade-school/grade_school_test.cpp +5 -6
  36. data/tracks/cpp/exercises/grains/CMakeLists.txt +2 -9
  37. data/tracks/cpp/exercises/hamming/CMakeLists.txt +2 -9
  38. data/tracks/cpp/exercises/hello-world/CMakeLists.txt +2 -9
  39. data/tracks/cpp/exercises/hexadecimal/CMakeLists.txt +2 -9
  40. data/tracks/cpp/exercises/leap/CMakeLists.txt +2 -9
  41. data/tracks/cpp/exercises/meetup/CMakeLists.txt +2 -9
  42. data/tracks/cpp/exercises/meetup/meetup_test.cpp +1 -1
  43. data/tracks/cpp/exercises/nth-prime/CMakeLists.txt +2 -9
  44. data/tracks/cpp/exercises/nucleotide-count/CMakeLists.txt +2 -9
  45. data/tracks/cpp/exercises/nucleotide-count/nucleotide_count_test.cpp +3 -4
  46. data/tracks/cpp/exercises/phone-number/CMakeLists.txt +2 -9
  47. data/tracks/cpp/exercises/prime-factors/CMakeLists.txt +2 -9
  48. data/tracks/cpp/exercises/queen-attack/CMakeLists.txt +2 -9
  49. data/tracks/cpp/exercises/raindrops/CMakeLists.txt +2 -9
  50. data/tracks/cpp/exercises/rna-transcription/CMakeLists.txt +2 -9
  51. data/tracks/cpp/exercises/robot-name/CMakeLists.txt +2 -9
  52. data/tracks/cpp/exercises/roman-numerals/CMakeLists.txt +2 -9
  53. data/tracks/cpp/exercises/say/CMakeLists.txt +2 -9
  54. data/tracks/cpp/exercises/scrabble-score/CMakeLists.txt +2 -9
  55. data/tracks/cpp/exercises/series/CMakeLists.txt +2 -9
  56. data/tracks/cpp/exercises/series/series_test.cpp +11 -11
  57. data/tracks/cpp/exercises/sieve/CMakeLists.txt +2 -9
  58. data/tracks/cpp/exercises/space-age/CMakeLists.txt +2 -9
  59. data/tracks/cpp/exercises/sum-of-multiples/CMakeLists.txt +2 -9
  60. data/tracks/cpp/exercises/triangle/CMakeLists.txt +2 -9
  61. data/tracks/cpp/exercises/trinary/CMakeLists.txt +2 -9
  62. data/tracks/cpp/exercises/word-count/CMakeLists.txt +2 -9
  63. data/tracks/cpp/exercises/word-count/word_count_test.cpp +14 -15
  64. data/tracks/go/README.md +27 -13
  65. data/tracks/go/config.json +1 -0
  66. data/tracks/go/exercises/connect/.meta/gen.go +1 -3
  67. data/tracks/go/exercises/connect/cases_test.go +2 -1
  68. data/tracks/go/exercises/custom-set/.meta/gen.go +122 -101
  69. data/tracks/go/exercises/custom-set/cases_test.go +13 -4
  70. data/tracks/go/exercises/custom-set/custom_set_test.go +2 -2
  71. data/tracks/go/exercises/hamming/.meta/gen.go +1 -3
  72. data/tracks/go/exercises/hamming/cases_test.go +7 -1
  73. data/tracks/go/exercises/hamming/example.go +1 -1
  74. data/tracks/go/exercises/hamming/hamming_test.go +1 -1
  75. data/tracks/go/exercises/hello-world/{hello_example_test.go → example_helloworld_test.go} +0 -0
  76. data/tracks/go/exercises/house/house_test.go +8 -8
  77. data/tracks/go/exercises/meetup/.meta/gen.go +1 -3
  78. data/tracks/go/exercises/meetup/cases_test.go +2 -1
  79. data/tracks/go/exercises/palindrome-products/example.go +1 -1
  80. data/tracks/go/exercises/palindrome-products/palindrome_products_test.go +1 -1
  81. data/tracks/go/exercises/pascals-triangle/pascals_triangle_test.go +24 -4
  82. data/tracks/go/exercises/rna-transcription/.meta/gen.go +1 -3
  83. data/tracks/go/exercises/rna-transcription/cases_test.go +2 -1
  84. data/tracks/go/exercises/roman-numerals/.meta/gen.go +1 -3
  85. data/tracks/go/exercises/roman-numerals/cases_test.go +2 -1
  86. data/tracks/go/exercises/roman-numerals/example.go +1 -1
  87. data/tracks/go/exercises/transpose/.meta/gen.go +1 -3
  88. data/tracks/go/exercises/transpose/cases_test.go +2 -1
  89. data/tracks/go/exercises/transpose/transpose_test.go +5 -0
  90. data/tracks/go/exercises/word-count/.meta/gen.go +1 -3
  91. data/tracks/go/exercises/word-count/cases_test.go +2 -1
  92. data/tracks/go/gen/gen.go +3 -2
  93. data/tracks/java/config.json +5 -0
  94. data/tracks/java/exercises/saddle-points/build.gradle +17 -0
  95. data/tracks/java/exercises/saddle-points/src/example/java/Matrix.java +44 -0
  96. data/tracks/java/exercises/saddle-points/src/example/java/MatrixCoordinate.java +31 -0
  97. data/tracks/java/exercises/saddle-points/src/main/java/Matrix.java +5 -0
  98. data/tracks/java/exercises/saddle-points/src/main/java/MatrixCoordinate.java +31 -0
  99. data/tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java +82 -0
  100. data/tracks/java/exercises/settings.gradle +1 -0
  101. data/tracks/javascript/.travis.yml +3 -1
  102. data/tracks/javascript/Makefile +2 -8
  103. data/tracks/javascript/SETUP.md +1 -2
  104. data/tracks/javascript/docs/INSTALLATION.md +3 -4
  105. data/tracks/javascript/docs/TESTS.md +14 -26
  106. data/tracks/javascript/exercises/hamming/example.js +7 -11
  107. data/tracks/javascript/exercises/hello-world/HINTS.md +3 -3
  108. data/tracks/javascript/exercises/robot-simulator/example.js +72 -73
  109. data/tracks/perl6/config.json +5 -0
  110. data/tracks/perl6/exercises/clock/Clock.pm6 +4 -0
  111. data/tracks/perl6/exercises/clock/Example.pm6 +12 -0
  112. data/tracks/perl6/exercises/clock/clock.t +534 -0
  113. data/tracks/perl6/exercises/clock/example.yaml +16 -0
  114. data/tracks/perl6/exercises/robot-name/Example.pm +11 -4
  115. data/tracks/php/exercises/hello-world/hello-world.php +1 -1
  116. data/tracks/php/exercises/hello-world/hello-world_test.php +1 -11
  117. data/tracks/php/exercises/robot-name/robot-name_test.php +1 -0
  118. data/tracks/purescript/config.json +7 -0
  119. data/tracks/purescript/exercises/largest-series-product/bower.json +16 -0
  120. data/tracks/purescript/exercises/largest-series-product/examples/src/LargestSeriesProduct.purs +31 -0
  121. data/tracks/purescript/exercises/largest-series-product/src/LargestSeriesProduct.purs +3 -0
  122. data/tracks/purescript/exercises/largest-series-product/test/Main.purs +73 -0
  123. data/tracks/python/exercises/sublist/sublist_test.py +94 -55
  124. data/tracks/ruby/README.md +38 -25
  125. data/tracks/ruby/exercises/hamming/example.tt +6 -4
  126. data/tracks/ruby/exercises/hamming/hamming_test.rb +4 -5
  127. data/tracks/ruby/exercises/linked-list/linked_list_test.rb +16 -0
  128. data/tracks/ruby/exercises/luhn/luhn_test.rb +5 -5
  129. data/tracks/ruby/exercises/ocr-numbers/.meta/.version +1 -0
  130. data/tracks/ruby/exercises/ocr-numbers/example.rb +42 -61
  131. data/tracks/ruby/exercises/ocr-numbers/example.tt +21 -0
  132. data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +63 -138
  133. data/tracks/ruby/lib/generator/exercise_cases.rb +43 -0
  134. data/tracks/ruby/lib/generator/underscore.rb +9 -0
  135. data/tracks/ruby/lib/hamming_cases.rb +9 -14
  136. data/tracks/ruby/lib/luhn_cases.rb +2 -18
  137. data/tracks/ruby/lib/ocr_numbers_cases.rb +20 -0
  138. data/tracks/ruby/lib/pig_latin_cases.rb +2 -12
  139. data/tracks/ruby/test/generator/underscore_test.rb +23 -0
  140. data/tracks/scala/config.json +316 -316
  141. metadata +26 -10
  142. data/tracks/cpp/exercises/etl/require_equal_containers.h +0 -88
  143. data/tracks/cpp/exercises/grade-school/require_equal_containers.h +0 -88
  144. data/tracks/cpp/exercises/nucleotide-count/require_equal_containers.h +0 -88
  145. data/tracks/cpp/exercises/series/require_equal_containers.h +0 -88
  146. data/tracks/cpp/exercises/word-count/require_equal_containers.h +0 -88
  147. data/tracks/javascript/exercises/acronym/package.json +0 -12
  148. data/tracks/javascript/package.json +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4ecc9f0b0cf82919e4051e89cc515e29f491815
4
- data.tar.gz: 03f6e5a96c078af22f5eb991b21656f62639f17b
3
+ metadata.gz: 690feb281e757e5ee91abb40fc82aaa6d81031bc
4
+ data.tar.gz: 3c695678955825bef34b2839d54bfc8b03f680fd
5
5
  SHA512:
6
- metadata.gz: fe4410ff41af1a8161a448c37eb884306cc36d64fdad7c511ce366d86bba936d600c04fa7f5d1a8b7ca6cabac32e7b5e3c6d33e3151f98e5b6a29da0f2533d99
7
- data.tar.gz: 219980a9f1102703187e5a6dcf245988b52ff84b8eecae28c4f607011f7c83b344be2a8b65027cf80a1a74a508bbe6c17f9db58a7990d386ee10cf5b67b4c1e8
6
+ metadata.gz: b7516fc2eba6d69dbcb1ef25a8ea2a54798889f0d6413514f1af4b7b41ed63ce445d0c2f0dfd5008b32d4a5a8b4728bea868080bf1517bae222b37e580bddb1a
7
+ data.tar.gz: 692a6672ec614d664d63b6ef03f103612d50462ed99bff75dec0ccfe9e8df60ef439d67f25b535e3d91af68ca62e84a2d8790701a65e0e85078c99c45a954859
@@ -8,7 +8,8 @@ side directly opposite it and the other player gets assigned the two other
8
8
  sides).
9
9
 
10
10
  Your goal is to build a program that given a simple representation of a board
11
- computes the winner (or lack thereof).
11
+ computes the winner (or lack thereof). Note that all games need not be "fair".
12
+ (For example, players may have mismatched piece counts.)
12
13
 
13
14
  The boards look like this (with spaces added for readability, which won't be in
14
15
  the representation passed to your code):
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "crypto-square",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "the spaces and punctuation are removed from the English text and the message is downcased",
@@ -32,7 +32,7 @@
32
32
  "description": "empty plaintext results in an empty rectangle",
33
33
  "property": "plaintextSegments",
34
34
  "plaintext": "",
35
- "expected": "[]"
35
+ "expected": []
36
36
  },
37
37
  {
38
38
  "description": "4 character plaintext results in an 2x2 rectangle",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "two-bucket",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "cases": [
5
5
  {
6
6
  "description": "Measure using bucket one of size 3 and bucket two of size 5 - start with bucket one",
@@ -53,6 +53,32 @@
53
53
  "goal_bucket": "two",
54
54
  "other_bucket": 7
55
55
  }
56
+ },
57
+ {
58
+ "description": "Measure one step using bucket one of size 1 and bucket two of size 3 - start with bucket two",
59
+ "property": "measure",
60
+ "bucket_one": 1,
61
+ "bucket_two": 3,
62
+ "goal": 3,
63
+ "start_bucket": "two",
64
+ "expected": {
65
+ "moves": 1,
66
+ "goal_bucket": "two",
67
+ "other_bucket": 0
68
+ }
69
+ },
70
+ {
71
+ "description": "Measure using bucket one of size 2 and bucket two of size 3 - start with bucket one and end with bucket two",
72
+ "property": "measure",
73
+ "bucket_one": 2,
74
+ "bucket_two": 3,
75
+ "goal": 3,
76
+ "start_bucket": "one",
77
+ "expected": {
78
+ "moves": 4,
79
+ "goal_bucket": "two",
80
+ "other_bucket": 1
81
+ }
56
82
  }
57
83
  ]
58
84
  }
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.1.0.0"
2
+ VERSION = "2.1.0.1"
3
3
  end
@@ -2,13 +2,17 @@
2
2
 
3
3
  static int aliquot_sum(int n)
4
4
  {
5
- int result = 0;
6
- for (int i = 1; i < n; ++i) {
5
+ if (n == 1) {
6
+ return 0;
7
+ }
8
+ int result = 1;
9
+ int i;
10
+ for (i = 2; i * i < n; ++i) {
7
11
  if ((n % i) == 0) {
8
- result = result + i;
12
+ result += i + (n / i);
9
13
  }
10
14
  }
11
- return result;
15
+ return result + (i * i == n ? i : 0);
12
16
  }
13
17
 
14
18
  kind classify_number(int n)
@@ -301,6 +301,11 @@
301
301
  "difficulty": 1,
302
302
  "slug": "pig-latin",
303
303
  "topics": []
304
+ },
305
+ {
306
+ "difficulty": 1,
307
+ "slug": "secret-handshake",
308
+ "topics": []
304
309
  }
305
310
  ]
306
311
  }
@@ -0,0 +1,4 @@
1
+ (defproject secret-handshake "0.1.0-SNAPSHOT"
2
+ :description "secret-handshake exercise."
3
+ :url "https://github.com/exercism/xclojure/tree/master/exercises/secret-handshake"
4
+ :dependencies [[org.clojure/clojure "1.8.0"]])
@@ -0,0 +1,19 @@
1
+ (ns secret-handshake)
2
+
3
+ (defn- int->reversed-binary [int]
4
+ (-> int
5
+ (Integer/toBinaryString)
6
+ (reverse)))
7
+
8
+ (defn- convert [integer]
9
+ (remove nil?
10
+ (map (fn [command binary]
11
+ (when (= \1 binary) command))
12
+ ["wink" "double blink" "close your eyes" "jump"]
13
+ (int->reversed-binary integer))))
14
+
15
+ (defn commands [integer]
16
+ (let [cmds (convert integer)]
17
+ (if (= \1 (nth (int->reversed-binary integer) 4 \0))
18
+ (reverse cmds)
19
+ cmds)))
@@ -0,0 +1,55 @@
1
+ (ns secret-handshake-test
2
+ (:require [clojure.test :refer [deftest testing is]]
3
+ secret-handshake))
4
+
5
+ (deftest wink
6
+ (testing "a wink is returned for binary 1"
7
+ (is (= ["wink"] (secret-handshake/commands 1)))))
8
+
9
+ (deftest double-blink
10
+ (testing "a double blink is returned for a binary 10"
11
+ (is (= ["double blink"] (secret-handshake/commands 2)))))
12
+
13
+ (deftest close-your-eyes
14
+ (testing "a close your eyes is returned for a binary 100"
15
+ (is (= ["close your eyes"] (secret-handshake/commands 4)))))
16
+
17
+ (deftest jump
18
+ (testing "a jump is returned for a binary 1000"
19
+ (is (= ["jump"] (secret-handshake/commands 8)))))
20
+
21
+ (deftest two-actions
22
+ (testing "commands returns multiple actions"
23
+ (is (= ["wink" "double blink"] (secret-handshake/commands 3)))))
24
+
25
+ (deftest reversing
26
+ (testing "giving a binary 10000 reverses actions"
27
+ (is (= ["double blink" "wink"] (secret-handshake/commands 19)))))
28
+
29
+ (deftest reversing-one-action
30
+ (testing "reversing one action returns the same action"
31
+ (is (= ["jump"] (secret-handshake/commands 24)))))
32
+
33
+ (deftest reverse-nothing
34
+ (testing "reversing nothing still gives nothing"
35
+ (is (= [] (secret-handshake/commands 16)))))
36
+
37
+ (deftest all-actions
38
+ (testing "all actions together"
39
+ (is (=
40
+ ["wink" "double blink" "close your eyes" "jump"]
41
+ (secret-handshake/commands 15)))))
42
+
43
+ (deftest reverse-all-actions
44
+ (testing "reversing all actions together"
45
+ (is (=
46
+ ["jump" "close your eyes" "double blink" "wink"]
47
+ (secret-handshake/commands 31)))))
48
+
49
+ (deftest nothing
50
+ (testing "do nothing for 0"
51
+ (is (= [] (secret-handshake/commands 0)))))
52
+
53
+ (deftest lower-5-bits-zero
54
+ (testing "do nothing for high numbers if lower 5 bits not set"
55
+ (is (= [] (secret-handshake/commands 32)))))
@@ -1,15 +1,16 @@
1
1
  ---
2
+ dist: trusty
3
+ sudo: required
2
4
  language: cpp
3
5
  compiler:
4
6
  - gcc
5
7
  - clang
6
8
  before_install:
7
- - sudo add-apt-repository -y ppa:kalakris/cmake
8
- - sudo add-apt-repository -y ppa:boost-latest/ppa
9
+ - sudo add-apt-repository -y ppa:samuel-bachmann/boost
9
10
  - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
10
11
  - sudo apt-get -qq -d update
11
12
  install:
12
- - sudo apt-get -qq install libboost1.55-all-dev cmake g++-4.8
13
+ - sudo apt-get -qq install boost1.60 cmake g++-4.8
13
14
  - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90
14
15
  script:
15
16
  - bin/fetch-configlet
data/tracks/cpp/README.md CHANGED
@@ -6,7 +6,7 @@ Exercism Exercises in C++
6
6
 
7
7
  ## Contributing Guide
8
8
 
9
- Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data)
9
+ Please see the [contributing guide](https://github.com/exercism/x-common/blob/master/CONTRIBUTING.md)
10
10
 
11
11
  ## License
12
12
 
@@ -18,178 +18,282 @@
18
18
  "difficulty": 1,
19
19
  "slug": "hello-world",
20
20
  "topics": [
21
- "strings"
21
+ "strings"
22
22
  ]
23
23
  },
24
24
  {
25
- "difficulty": 1,
25
+ "difficulty": 5,
26
26
  "slug": "bob",
27
- "topics": []
27
+ "topics": [
28
+ "strings",
29
+ "control-flow (conditionals)",
30
+ "parsing"
31
+ ]
28
32
  },
29
33
  {
30
34
  "difficulty": 1,
31
35
  "slug": "leap",
32
- "topics": []
36
+ "topics": [
37
+ "logic",
38
+ "control-flow (conditionals)"
39
+ ]
33
40
  },
34
41
  {
35
- "difficulty": 1,
42
+ "difficulty": 2,
36
43
  "slug": "gigasecond",
37
- "topics": []
44
+ "topics": [
45
+ "dates",
46
+ "interfaces"
47
+ ]
38
48
  },
39
49
  {
40
- "difficulty": 1,
50
+ "difficulty": 3,
41
51
  "slug": "hamming",
42
- "topics": []
52
+ "topics": [
53
+ "strings",
54
+ "control-flow (loops)"
55
+ ]
43
56
  },
44
57
  {
45
- "difficulty": 1,
58
+ "difficulty": 5,
46
59
  "slug": "anagram",
47
- "topics": []
60
+ "topics": [
61
+ "strings",
62
+ "filtering",
63
+ "arrays"
64
+ ]
48
65
  },
49
66
  {
50
- "difficulty": 1,
67
+ "difficulty": 3,
51
68
  "slug": "etl",
52
- "topics": []
69
+ "topics": [
70
+ "maps",
71
+ "arrays",
72
+ "control-flow (loops)"
73
+ ]
53
74
  },
54
75
  {
55
- "difficulty": 1,
76
+ "difficulty": 5,
56
77
  "slug": "word-count",
57
- "topics": []
78
+ "topics": [
79
+ "strings",
80
+ "arrays",
81
+ "maps",
82
+ "parsing"
83
+ ]
58
84
  },
59
85
  {
60
- "difficulty": 1,
86
+ "difficulty": 3,
61
87
  "slug": "difference-of-squares",
62
- "topics": []
88
+ "topics": [
89
+ "control-flow (loops)"
90
+ ]
63
91
  },
64
92
  {
65
- "difficulty": 1,
93
+ "difficulty": 3,
66
94
  "slug": "nucleotide-count",
67
- "topics": []
95
+ "topics": [
96
+ "strings",
97
+ "parsing"
98
+ ]
68
99
  },
69
100
  {
70
- "difficulty": 1,
101
+ "difficulty": 7,
71
102
  "slug": "food-chain",
72
- "topics": []
103
+ "topics": [
104
+ "strings",
105
+ "control-flow (loops)",
106
+ "pattern recognition"
107
+ ]
73
108
  },
74
109
  {
75
- "difficulty": 1,
110
+ "difficulty": 5,
76
111
  "slug": "phone-number",
77
- "topics": []
112
+ "topics": [
113
+ "strings",
114
+ "parsing"
115
+ ]
78
116
  },
79
117
  {
80
- "difficulty": 1,
118
+ "difficulty": 3,
81
119
  "slug": "grade-school",
82
- "topics": []
120
+ "topics": [
121
+ "arrays",
122
+ "parsing"
123
+ ]
83
124
  },
84
125
  {
85
- "difficulty": 1,
126
+ "difficulty": 5,
86
127
  "slug": "robot-name",
87
- "topics": []
128
+ "topics": [
129
+ "strings",
130
+ "randomness"
131
+ ]
88
132
  },
89
133
  {
90
- "difficulty": 1,
134
+ "difficulty": 3,
91
135
  "slug": "sum-of-multiples",
92
- "topics": []
136
+ "topics": [
137
+ "mathematics"
138
+ ]
93
139
  },
94
140
  {
95
141
  "difficulty": 1,
96
142
  "slug": "space-age",
97
- "topics": []
143
+ "topics": [
144
+ "functions"
145
+ ]
98
146
  },
99
147
  {
100
- "difficulty": 1,
148
+ "difficulty": 5,
101
149
  "slug": "meetup",
102
- "topics": []
150
+ "topics": [
151
+ "interfaces",
152
+ "functions"
153
+ ]
103
154
  },
104
155
  {
105
- "difficulty": 1,
156
+ "difficulty": 3,
106
157
  "slug": "scrabble-score",
107
- "topics": []
158
+ "topics": [
159
+ "strings",
160
+ "maps"
161
+ ]
108
162
  },
109
163
  {
110
- "difficulty": 1,
164
+ "difficulty": 3,
111
165
  "slug": "triangle",
112
- "topics": []
166
+ "topics": [
167
+ "mathematics",
168
+ "control-flow (conditionals)"
169
+ ]
113
170
  },
114
171
  {
115
- "difficulty": 1,
172
+ "difficulty": 2,
116
173
  "slug": "grains",
117
- "topics": []
174
+ "topics": [
175
+ "bitwise operations"
176
+ ]
118
177
  },
119
178
  {
120
- "difficulty": 1,
179
+ "difficulty": 2,
121
180
  "slug": "raindrops",
122
- "topics": []
181
+ "topics": [
182
+ "strings"
183
+ ]
123
184
  },
124
185
  {
125
- "difficulty": 1,
186
+ "difficulty": 7,
126
187
  "slug": "roman-numerals",
127
- "topics": []
188
+ "topics": [
189
+ "strings",
190
+ "mathematics"
191
+ ]
128
192
  },
129
193
  {
130
- "difficulty": 1,
194
+ "difficulty": 3,
131
195
  "slug": "binary",
132
- "topics": []
196
+ "topics": [
197
+ "strings",
198
+ "mathematics"
199
+ ]
133
200
  },
134
201
  {
135
- "difficulty": 1,
202
+ "difficulty": 5,
136
203
  "slug": "prime-factors",
137
- "topics": []
204
+ "topics": [
205
+ "mathematics",
206
+ "control-flow (loops)"
207
+ ]
138
208
  },
139
209
  {
140
- "difficulty": 1,
210
+ "difficulty": 7,
141
211
  "slug": "crypto-square",
142
- "topics": []
212
+ "topics": [
213
+ "strings",
214
+ "filtering",
215
+ "text formatting"
216
+ ]
143
217
  },
144
218
  {
145
- "difficulty": 1,
219
+ "difficulty": 3,
146
220
  "slug": "trinary",
147
- "topics": []
221
+ "topics": [
222
+ "strings",
223
+ "mathematics"
224
+ ]
148
225
  },
149
226
  {
150
- "difficulty": 1,
227
+ "difficulty": 3,
151
228
  "slug": "rna-transcription",
152
- "topics": []
229
+ "topics": [
230
+ "strings"
231
+ ]
153
232
  },
154
233
  {
155
- "difficulty": 1,
234
+ "difficulty": 10,
156
235
  "slug": "say",
157
- "topics": []
236
+ "topics": [
237
+ "strings",
238
+ "logic",
239
+ "text formatting"
240
+ ]
158
241
  },
159
242
  {
160
- "difficulty": 1,
243
+ "difficulty": 5,
161
244
  "slug": "sieve",
162
- "topics": []
245
+ "topics": [
246
+ "mathematics",
247
+ "control-flow (loops)"
248
+ ]
163
249
  },
164
250
  {
165
- "difficulty": 1,
251
+ "difficulty": 5,
166
252
  "slug": "series",
167
- "topics": []
253
+ "topics": [
254
+ "strings",
255
+ "arrays",
256
+ "logic"
257
+ ]
168
258
  },
169
259
  {
170
- "difficulty": 1,
260
+ "difficulty": 5,
171
261
  "slug": "clock",
172
- "topics": []
262
+ "topics": [
263
+ "classes",
264
+ "time"
265
+ ]
173
266
  },
174
267
  {
175
- "difficulty": 1,
268
+ "difficulty": 7,
176
269
  "slug": "beer-song",
177
- "topics": []
270
+ "topics": [
271
+ "strings",
272
+ "text formatting"
273
+ ]
178
274
  },
179
275
  {
180
- "difficulty": 1,
276
+ "difficulty": 5,
181
277
  "slug": "nth-prime",
182
- "topics": []
278
+ "topics": [
279
+ "mathematics"
280
+ ]
183
281
  },
184
282
  {
185
- "difficulty": 1,
283
+ "difficulty": 3,
186
284
  "slug": "hexadecimal",
187
- "topics": []
285
+ "topics": [
286
+ "strings",
287
+ "mathematics"
288
+ ]
188
289
  },
189
290
  {
190
- "difficulty": 1,
291
+ "difficulty": 5,
191
292
  "slug": "queen-attack",
192
- "topics": []
293
+ "topics": [
294
+ "logic",
295
+ "control-flow (loops)"
296
+ ]
193
297
  }
194
298
  ]
195
299
  }