trackler 2.0.0.1 → 2.0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bump-content +3 -1
  3. data/bin/verify-metadata +2 -2
  4. data/common/exercises/alphametics/canonical-data.json +19 -9
  5. data/common/exercises/food-chain/canonical-data.json +7 -1
  6. data/common/exercises/grains/canonical-data.json +66 -0
  7. data/common/exercises/raindrops/description.md +4 -5
  8. data/common/exercises/triangle/canonical-data.json +81 -54
  9. data/lib/trackler/version.rb +1 -1
  10. data/tracks/c/config.json +26 -19
  11. data/tracks/c/exercises/allergies/makefile +15 -0
  12. data/tracks/c/exercises/allergies/src/allergies.h +21 -0
  13. data/tracks/c/exercises/allergies/src/example.c +32 -0
  14. data/tracks/c/exercises/allergies/src/example.h +26 -0
  15. data/tracks/c/exercises/allergies/test/test_allergies.c +203 -0
  16. data/tracks/c/exercises/allergies/test/vendor/unity.c +1300 -0
  17. data/tracks/c/exercises/allergies/test/vendor/unity.h +274 -0
  18. data/tracks/c/exercises/allergies/test/vendor/unity_internals.h +701 -0
  19. data/tracks/c/exercises/atbash-cipher/makefile +16 -0
  20. data/tracks/c/exercises/atbash-cipher/src/example.c +71 -0
  21. data/tracks/c/exercises/atbash-cipher/src/example.h +7 -0
  22. data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +113 -0
  23. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.c +1300 -0
  24. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.h +274 -0
  25. data/tracks/c/exercises/atbash-cipher/test/vendor/unity_internals.h +701 -0
  26. data/tracks/c/exercises/phone-number/makefile +16 -0
  27. data/tracks/c/exercises/phone-number/src/example.c +66 -0
  28. data/tracks/c/exercises/phone-number/src/example.h +8 -0
  29. data/tracks/c/exercises/phone-number/test/test_phone_number.c +108 -0
  30. data/tracks/c/exercises/phone-number/test/vendor/unity.c +1300 -0
  31. data/tracks/c/exercises/phone-number/test/vendor/unity.h +274 -0
  32. data/tracks/c/exercises/phone-number/test/vendor/unity_internals.h +701 -0
  33. data/tracks/csharp/config.json +8 -0
  34. data/tracks/csharp/exercises/bowling/BowlingTest.cs +188 -33
  35. data/tracks/csharp/exercises/bowling/Example.cs +38 -9
  36. data/tracks/csharp/exercises/rectangles/Example.cs +91 -0
  37. data/tracks/csharp/exercises/rectangles/RectanglesTest.cs +133 -0
  38. data/tracks/elisp/docs/INSTALLATION.org +1 -1
  39. data/tracks/elixir/config.json +8 -66
  40. data/tracks/elixir/docs/LEARNING.md +1 -1
  41. data/tracks/elixir/exercises/diamond/diamond_test.exs +12 -12
  42. data/tracks/elixir/exercises/grep/example.exs +92 -0
  43. data/tracks/elixir/exercises/grep/grep.exs +6 -0
  44. data/tracks/elixir/exercises/grep/grep_test.exs +259 -0
  45. data/tracks/elixir/exercises/markdown/markdown.exs +59 -2
  46. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +4 -4
  47. data/tracks/elixir/exercises/phone-number/phone_number_test.exs +5 -0
  48. data/tracks/fsharp/exercises/bowling/BowlingTest.fs +158 -43
  49. data/tracks/fsharp/exercises/bowling/Example.fs +53 -24
  50. data/tracks/go/config.json +5 -0
  51. data/tracks/go/exercises/diamond/diamond_test.go +227 -0
  52. data/tracks/go/exercises/diamond/example.go +47 -0
  53. data/tracks/go/exercises/food-chain/example.go +1 -1
  54. data/tracks/go/exercises/food-chain/food_chain_test.go +30 -6
  55. data/tracks/go/exercises/nucleotide-count/example.go +21 -8
  56. data/tracks/go/exercises/nucleotide-count/nucleotide_count_test.go +45 -37
  57. data/tracks/haskell/exercises/anagram/test/Tests.hs +1 -11
  58. data/tracks/java/bin/journey-test.sh +165 -128
  59. data/tracks/java/docs/ABOUT.md +5 -8
  60. data/tracks/java/exercises/hello-world/build.gradle +0 -6
  61. data/tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java +0 -1
  62. data/tracks/java/exercises/meetup/build.gradle +0 -1
  63. data/tracks/java/exercises/meetup/src/example/java/Meetup.java +9 -7
  64. data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +185 -188
  65. data/tracks/lua/config.json +0 -73
  66. data/tracks/lua/exercises/bowling/bowling_spec.lua +92 -48
  67. data/tracks/lua/exercises/bowling/example.lua +4 -1
  68. data/tracks/objective-c/config.json +9 -30
  69. data/tracks/objective-c/exercises/pangram/PangramExample.h +7 -0
  70. data/tracks/objective-c/exercises/pangram/PangramExample.m +21 -0
  71. data/tracks/objective-c/exercises/pangram/PangramTest.m +51 -0
  72. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  73. data/tracks/ocaml/README.md +46 -1
  74. data/tracks/ocaml/SETUP.md +21 -2
  75. data/tracks/ocaml/config.json +48 -78
  76. data/tracks/perl5/README.md +15 -8
  77. data/tracks/perl5/testall.pl +5 -5
  78. data/tracks/php/config.json +26 -34
  79. data/tracks/php/docs/ABOUT.md +15 -0
  80. data/tracks/php/exercises/allergies/allergies_test.php +121 -0
  81. data/tracks/php/exercises/allergies/example.php +64 -0
  82. data/tracks/php/exercises/etl/etl_test.php +52 -0
  83. data/tracks/php/exercises/etl/example.php +12 -0
  84. data/tracks/php/exercises/nucleotide-count/example.php +25 -0
  85. data/tracks/php/exercises/nucleotide-count/nucleotide-count_test.php +36 -0
  86. data/tracks/php/exercises/pig-latin/example.php +25 -29
  87. data/tracks/php/exercises/pig-latin/pig-latin_test.php +26 -19
  88. data/tracks/php/exercises/space-age/example.php +65 -0
  89. data/tracks/php/exercises/space-age/space-age_test.php +70 -0
  90. data/tracks/php/exercises/triangle/example.php +43 -0
  91. data/tracks/php/exercises/triangle/triangle_test.php +140 -0
  92. data/tracks/pony/exercises/anagram/example.pony +6 -6
  93. data/tracks/pony/exercises/anagram/test.pony +3 -4
  94. data/tracks/pony/exercises/bob/test.pony +23 -23
  95. data/tracks/pony/exercises/difference-of-squares/test.pony +11 -11
  96. data/tracks/pony/exercises/hamming/example.pony +3 -3
  97. data/tracks/pony/exercises/hamming/test.pony +16 -16
  98. data/tracks/pony/exercises/hello-world/test.pony +5 -4
  99. data/tracks/pony/exercises/leap/test.pony +8 -8
  100. data/tracks/python/config.json +18 -0
  101. data/tracks/python/exercises/diamond/diamond_test.py +33 -0
  102. data/tracks/python/exercises/diamond/example.py +15 -0
  103. data/tracks/python/exercises/linked-list/example.py +47 -0
  104. data/tracks/python/exercises/linked-list/linked_list.py +13 -0
  105. data/tracks/python/exercises/linked-list/linked_list_test.py +49 -0
  106. data/tracks/python/exercises/list-ops/example.py +55 -0
  107. data/tracks/python/exercises/list-ops/list_ops.py +38 -0
  108. data/tracks/python/exercises/list-ops/list_ops_test.py +136 -0
  109. data/tracks/ruby/bin/generate +22 -2
  110. data/tracks/ruby/config.json +12 -83
  111. data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
  112. data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
  113. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
  114. data/tracks/ruby/exercises/binary/example.rb +0 -1
  115. data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +1 -1
  116. data/tracks/ruby/exercises/bowling/.version +1 -0
  117. data/tracks/ruby/exercises/bowling/bowling_test.rb +109 -133
  118. data/tracks/ruby/exercises/bowling/example.rb +7 -7
  119. data/tracks/ruby/exercises/bowling/example.tt +27 -0
  120. data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -2
  121. data/tracks/ruby/exercises/clock/example.rb +0 -2
  122. data/tracks/ruby/exercises/connect/connect_test.rb +0 -1
  123. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +0 -1
  124. data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
  125. data/tracks/ruby/exercises/etl/etl_test.rb +1 -1
  126. data/tracks/ruby/exercises/house/house_test.rb +0 -1
  127. data/tracks/ruby/exercises/isogram/isogram_test.rb +2 -2
  128. data/tracks/ruby/exercises/largest-series-product/example.tt +0 -3
  129. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +0 -4
  130. data/tracks/ruby/exercises/linked-list/linked_list_test.rb +1 -1
  131. data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
  132. data/tracks/ruby/exercises/nth-prime/example.tt +0 -2
  133. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +0 -2
  134. data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
  135. data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
  136. data/tracks/ruby/exercises/proverb/proverb_test.rb +1 -3
  137. data/tracks/ruby/exercises/queen-attack/example.rb +3 -1
  138. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +34 -8
  139. data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +1 -1
  140. data/tracks/ruby/exercises/strain/strain_test.rb +2 -2
  141. data/tracks/ruby/exercises/tournament/.version +1 -0
  142. data/tracks/ruby/exercises/tournament/example.rb +54 -0
  143. data/tracks/ruby/exercises/tournament/example.tt +23 -0
  144. data/tracks/ruby/exercises/tournament/tournament_test.rb +92 -0
  145. data/tracks/ruby/exercises/transpose/.version +1 -0
  146. data/tracks/ruby/exercises/transpose/example.rb +14 -0
  147. data/tracks/ruby/exercises/transpose/example.tt +22 -0
  148. data/tracks/ruby/exercises/transpose/transpose_test.rb +303 -0
  149. data/tracks/ruby/lib/bowling_cases.rb +46 -0
  150. data/tracks/ruby/lib/isogram_cases.rb +1 -1
  151. data/tracks/ruby/lib/tournament_cases.rb +45 -0
  152. data/tracks/ruby/lib/transpose_cases.rb +45 -0
  153. data/tracks/rust/config.json +2 -0
  154. data/tracks/rust/exercises/bowling/.gitignore +7 -0
  155. data/tracks/rust/exercises/bowling/Cargo.toml +3 -0
  156. data/tracks/rust/exercises/bowling/example.rs +134 -0
  157. data/tracks/rust/exercises/bowling/tests/bowling.rs +373 -0
  158. data/tracks/rust/exercises/grains/.gitignore +7 -0
  159. data/tracks/rust/exercises/grains/Cargo.toml +3 -0
  160. data/tracks/rust/exercises/grains/example.rs +11 -0
  161. data/tracks/rust/exercises/grains/src/lib.rs +7 -0
  162. data/tracks/rust/exercises/grains/tests/grains.rs +63 -0
  163. data/tracks/rust/problems.md +2 -0
  164. data/tracks/scala/README.md +38 -0
  165. data/tracks/scala/config.json +20 -74
  166. data/tracks/scala/exercises/accumulate/src/test/scala/accumulate_test.scala +4 -0
  167. data/tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala +11 -0
  168. data/tracks/scala/exercises/alphametics/build.sbt +6 -0
  169. data/tracks/scala/exercises/alphametics/example.scala +125 -0
  170. data/tracks/scala/exercises/alphametics/src/main/scala/.keep +0 -0
  171. data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +62 -0
  172. data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +8 -0
  173. data/tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala +4 -0
  174. data/tracks/scala/exercises/binary/src/test/scala/binary_test.scala +13 -0
  175. data/tracks/scala/exercises/binary-search-tree/src/test/scala/BstTest.scala +11 -0
  176. data/tracks/scala/exercises/bowling/Example.scala +116 -0
  177. data/tracks/scala/exercises/bowling/build.sbt +3 -0
  178. data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +11 -0
  179. data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +237 -0
  180. data/tracks/scala/exercises/clock/src/test/scala/ClockTest.scala +50 -0
  181. data/tracks/scala/exercises/connect/README.md +17 -0
  182. data/tracks/scala/exercises/connect/src/test/scala/ConnectTest.scala +7 -0
  183. data/tracks/scala/exercises/crypto-square/src/test/scala/{CrytpoSquareTest.scala → CryptoSquareTest.scala} +9 -0
  184. data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +36 -0
  185. data/tracks/scala/exercises/difference-of-squares/src/test/scala/squares_test.scala +8 -0
  186. data/tracks/scala/exercises/forth/src/test/scala/ForthTest.scala +22 -0
  187. data/tracks/scala/exercises/hexadecimal/src/test/scala/HexadecimalTest.scala +8 -0
  188. data/tracks/scala/exercises/kindergarten-garden/src/test/scala/GardenTest.scala +5 -0
  189. data/tracks/scala/exercises/largest-series-product/src/test/scala/SeriesTest.scala +2 -0
  190. data/tracks/scala/exercises/linked-list/src/test/scala/DequeTest.scala +4 -0
  191. data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +4 -0
  192. data/tracks/scala/exercises/matrix/src/test/scala/MatrixTest.scala +2 -0
  193. data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +6 -0
  194. data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +5 -0
  195. data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrTest.scala +15 -0
  196. data/tracks/scala/exercises/octal/src/test/scala/OctalTest.scala +7 -0
  197. data/tracks/scala/exercises/parallel-letter-frequency/src/test/scala/FrequencyTest.scala +8 -0
  198. data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +5 -0
  199. data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +4 -0
  200. data/tracks/scala/exercises/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala +3 -0
  201. data/tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala +5 -0
  202. data/tracks/scala/exercises/robot-simulator/src/test/scala/RobotTest.scala +16 -8
  203. data/tracks/scala/exercises/say/src/test/scala/SayTest.scala +34 -17
  204. data/tracks/scala/exercises/scrabble-score/src/test/scala/scrabble_score_test.scala +6 -0
  205. data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +18 -9
  206. data/tracks/scala/exercises/series/src/test/scala/SeriesTest.scala +4 -2
  207. data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +8 -4
  208. data/tracks/scala/exercises/simple-cipher/src/test/scala/CipherTest.scala +17 -9
  209. data/tracks/scala/exercises/sublist/src/test/scala/sublist_test.scala +17 -0
  210. data/tracks/scala/exercises/trinary/src/test/scala/TrinaryTest.scala +14 -7
  211. data/tracks/scala/exercises/wordy/src/test/scala/WordProblemTest.scala +28 -14
  212. data/tracks/scala/project/Build.scala +3 -3
  213. data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +57 -0
  214. data/tracks/sml/config.json +41 -6
  215. data/tracks/sml/exercises/flatten-array/example.sml +6 -0
  216. data/tracks/sml/exercises/flatten-array/test_flatten_array.sml +10 -0
  217. data/tracks/sml/exercises/nth-prime/example.sml +46 -0
  218. data/tracks/sml/exercises/nth-prime/test_nth_prime.sml +14 -0
  219. data/tracks/sml/exercises/raindrops/example.sml +9 -0
  220. data/tracks/sml/exercises/raindrops/raindrops.sml +2 -0
  221. data/tracks/sml/exercises/raindrops/test_raindrops.sml +95 -0
  222. data/tracks/swift/config.json +269 -328
  223. data/tracks/swift/exercises/pangram/PangramExample.swift +17 -0
  224. data/tracks/swift/exercises/pangram/PangramTest.swift +43 -0
  225. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +16 -0
  226. metadata +95 -3
@@ -3,594 +3,535 @@
3
3
  "language": "Swift",
4
4
  "repository": "https://github.com/exercism/xswift",
5
5
  "active": true,
6
- "problems": [
7
- "hello-world"
8
- ,"leap"
9
- ,"hamming"
10
- ,"word-count"
11
- ,"etl"
12
- ,"anagram"
13
- ,"nucleotide-count"
14
- ,"phone-number"
15
- ,"grade-school"
16
- ,"robot-name"
17
- ,"perfect-numbers"
18
- ,"allergies"
19
- ,"accumulate"
20
- ,"sum-of-multiples"
21
- ,"twelve-days"
22
- ,"space-age"
23
- ,"gigasecond"
24
- ,"meetup"
25
- ,"triangle"
26
- ,"scrabble-score"
27
- ,"roman-numerals"
28
- ,"prime-factors"
29
- ,"raindrops"
30
- ,"bob"
31
- ,"strain"
32
- ,"atbash-cipher"
33
- ,"crypto-square"
34
- ,"rna-transcription"
35
- ,"sieve"
36
- ,"luhn"
37
- ,"series"
38
- ,"pig-latin"
39
- ,"pythagorean-triplet"
40
- ,"difference-of-squares"
41
- ,"secret-handshake"
42
- ,"clock"
43
- ,"simple-linked-list"
44
- ,"linked-list"
45
- ,"wordy"
46
- ,"tournament"
47
- ,"simple-cipher"
48
- ,"acronym"
49
- ,"grains"
50
- ,"custom-set"
51
- ,"nth-prime"
52
- ,"kindergarten-garden"
53
- ,"robot-simulator"
54
- ,"queen-attack"
55
- ,"binary-search"
56
- ,"binary-search-tree"
57
- ,"largest-series-product"
58
- ,"matrix"
59
- ,"house"
60
- ,"minesweeper"
61
- ,"ocr-numbers"
62
- ,"food-chain"
63
- ,"palindrome-products"
64
- ,"pascals-triangle"
65
- ,"saddle-points"
66
- ,"poker"
67
- ,"dominoes"
68
- ,"all-your-base"
69
- ,"bracket-push"
70
- ,"bowling"
71
- ,"run-length-encoding"
72
- ],
73
6
  "exercises": [
74
7
  {
75
- "difficulty": 1,
76
- "slug": "hello-world",
8
+ "difficulty": 1,
9
+ "slug": "hello-world",
77
10
  "topics": [
78
- "Text formatting",
11
+ "Text formatting",
79
12
  "Optional values"
80
13
  ]
81
- },
14
+ },
82
15
  {
83
- "difficulty": 1,
84
- "slug": "leap",
16
+ "difficulty": 1,
17
+ "slug": "leap",
85
18
  "topics": [
86
19
  "Integers"
87
20
  ]
88
- },
21
+ },
89
22
  {
90
- "difficulty": 1,
91
- "slug": "gigasecond",
23
+ "difficulty": 1,
24
+ "slug": "gigasecond",
92
25
  "topics": [
93
26
  "Dates"
94
27
  ]
95
- },
28
+ },
96
29
  {
97
- "difficulty": 1,
98
- "slug": "difference-of-squares",
30
+ "difficulty": 1,
31
+ "slug": "difference-of-squares",
99
32
  "topics": [
100
33
  "Integers"
101
34
  ]
102
- },
35
+ },
103
36
  {
104
- "difficulty": 1,
105
- "slug": "rna-transcription",
37
+ "difficulty": 1,
38
+ "slug": "rna-transcription",
106
39
  "topics": [
107
- "Strings",
40
+ "Strings",
108
41
  "Transforming"
109
42
  ]
110
- },
43
+ },
111
44
  {
112
- "difficulty": 1,
113
- "slug": "sum-of-multiples",
45
+ "difficulty": 1,
46
+ "slug": "sum-of-multiples",
114
47
  "topics": [
115
- "Lists",
48
+ "Lists",
116
49
  "Transforming"
117
50
  ]
118
- },
51
+ },
119
52
  {
120
- "difficulty": 1,
121
- "slug": "space-age",
53
+ "difficulty": 1,
54
+ "slug": "space-age",
122
55
  "topics": [
123
- "Discriminated unions",
56
+ "Discriminated unions",
124
57
  "Floating-point numbers"
125
58
  ]
126
- },
59
+ },
127
60
  {
128
- "difficulty": 2,
129
- "slug": "bob",
61
+ "difficulty": 2,
62
+ "slug": "bob",
130
63
  "topics": [
131
- "Strings",
64
+ "Strings",
132
65
  "Control-flow (if-else statements)"
133
66
  ]
134
- },
67
+ },
135
68
  {
136
- "difficulty": 2,
137
- "slug": "grains",
69
+ "difficulty": 2,
70
+ "slug": "grains",
138
71
  "topics": [
139
72
  "Integers"
140
73
  ]
141
- },
74
+ },
142
75
  {
143
- "difficulty": 2,
144
- "slug": "hamming",
76
+ "difficulty": 2,
77
+ "slug": "hamming",
145
78
  "topics": [
146
- "Strings",
79
+ "Strings",
147
80
  "Filtering"
148
81
  ]
149
- },
82
+ },
150
83
  {
151
- "difficulty": 2,
152
- "slug": "nucleotide-count",
84
+ "difficulty": 2,
85
+ "slug": "nucleotide-count",
153
86
  "topics": [
154
- "Maps",
87
+ "Maps",
155
88
  "Strings"
156
89
  ]
157
- },
90
+ },
158
91
  {
159
- "difficulty": 2,
160
- "slug": "accumulate",
92
+ "difficulty": 2,
93
+ "slug": "accumulate",
161
94
  "topics": [
162
- "Recursion",
95
+ "Recursion",
163
96
  "Transforming"
164
97
  ]
165
- },
98
+ },
166
99
  {
167
- "difficulty": 2,
168
- "slug": "raindrops",
100
+ "difficulty": 2,
101
+ "slug": "raindrops",
169
102
  "topics": [
170
- "Text formatting",
103
+ "Text formatting",
171
104
  "Filtering"
172
105
  ]
173
- },
106
+ },
174
107
  {
175
- "difficulty": 2,
176
- "slug": "grade-school",
108
+ "difficulty": 2,
109
+ "slug": "grade-school",
177
110
  "topics": [
178
- "Maps",
111
+ "Maps",
179
112
  "Sorting"
180
113
  ]
181
- },
114
+ },
182
115
  {
183
- "difficulty": 2,
184
- "slug": "etl",
116
+ "difficulty": 2,
117
+ "slug": "etl",
185
118
  "topics": [
186
- "Maps",
119
+ "Maps",
187
120
  "Transforming"
188
121
  ]
189
- },
122
+ },
190
123
  {
191
- "difficulty": 3,
192
- "slug": "clock",
124
+ "difficulty": 3,
125
+ "slug": "clock",
193
126
  "topics": [
194
- "Time",
127
+ "Time",
195
128
  "Structural equality"
196
129
  ]
197
- },
130
+ },
198
131
  {
199
- "difficulty": 3,
200
- "slug": "triangle",
132
+ "difficulty": 3,
133
+ "slug": "triangle",
201
134
  "topics": [
202
- "Integers",
135
+ "Integers",
203
136
  "Discriminated unions"
204
137
  ]
205
- },
138
+ },
206
139
  {
207
- "difficulty": 3,
208
- "slug": "robot-name",
140
+ "difficulty": 3,
141
+ "slug": "robot-name",
209
142
  "topics": [
210
- "Randomness",
143
+ "Randomness",
211
144
  "Strings"
212
145
  ]
213
- },
146
+ },
214
147
  {
215
- "difficulty": 3,
216
- "slug": "scrabble-score",
148
+ "difficulty": 3,
149
+ "slug": "scrabble-score",
217
150
  "topics": [
218
151
  "Transforming"
219
152
  ]
220
- },
153
+ },
221
154
  {
222
- "difficulty": 3,
223
- "slug": "kindergarten-garden",
155
+ "difficulty": 3,
156
+ "slug": "kindergarten-garden",
224
157
  "topics": [
225
- "Parsing",
158
+ "Parsing",
226
159
  "Enumerations"
227
160
  ]
228
- },
161
+ },
229
162
  {
230
- "difficulty": 3,
231
- "slug": "queen-attack",
163
+ "difficulty": 3,
164
+ "slug": "queen-attack",
232
165
  "topics": [
233
166
  "Tuples"
234
167
  ]
235
- },
168
+ },
236
169
  {
237
- "difficulty": 3,
238
- "slug": "strain",
170
+ "difficulty": 3,
171
+ "slug": "strain",
239
172
  "topics": [
240
- "Sequences",
173
+ "Sequences",
241
174
  "Filtering"
242
175
  ]
243
- },
176
+ },
244
177
  {
245
- "difficulty": 3,
246
- "slug": "sieve",
178
+ "difficulty": 3,
179
+ "slug": "sieve",
247
180
  "topics": [
248
- "Filtering",
181
+ "Filtering",
249
182
  "Mathematics"
250
183
  ]
251
- },
184
+ },
252
185
  {
253
- "difficulty": 3,
254
- "slug": "phone-number",
186
+ "difficulty": 3,
187
+ "slug": "phone-number",
255
188
  "topics": [
256
- "Parsing",
189
+ "Parsing",
257
190
  "Transforming"
258
191
  ]
259
- },
192
+ },
260
193
  {
261
- "difficulty": 3,
262
- "slug": "perfect-numbers",
194
+ "difficulty": 3,
195
+ "slug": "perfect-numbers",
263
196
  "topics": [
264
- "Integers",
197
+ "Integers",
265
198
  "Discriminated unions"
266
199
  ]
267
- },
200
+ },
268
201
  {
269
- "difficulty": 3,
270
- "slug": "robot-simulator",
202
+ "difficulty": 3,
203
+ "slug": "robot-simulator",
271
204
  "topics": [
272
- "Records",
205
+ "Records",
273
206
  "Tuples"
274
207
  ]
275
- },
208
+ },
276
209
  {
277
- "difficulty": 3,
278
- "slug": "binary-search",
210
+ "difficulty": 3,
211
+ "slug": "binary-search",
279
212
  "topics": [
280
- "Searching",
213
+ "Searching",
281
214
  "Lists"
282
215
  ]
283
- },
216
+ },
284
217
  {
285
- "difficulty": 3,
286
- "slug": "secret-handshake",
218
+ "difficulty": 3,
219
+ "slug": "secret-handshake",
287
220
  "topics": [
288
- "Bitwise operations",
221
+ "Bitwise operations",
289
222
  "Lists"
290
223
  ]
291
- },
224
+ },
292
225
  {
293
- "difficulty": 4,
294
- "slug": "word-count",
226
+ "difficulty": 4,
227
+ "slug": "word-count",
295
228
  "topics": [
296
- "Strings",
297
- "Maps",
229
+ "Strings",
230
+ "Maps",
298
231
  "Transforming"
299
232
  ]
300
- },
233
+ },
301
234
  {
302
- "difficulty": 4,
303
- "slug": "allergies",
235
+ "difficulty": 4,
236
+ "slug": "allergies",
304
237
  "topics": [
305
- "Enumerations",
306
- "Bitwise operations",
238
+ "Enumerations",
239
+ "Bitwise operations",
307
240
  "Filtering"
308
241
  ]
309
- },
242
+ },
310
243
  {
311
- "difficulty": 4,
312
- "slug": "twelve-days",
244
+ "difficulty": 4,
245
+ "slug": "twelve-days",
313
246
  "topics": [
314
- "Text formatting",
247
+ "Text formatting",
315
248
  "Algorithms"
316
249
  ]
317
- },
250
+ },
318
251
  {
319
- "difficulty": 4,
320
- "slug": "meetup",
252
+ "difficulty": 4,
253
+ "slug": "meetup",
321
254
  "topics": [
322
255
  "Dates"
323
256
  ]
324
- },
257
+ },
325
258
  {
326
- "difficulty": 4,
327
- "slug": "anagram",
259
+ "difficulty": 4,
260
+ "slug": "anagram",
328
261
  "topics": [
329
- "Strings",
262
+ "Strings",
330
263
  "Filtering"
331
264
  ]
332
- },
265
+ },
333
266
  {
334
- "difficulty": 4,
335
- "slug": "series",
267
+ "difficulty": 4,
268
+ "slug": "series",
336
269
  "topics": [
337
- "Strings",
338
- "Lists",
270
+ "Strings",
271
+ "Lists",
339
272
  "Transforming"
340
273
  ]
341
- },
274
+ },
342
275
  {
343
- "difficulty": 4,
344
- "slug": "simple-linked-list",
276
+ "difficulty": 4,
277
+ "slug": "simple-linked-list",
345
278
  "topics": [
346
279
  "Lists"
347
280
  ]
348
- },
281
+ },
349
282
  {
350
- "difficulty": 4,
351
- "slug": "acronym",
283
+ "difficulty": 4,
284
+ "slug": "acronym",
352
285
  "topics": [
353
- "Strings",
286
+ "Strings",
354
287
  "Transforming"
355
288
  ]
356
- },
289
+ },
357
290
  {
358
- "difficulty": 4,
359
- "slug": "matrix",
291
+ "difficulty": 4,
292
+ "slug": "matrix",
360
293
  "topics": [
361
- "Matrices",
294
+ "Matrices",
362
295
  "Parsing"
363
296
  ]
364
- },
297
+ },
365
298
  {
366
- "difficulty": 4,
367
- "slug": "all-your-base",
299
+ "difficulty": 4,
300
+ "slug": "all-your-base",
368
301
  "topics": [
369
- "Integers",
302
+ "Integers",
370
303
  "Transforming"
371
304
  ]
372
- },
305
+ },
373
306
  {
374
- "difficulty": 4,
375
- "slug": "largest-series-product",
307
+ "difficulty": 4,
308
+ "slug": "largest-series-product",
376
309
  "topics": [
377
- "Strings",
378
- "Integers",
310
+ "Strings",
311
+ "Integers",
379
312
 
380
313
  "Transforming"
381
314
  ]
382
- },
315
+ },
383
316
  {
384
- "difficulty": 4,
385
- "slug": "house",
317
+ "difficulty": 4,
318
+ "slug": "house",
386
319
  "topics": [
387
- "Text formatting",
320
+ "Text formatting",
388
321
  "Algorithms"
389
322
  ]
390
- },
323
+ },
391
324
  {
392
- "difficulty": 4,
393
- "slug": "pythagorean-triplet",
325
+ "difficulty": 4,
326
+ "slug": "pythagorean-triplet",
394
327
  "topics": [
395
- "Records",
396
- "Integers",
328
+ "Records",
329
+ "Integers",
397
330
  "Mathematics"
398
331
  ]
399
- },
332
+ },
400
333
  {
401
- "difficulty": 4,
402
- "slug": "saddle-points",
334
+ "difficulty": 4,
335
+ "slug": "saddle-points",
403
336
  "topics": [
404
- "Matrices",
337
+ "Matrices",
405
338
  "Lists"
406
339
  ]
407
- },
340
+ },
408
341
  {
409
- "difficulty": 4,
410
- "slug": "pascals-triangle",
342
+ "difficulty": 4,
343
+ "slug": "pascals-triangle",
411
344
  "topics": [
412
- "Recursion",
413
- "Lists",
345
+ "Recursion",
346
+ "Lists",
414
347
  "Mathematics"
415
348
  ]
416
- },
349
+ },
417
350
  {
418
- "difficulty": 4,
419
- "slug": "prime-factors",
351
+ "difficulty": 4,
352
+ "slug": "prime-factors",
420
353
  "topics": [
421
- "Integers",
354
+ "Integers",
422
355
  "Mathematics"
423
356
  ]
424
- },
357
+ },
358
+ {
359
+ "difficulty": 4,
360
+ "slug": "pangram",
361
+ "topics": [
362
+ "Strings",
363
+ "Searching"
364
+ ]
365
+ },
425
366
  {
426
- "difficulty": 5,
427
- "slug": "roman-numerals",
367
+ "difficulty": 5,
368
+ "slug": "roman-numerals",
428
369
  "topics": [
429
- "Recursion",
370
+ "Recursion",
430
371
  "Transforming"
431
372
  ]
432
- },
373
+ },
433
374
  {
434
- "difficulty": 5,
435
- "slug": "binary-search-tree",
375
+ "difficulty": 5,
376
+ "slug": "binary-search-tree",
436
377
  "topics": [
437
- "Searching",
378
+ "Searching",
438
379
  "Trees"
439
380
  ]
440
- },
381
+ },
441
382
  {
442
- "difficulty": 5,
443
- "slug": "ocr-numbers",
383
+ "difficulty": 5,
384
+ "slug": "ocr-numbers",
444
385
  "topics": [
445
- "Parsing",
386
+ "Parsing",
446
387
  "Pattern recognition"
447
388
  ]
448
- },
389
+ },
449
390
  {
450
- "difficulty": 5,
451
- "slug": "linked-list",
391
+ "difficulty": 5,
392
+ "slug": "linked-list",
452
393
  "topics": [
453
394
  "Lists"
454
395
  ]
455
- },
396
+ },
456
397
  {
457
- "difficulty": 5,
458
- "slug": "simple-cipher",
398
+ "difficulty": 5,
399
+ "slug": "simple-cipher",
459
400
  "topics": [
460
- "Strings",
461
- "Algorithms",
401
+ "Strings",
402
+ "Algorithms",
462
403
  "Transforming"
463
404
  ]
464
- },
405
+ },
465
406
  {
466
- "difficulty": 5,
467
- "slug": "atbash-cipher",
407
+ "difficulty": 5,
408
+ "slug": "atbash-cipher",
468
409
  "topics": [
469
- "Strings",
470
- "Algorithms",
410
+ "Strings",
411
+ "Algorithms",
471
412
  "Transforming"
472
413
  ]
473
- },
414
+ },
474
415
  {
475
- "difficulty": 5,
476
- "slug": "food-chain",
416
+ "difficulty": 5,
417
+ "slug": "food-chain",
477
418
  "topics": [
478
- "Text formatting",
419
+ "Text formatting",
479
420
  "Algorithms"
480
421
  ]
481
- },
422
+ },
482
423
  {
483
- "difficulty": 5,
484
- "slug": "custom-set",
424
+ "difficulty": 5,
425
+ "slug": "custom-set",
485
426
  "topics": [
486
427
  "Sets"
487
428
  ]
488
- },
429
+ },
489
430
  {
490
- "difficulty": 5,
491
- "slug": "crypto-square",
431
+ "difficulty": 5,
432
+ "slug": "crypto-square",
492
433
  "topics": [
493
- "Strings",
494
- "Algorithms",
434
+ "Strings",
435
+ "Algorithms",
495
436
  "Transforming"
496
437
  ]
497
- },
438
+ },
498
439
  {
499
- "difficulty": 5,
500
- "slug": "luhn",
440
+ "difficulty": 5,
441
+ "slug": "luhn",
501
442
  "topics": [
502
- "Strings",
503
- "Algorithms",
443
+ "Strings",
444
+ "Algorithms",
504
445
  "Transforming"
505
446
  ]
506
- },
447
+ },
507
448
  {
508
- "difficulty": 5,
509
- "slug": "run-length-encoding",
449
+ "difficulty": 5,
450
+ "slug": "run-length-encoding",
510
451
  "topics": [
511
- "Algorithms",
452
+ "Algorithms",
512
453
  "Transforming"
513
454
  ]
514
- },
455
+ },
515
456
  {
516
- "difficulty": 6,
517
- "slug": "tournament",
457
+ "difficulty": 6,
458
+ "slug": "tournament",
518
459
  "topics": [
519
- "Text formatting",
460
+ "Text formatting",
520
461
  "Parsing"
521
462
  ]
522
- },
463
+ },
523
464
  {
524
- "difficulty": 6,
525
- "slug": "bowling",
465
+ "difficulty": 6,
466
+ "slug": "bowling",
526
467
  "topics": [
527
468
  "Algorithms"
528
469
  ]
529
- },
470
+ },
530
471
  {
531
- "difficulty": 6,
532
- "slug": "nth-prime",
472
+ "difficulty": 6,
473
+ "slug": "nth-prime",
533
474
  "topics": [
534
475
  "Mathematics"
535
476
  ]
536
- },
477
+ },
537
478
  {
538
- "difficulty": 6,
539
- "slug": "palindrome-products",
479
+ "difficulty": 6,
480
+ "slug": "palindrome-products",
540
481
  "topics": [
541
- "Strings",
542
- "Tuples",
482
+ "Strings",
483
+ "Tuples",
543
484
  "Algorithms"
544
485
  ]
545
- },
486
+ },
546
487
  {
547
- "difficulty": 6,
548
- "slug": "pig-latin",
488
+ "difficulty": 6,
489
+ "slug": "pig-latin",
549
490
  "topics": [
550
- "Strings",
491
+ "Strings",
551
492
  "Transforming"
552
493
  ]
553
- },
494
+ },
554
495
  {
555
- "difficulty": 7,
556
- "slug": "bracket-push",
496
+ "difficulty": 7,
497
+ "slug": "bracket-push",
557
498
  "topics": [
558
- "Parsing",
499
+ "Parsing",
559
500
  "Strings"
560
501
  ]
561
- },
502
+ },
562
503
  {
563
- "difficulty": 7,
564
- "slug": "minesweeper",
504
+ "difficulty": 7,
505
+ "slug": "minesweeper",
565
506
  "topics": [
566
- "Parsing",
507
+ "Parsing",
567
508
  "Transforming"
568
509
  ]
569
- },
510
+ },
570
511
  {
571
- "difficulty": 7,
572
- "slug": "dominoes",
512
+ "difficulty": 7,
513
+ "slug": "dominoes",
573
514
  "topics": [
574
- "Lists",
515
+ "Lists",
575
516
  "Tuples"
576
517
  ]
577
- },
518
+ },
578
519
  {
579
- "difficulty": 7,
580
- "slug": "wordy",
520
+ "difficulty": 7,
521
+ "slug": "wordy",
581
522
  "topics": [
582
- "Parsing",
583
- "Strings",
523
+ "Parsing",
524
+ "Strings",
584
525
  "Transforming"
585
526
  ]
586
- },
527
+ },
587
528
  {
588
- "difficulty": 8,
589
- "slug": "poker",
529
+ "difficulty": 8,
530
+ "slug": "poker",
590
531
  "topics": [
591
- "Discriminated unions",
592
- "Parsing",
593
- "Sorting",
532
+ "Discriminated unions",
533
+ "Parsing",
534
+ "Sorting",
594
535
  "Games"
595
536
  ]
596
537
  }