trackler 2.2.1.74 → 2.2.1.75

Sign up to get free protection for your applications and to get access to all the features.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/fixtures/tracks/fruit/docs/something.md +0 -0
  3. data/lib/trackler/version.rb +1 -1
  4. data/problem-specifications/README.md +8 -4
  5. data/problem-specifications/exercises/acronym/canonical-data.json +19 -7
  6. data/problem-specifications/exercises/all-your-base/canonical-data.json +106 -64
  7. data/problem-specifications/exercises/allergies/canonical-data.json +37 -13
  8. data/tracks/c/config.json +176 -176
  9. data/tracks/clojure/config.json +17 -1
  10. data/tracks/clojure/exercises/isbn-verifier/README.md +43 -0
  11. data/tracks/clojure/exercises/isbn-verifier/project.clj +4 -0
  12. data/tracks/clojure/exercises/isbn-verifier/src/example.clj +17 -0
  13. data/tracks/clojure/exercises/isbn-verifier/src/isbn_verifier.clj +3 -0
  14. data/tracks/clojure/exercises/isbn-verifier/test/isbn_verifier_test.clj +42 -0
  15. data/tracks/clojure/exercises/proverb/README.md +15 -0
  16. data/tracks/clojure/exercises/proverb/project.clj +4 -0
  17. data/tracks/clojure/exercises/proverb/src/example.clj +15 -0
  18. data/tracks/clojure/exercises/proverb/src/proverb.clj +3 -0
  19. data/tracks/clojure/exercises/proverb/test/proverb_test.clj +14 -0
  20. data/tracks/common-lisp/docs/LEARNING.md +4 -3
  21. data/tracks/common-lisp/docs/RESOURCES.md +11 -0
  22. data/tracks/delphi/.gitignore +1 -0
  23. data/tracks/delphi/config.json +24 -0
  24. data/tracks/delphi/docs/INSTALLATION.md +1 -1
  25. data/tracks/delphi/exercises/isbn-verifier/ISBNVerifier.dpr +60 -0
  26. data/tracks/delphi/exercises/isbn-verifier/README.md +68 -0
  27. data/tracks/delphi/exercises/isbn-verifier/uISBNVerifierExample.pas +46 -0
  28. data/tracks/delphi/exercises/isbn-verifier/uTestISBNVerifier.pas +136 -0
  29. data/tracks/delphi/exercises/secret-handshake/README.md +56 -0
  30. data/tracks/delphi/exercises/secret-handshake/SecretHandshake.dpr +60 -0
  31. data/tracks/delphi/exercises/secret-handshake/uSecretHandshakeExample.pas +56 -0
  32. data/tracks/delphi/exercises/secret-handshake/uTestSecretHandshake.pas +215 -0
  33. data/tracks/ecmascript/docs/ABOUT.md +13 -9
  34. data/tracks/factor/exercises/two-fer/README.md +1 -1
  35. data/tracks/fsharp/docs/RESOURCES.md +1 -1
  36. data/tracks/fsharp/generators/{Input.fs → CanonicalData.fs} +5 -10
  37. data/tracks/fsharp/generators/Exercise.fs +11 -10
  38. data/tracks/fsharp/generators/{Output.fs → Formatting.fs} +2 -56
  39. data/tracks/fsharp/generators/Generators.fs +93 -93
  40. data/tracks/fsharp/generators/Generators.fsproj +9 -4
  41. data/tracks/fsharp/generators/Options.fs +1 -1
  42. data/tracks/fsharp/generators/Program.fs +3 -3
  43. data/tracks/fsharp/generators/Rendering.fs +57 -0
  44. data/tracks/go/exercises/all-your-base/.meta/gen.go +80 -0
  45. data/tracks/go/exercises/all-your-base/.meta/hints.md +13 -0
  46. data/tracks/go/exercises/all-your-base/README.md +16 -1
  47. data/tracks/go/exercises/all-your-base/all_your_base_test.go +12 -163
  48. data/tracks/go/exercises/all-your-base/cases_test.go +183 -0
  49. data/tracks/go/exercises/all-your-base/example.go +25 -29
  50. data/tracks/java/CONTRIBUTING.md +1 -1
  51. data/tracks/java/POLICIES.md +15 -1
  52. data/tracks/java/exercises/flatten-array/.meta/hints.md +58 -0
  53. data/tracks/java/exercises/flatten-array/README.md +62 -0
  54. data/tracks/java/exercises/hamming/src/main/java/Hamming.java +1 -1
  55. data/tracks/java/exercises/matrix/.meta/src/reference/java/Matrix.java +6 -6
  56. data/tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java +2 -2
  57. data/tracks/java/exercises/meetup/.meta/src/reference/java/MeetupSchedule.java +1 -1
  58. data/tracks/java/exercises/meetup/src/main/java/MeetupSchedule.java +1 -1
  59. data/tracks/java/exercises/pig-latin/.meta/hints.md +58 -0
  60. data/tracks/java/exercises/pig-latin/README.md +61 -0
  61. data/tracks/java/exercises/reverse-string/src/main/java/ReverseString.java +2 -2
  62. data/tracks/java/exercises/secret-handshake/README.md +1 -1
  63. data/tracks/javascript/.eslintignore +0 -3
  64. data/tracks/javascript/exercises/food-chain/example.js +50 -37
  65. data/tracks/javascript/exercises/octal/example.js +1 -1
  66. data/tracks/javascript/exercises/robot-name/robot-name.spec.js +7 -7
  67. data/tracks/javascript/package-lock.json +1846 -0
  68. data/tracks/python/docs/EXERCISE_README_INSERT.md +15 -0
  69. data/tracks/python/exercises/accumulate/README.md +15 -0
  70. data/tracks/python/exercises/acronym/README.md +15 -0
  71. data/tracks/python/exercises/all-your-base/README.md +15 -0
  72. data/tracks/python/exercises/all-your-base/all_your_base_test.py +19 -9
  73. data/tracks/python/exercises/allergies/README.md +15 -0
  74. data/tracks/python/exercises/alphametics/README.md +15 -0
  75. data/tracks/python/exercises/anagram/README.md +15 -0
  76. data/tracks/python/exercises/atbash-cipher/README.md +15 -0
  77. data/tracks/python/exercises/beer-song/README.md +16 -1
  78. data/tracks/python/exercises/binary-search-tree/README.md +16 -2
  79. data/tracks/python/exercises/binary-search/README.md +15 -0
  80. data/tracks/python/exercises/binary-search/binary_search_test.py +14 -4
  81. data/tracks/python/exercises/binary/README.md +15 -0
  82. data/tracks/python/exercises/binary/binary_test.py +14 -4
  83. data/tracks/python/exercises/bob/README.md +15 -0
  84. data/tracks/python/exercises/book-store/README.md +15 -0
  85. data/tracks/python/exercises/bracket-push/README.md +15 -0
  86. data/tracks/python/exercises/change/README.md +15 -0
  87. data/tracks/python/exercises/circular-buffer/README.md +15 -0
  88. data/tracks/python/exercises/circular-buffer/circular_buffer_test.py +15 -5
  89. data/tracks/python/exercises/circular-buffer/example.py +2 -2
  90. data/tracks/python/exercises/clock/README.md +15 -0
  91. data/tracks/python/exercises/collatz-conjecture/.meta/hints.md +1 -1
  92. data/tracks/python/exercises/collatz-conjecture/README.md +15 -0
  93. data/tracks/python/exercises/complex-numbers/README.md +15 -0
  94. data/tracks/python/exercises/connect/README.md +18 -3
  95. data/tracks/python/exercises/crypto-square/README.md +15 -0
  96. data/tracks/python/exercises/diamond/README.md +15 -0
  97. data/tracks/python/exercises/difference-of-squares/README.md +15 -0
  98. data/tracks/python/exercises/diffie-hellman/README.md +14 -0
  99. data/tracks/python/exercises/dominoes/README.md +16 -1
  100. data/tracks/python/exercises/error-handling/README.md +17 -0
  101. data/tracks/python/exercises/error-handling/error_handling_test.py +13 -3
  102. data/tracks/python/exercises/error-handling/example.py +1 -1
  103. data/tracks/python/exercises/etl/README.md +16 -1
  104. data/tracks/python/exercises/flatten-array/README.md +15 -0
  105. data/tracks/python/exercises/food-chain/README.md +15 -0
  106. data/tracks/python/exercises/forth/README.md +15 -0
  107. data/tracks/python/exercises/forth/example.py +7 -9
  108. data/tracks/python/exercises/forth/forth_test.py +107 -17
  109. data/tracks/python/exercises/gigasecond/README.md +15 -0
  110. data/tracks/python/exercises/go-counting/README.md +21 -3
  111. data/tracks/python/exercises/grade-school/README.md +15 -0
  112. data/tracks/python/exercises/grains/README.md +15 -0
  113. data/tracks/python/exercises/grains/grains_test.py +16 -6
  114. data/tracks/python/exercises/grep/README.md +15 -0
  115. data/tracks/python/exercises/hamming/README.md +15 -0
  116. data/tracks/python/exercises/hamming/hamming_test.py +12 -2
  117. data/tracks/python/exercises/hello-world/README.md +15 -0
  118. data/tracks/python/exercises/hexadecimal/README.md +15 -0
  119. data/tracks/python/exercises/hexadecimal/hexadecimal_test.py +11 -1
  120. data/tracks/python/exercises/house/README.md +16 -1
  121. data/tracks/python/exercises/isogram/README.md +15 -0
  122. data/tracks/python/exercises/kindergarten-garden/README.md +18 -3
  123. data/tracks/python/exercises/largest-series-product/README.md +15 -0
  124. data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +14 -4
  125. data/tracks/python/exercises/leap/README.md +15 -0
  126. data/tracks/python/exercises/linked-list/README.md +15 -0
  127. data/tracks/python/exercises/list-ops/README.md +15 -0
  128. data/tracks/python/exercises/luhn/README.md +15 -0
  129. data/tracks/python/exercises/markdown/README.md +18 -0
  130. data/tracks/python/exercises/matrix/README.md +15 -0
  131. data/tracks/python/exercises/meetup/README.md +31 -12
  132. data/tracks/python/exercises/meetup/meetup_test.py +11 -1
  133. data/tracks/python/exercises/minesweeper/README.md +15 -0
  134. data/tracks/python/exercises/minesweeper/minesweeper_test.py +12 -2
  135. data/tracks/python/exercises/nth-prime/README.md +15 -0
  136. data/tracks/python/exercises/nth-prime/nth_prime_test.py +11 -1
  137. data/tracks/python/exercises/nucleotide-count/README.md +17 -2
  138. data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +11 -1
  139. data/tracks/python/exercises/ocr-numbers/README.md +16 -1
  140. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +12 -2
  141. data/tracks/python/exercises/octal/README.md +15 -0
  142. data/tracks/python/exercises/octal/octal_test.py +16 -3
  143. data/tracks/python/exercises/palindrome-products/README.md +16 -1
  144. data/tracks/python/exercises/pangram/README.md +15 -0
  145. data/tracks/python/exercises/pascals-triangle/README.md +16 -1
  146. data/tracks/python/exercises/perfect-numbers/README.md +15 -0
  147. data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +13 -3
  148. data/tracks/python/exercises/phone-number/README.md +16 -2
  149. data/tracks/python/exercises/phone-number/example.py +1 -1
  150. data/tracks/python/exercises/phone-number/phone_number_test.py +17 -7
  151. data/tracks/python/exercises/pig-latin/README.md +15 -0
  152. data/tracks/python/exercises/point-mutations/README.md +15 -0
  153. data/tracks/python/exercises/poker/README.md +15 -0
  154. data/tracks/python/exercises/pov/README.md +20 -2
  155. data/tracks/python/exercises/pov/example.py +2 -2
  156. data/tracks/python/exercises/pov/pov_test.py +15 -5
  157. data/tracks/python/exercises/prime-factors/README.md +15 -0
  158. data/tracks/python/exercises/protein-translation/README.md +15 -0
  159. data/tracks/python/exercises/protein-translation/protein_translation_test.py +10 -0
  160. data/tracks/python/exercises/proverb/README.md +14 -0
  161. data/tracks/python/exercises/pythagorean-triplet/README.md +15 -0
  162. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +11 -1
  163. data/tracks/python/exercises/queen-attack/README.md +15 -0
  164. data/tracks/python/exercises/queen-attack/queen_attack_test.py +17 -7
  165. data/tracks/python/exercises/rail-fence-cipher/README.md +15 -0
  166. data/tracks/python/exercises/raindrops/README.md +15 -0
  167. data/tracks/python/exercises/react/README.md +15 -1
  168. data/tracks/python/exercises/rectangles/README.md +24 -9
  169. data/tracks/python/exercises/rna-transcription/.meta/hints.md +1 -0
  170. data/tracks/python/exercises/rna-transcription/README.md +18 -5
  171. data/tracks/python/exercises/rna-transcription/rna_transcription_test.py +13 -3
  172. data/tracks/python/exercises/robot-name/README.md +15 -0
  173. data/tracks/python/exercises/robot-simulator/README.md +15 -0
  174. data/tracks/python/exercises/roman-numerals/README.md +15 -0
  175. data/tracks/python/exercises/rotational-cipher/README.md +15 -0
  176. data/tracks/python/exercises/run-length-encoding/README.md +15 -0
  177. data/tracks/python/exercises/saddle-points/README.md +15 -0
  178. data/tracks/python/exercises/saddle-points/saddle_points_test.py +11 -1
  179. data/tracks/python/exercises/say/README.md +15 -0
  180. data/tracks/python/exercises/say/say_test.py +12 -2
  181. data/tracks/python/exercises/scale-generator/README.md +15 -0
  182. data/tracks/python/exercises/scale-generator/example.py +3 -3
  183. data/tracks/python/exercises/scale-generator/scale_generator_test.py +11 -1
  184. data/tracks/python/exercises/scrabble-score/README.md +15 -0
  185. data/tracks/python/exercises/secret-handshake/README.md +16 -1
  186. data/tracks/python/exercises/series/README.md +15 -0
  187. data/tracks/python/exercises/series/series_test.py +12 -2
  188. data/tracks/python/exercises/sieve/README.md +15 -0
  189. data/tracks/python/exercises/simple-cipher/.meta/hints.md +6 -6
  190. data/tracks/python/exercises/simple-cipher/README.md +17 -1
  191. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +12 -2
  192. data/tracks/python/exercises/simple-linked-list/{hints.md → .meta/hints.md} +10 -10
  193. data/tracks/python/exercises/simple-linked-list/README.md +16 -0
  194. data/tracks/python/exercises/simple-linked-list/example.py +2 -2
  195. data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +13 -3
  196. data/tracks/python/exercises/space-age/README.md +15 -0
  197. data/tracks/python/exercises/strain/README.md +16 -3
  198. data/tracks/python/exercises/sublist/README.md +15 -0
  199. data/tracks/python/exercises/sum-of-multiples/README.md +18 -3
  200. data/tracks/python/exercises/tournament/README.md +15 -0
  201. data/tracks/python/exercises/transpose/README.md +15 -0
  202. data/tracks/python/exercises/tree-building/README.md +30 -0
  203. data/tracks/python/exercises/tree-building/example.py +3 -5
  204. data/tracks/python/exercises/tree-building/tree_building_test.py +16 -6
  205. data/tracks/python/exercises/triangle/README.md +15 -0
  206. data/tracks/python/exercises/triangle/example.py +1 -1
  207. data/tracks/python/exercises/triangle/triangle_test.py +15 -5
  208. data/tracks/python/exercises/trinary/README.md +15 -0
  209. data/tracks/python/exercises/twelve-days/README.md +15 -0
  210. data/tracks/python/exercises/two-bucket/README.md +22 -7
  211. data/tracks/python/exercises/two-fer/README.md +16 -0
  212. data/tracks/python/exercises/variable-length-quantity/README.md +15 -0
  213. data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +12 -2
  214. data/tracks/python/exercises/word-count/README.md +15 -0
  215. data/tracks/python/exercises/word-search/README.md +15 -0
  216. data/tracks/python/exercises/wordy/README.md +15 -0
  217. data/tracks/python/exercises/wordy/wordy_test.py +14 -4
  218. data/tracks/python/exercises/zebra-puzzle/README.md +15 -0
  219. data/tracks/python/exercises/zipper/README.md +16 -3
  220. data/tracks/rust/config.json +11 -0
  221. data/tracks/rust/exercises/saddle-points/.gitignore +8 -0
  222. data/tracks/rust/exercises/saddle-points/Cargo.toml +5 -0
  223. data/tracks/rust/exercises/saddle-points/README.md +66 -0
  224. data/tracks/rust/exercises/saddle-points/example.rs +24 -0
  225. data/tracks/rust/exercises/saddle-points/src/lib.rs +3 -0
  226. data/tracks/rust/exercises/saddle-points/tests/saddle-points.rs +60 -0
  227. metadata +38 -5
@@ -27,13 +27,39 @@
27
27
  {
28
28
  "core": false,
29
29
  "difficulty": 1,
30
- "slug": "leap",
30
+ "slug": "acronym",
31
+ "topics": [
32
+ "control_flow_loops",
33
+ "memory_management",
34
+ "strings"
35
+ ],
36
+ "unlocked_by": "isogram",
37
+ "uuid": "1a8ba121-d2c4-4994-8c6b-610d8987346d"
38
+ },
39
+ {
40
+ "core": false,
41
+ "difficulty": 3,
42
+ "slug": "word-count",
43
+ "topics": [
44
+ "filtering",
45
+ "memory_management",
46
+ "strings",
47
+ "structs"
48
+ ],
49
+ "unlocked_by": "isogram",
50
+ "uuid": "1e4f4fcf-c32d-459f-8920-15ac56008666"
51
+ },
52
+ {
53
+ "core": false,
54
+ "difficulty": 3,
55
+ "slug": "pangram",
31
56
  "topics": [
32
57
  "control_flow_if_else_statements",
33
- "logic"
58
+ "control_flow_loops",
59
+ "strings"
34
60
  ],
35
- "unlocked_by": null,
36
- "uuid": "9b047dda-b85e-4378-9487-9f9cce086e4f"
61
+ "unlocked_by": "isogram",
62
+ "uuid": "6311b9f8-b438-4186-88b2-1e4f55275ccb"
37
63
  },
38
64
  {
39
65
  "core": true,
@@ -44,6 +70,30 @@
44
70
  ],
45
71
  "uuid": "000340f6-e30d-4d49-a255-016237d6fe60"
46
72
  },
73
+ {
74
+ "core": false,
75
+ "difficulty": 1,
76
+ "slug": "space-age",
77
+ "topics": [
78
+ "functions"
79
+ ],
80
+ "unlocked_by": "gigasecond",
81
+ "uuid": "fc03c7de-b0c6-4806-90bb-e9dda846e660"
82
+ },
83
+ {
84
+ "core": false,
85
+ "difficulty": 4,
86
+ "slug": "meetup",
87
+ "topics": [
88
+ "control_flow_if_statements",
89
+ "preprocessor_x_macros_in_test",
90
+ "strings",
91
+ "structs",
92
+ "time_functions"
93
+ ],
94
+ "unlocked_by": "gigasecond",
95
+ "uuid": "a7baa53f-e828-457e-a456-ba3471494d80"
96
+ },
47
97
  {
48
98
  "core": true,
49
99
  "difficulty": 2,
@@ -58,36 +108,27 @@
58
108
  {
59
109
  "core": false,
60
110
  "difficulty": 2,
61
- "slug": "raindrops",
62
- "topics": [
63
- "control_flow_if_else_statements",
64
- "strings"
65
- ],
66
- "unlocked_by": null,
67
- "uuid": "93acdd0d-9bd1-4dec-a572-fd12d0c66187"
68
- },
69
- {
70
- "core": false,
71
- "difficulty": 5,
72
- "slug": "bob",
111
+ "slug": "rna-transcription",
73
112
  "topics": [
74
- "control_flow_if_else_statements",
113
+ "control_flow_case_statements",
114
+ "control_flow_loops",
75
115
  "strings"
76
116
  ],
77
- "unlocked_by": "beer-song",
78
- "uuid": "b0feb5e2-eb94-4393-b60d-cf8a275d1860"
117
+ "unlocked_by": "hamming",
118
+ "uuid": "d12fea98-bf4e-476d-a91c-799fc98a1690"
79
119
  },
80
120
  {
81
121
  "core": false,
82
- "difficulty": 1,
83
- "slug": "acronym",
122
+ "difficulty": 2,
123
+ "slug": "nucleotide-count",
84
124
  "topics": [
85
- "control_flow_loops",
125
+ "control_flow_loops_switch_if_statements",
86
126
  "memory_management",
87
- "strings"
127
+ "strings",
128
+ "text_formatting"
88
129
  ],
89
- "unlocked_by": "isogram",
90
- "uuid": "1a8ba121-d2c4-4994-8c6b-610d8987346d"
130
+ "unlocked_by": "hamming",
131
+ "uuid": "38669990-e1e6-4486-a603-575a135d1f5c"
91
132
  },
92
133
  {
93
134
  "core": true,
@@ -102,74 +143,47 @@
102
143
  },
103
144
  {
104
145
  "core": false,
105
- "difficulty": 5,
106
- "slug": "largest-series-product",
146
+ "difficulty": 1,
147
+ "slug": "leap",
107
148
  "topics": [
108
- "control_flow_loops",
109
- "performance_optimizations",
110
- "strings"
149
+ "control_flow_if_else_statements",
150
+ "logic"
111
151
  ],
112
- "unlocked_by": "palindrome-products",
113
- "uuid": "4b5974fe-dcff-4542-ad3e-2782201cba1e"
152
+ "unlocked_by": "grains",
153
+ "uuid": "9b047dda-b85e-4378-9487-9f9cce086e4f"
114
154
  },
115
155
  {
116
- "core": false,
117
- "difficulty": 3,
118
- "slug": "pangram",
156
+ "core": true,
157
+ "difficulty": 2,
158
+ "slug": "beer-song",
119
159
  "topics": [
120
160
  "control_flow_if_else_statements",
121
161
  "control_flow_loops",
122
162
  "strings"
123
163
  ],
124
- "unlocked_by": "isogram",
125
- "uuid": "6311b9f8-b438-4186-88b2-1e4f55275ccb"
126
- },
127
- {
128
- "core": false,
129
- "difficulty": 3,
130
- "slug": "all-your-base",
131
- "topics": [
132
- "arrays",
133
- "control_flow_if_else_statements",
134
- "control_flow_loops"
135
- ],
136
- "unlocked_by": "binary",
137
- "uuid": "e3574f75-89cb-4dda-8fce-14ce3141b595"
164
+ "uuid": "c06789cb-cdd6-44a7-bee5-16e0d85e913a"
138
165
  },
139
166
  {
140
167
  "core": false,
141
- "difficulty": 4,
142
- "slug": "nth-prime",
143
- "topics": [
144
- "control_flow_if_else_statements",
145
- "control_flow_loops",
146
- "performance_optimizations"
147
- ],
148
- "unlocked_by": "sieve",
149
- "uuid": "a0a703b2-244b-4739-b318-b837618b1047"
150
- },
151
- {
152
- "core": true,
153
168
  "difficulty": 2,
154
- "slug": "beer-song",
169
+ "slug": "raindrops",
155
170
  "topics": [
156
171
  "control_flow_if_else_statements",
157
- "control_flow_loops",
158
172
  "strings"
159
173
  ],
160
- "uuid": "c06789cb-cdd6-44a7-bee5-16e0d85e913a"
174
+ "unlocked_by": "beer-song",
175
+ "uuid": "93acdd0d-9bd1-4dec-a572-fd12d0c66187"
161
176
  },
162
177
  {
163
178
  "core": false,
164
- "difficulty": 2,
165
- "slug": "rna-transcription",
179
+ "difficulty": 5,
180
+ "slug": "bob",
166
181
  "topics": [
167
- "control_flow_case_statements",
168
- "control_flow_loops",
182
+ "control_flow_if_else_statements",
169
183
  "strings"
170
184
  ],
171
- "unlocked_by": "hamming",
172
- "uuid": "d12fea98-bf4e-476d-a91c-799fc98a1690"
185
+ "unlocked_by": "beer-song",
186
+ "uuid": "b0feb5e2-eb94-4393-b60d-cf8a275d1860"
173
187
  },
174
188
  {
175
189
  "core": true,
@@ -204,30 +218,29 @@
204
218
  "uuid": "db1771d2-afd8-4e01-9b6a-6be75029ef1d"
205
219
  },
206
220
  {
207
- "core": true,
208
- "difficulty": 3,
209
- "slug": "roman-numerals",
221
+ "core": false,
222
+ "difficulty": 5,
223
+ "slug": "anagram",
210
224
  "topics": [
211
- "arrays",
212
- "control_flow_loops",
213
- "memory_management",
225
+ "filtering",
214
226
  "strings",
215
227
  "structs"
216
228
  ],
217
- "uuid": "6cde608f-9819-46cd-884b-dbda39a4fa16"
229
+ "unlocked_by": "binary-search",
230
+ "uuid": "0b64079a-7fec-42b4-bd2e-1b04dd4b7e6e"
218
231
  },
219
232
  {
220
- "core": false,
233
+ "core": true,
221
234
  "difficulty": 3,
222
- "slug": "word-count",
235
+ "slug": "roman-numerals",
223
236
  "topics": [
224
- "filtering",
237
+ "arrays",
238
+ "control_flow_loops",
225
239
  "memory_management",
226
240
  "strings",
227
241
  "structs"
228
242
  ],
229
- "unlocked_by": "isogram",
230
- "uuid": "1e4f4fcf-c32d-459f-8920-15ac56008666"
243
+ "uuid": "6cde608f-9819-46cd-884b-dbda39a4fa16"
231
244
  },
232
245
  {
233
246
  "core": true,
@@ -241,18 +254,6 @@
241
254
  ],
242
255
  "uuid": "871f1c41-debd-4807-8ee5-bde54c3918f8"
243
256
  },
244
- {
245
- "core": false,
246
- "difficulty": 5,
247
- "slug": "anagram",
248
- "topics": [
249
- "filtering",
250
- "strings",
251
- "structs"
252
- ],
253
- "unlocked_by": "acronym",
254
- "uuid": "0b64079a-7fec-42b4-bd2e-1b04dd4b7e6e"
255
- },
256
257
  {
257
258
  "core": true,
258
259
  "difficulty": 5,
@@ -264,6 +265,30 @@
264
265
  ],
265
266
  "uuid": "180f59f3-78ab-4368-9fa7-e3d98a9dca78"
266
267
  },
268
+ {
269
+ "core": false,
270
+ "difficulty": 2,
271
+ "slug": "series",
272
+ "topics": [
273
+ "control_flow_if_statements",
274
+ "memory_management",
275
+ "strings",
276
+ "text_formatting"
277
+ ],
278
+ "unlocked_by": "atbash-cipher",
279
+ "uuid": "40bcec79-7235-4ac6-b69f-8e3a6374188d"
280
+ },
281
+ {
282
+ "core": false,
283
+ "difficulty": 10,
284
+ "slug": "react",
285
+ "topics": [
286
+ "functions",
287
+ "memory_management"
288
+ ],
289
+ "unlocked_by": "atbash-cipher",
290
+ "uuid": "929b651e-2017-4f98-b2cb-1dc46c609703"
291
+ },
267
292
  {
268
293
  "core": true,
269
294
  "difficulty": 4,
@@ -298,45 +323,17 @@
298
323
  ],
299
324
  "uuid": "fb2530a3-cbbf-4ba9-88d0-203faac03e96"
300
325
  },
301
- {
302
- "core": false,
303
- "difficulty": 2,
304
- "slug": "series",
305
- "topics": [
306
- "control_flow_if_statements",
307
- "memory_management",
308
- "strings",
309
- "text_formatting"
310
- ],
311
- "unlocked_by": "atbash-cipher",
312
- "uuid": "40bcec79-7235-4ac6-b69f-8e3a6374188d"
313
- },
314
326
  {
315
327
  "core": false,
316
328
  "difficulty": 4,
317
- "slug": "meetup",
318
- "topics": [
319
- "control_flow_if_statements",
320
- "preprocessor_x_macros_in_test",
321
- "strings",
322
- "structs",
323
- "time_functions"
324
- ],
325
- "unlocked_by": "gigasecond",
326
- "uuid": "a7baa53f-e828-457e-a456-ba3471494d80"
327
- },
328
- {
329
- "core": false,
330
- "difficulty": 2,
331
- "slug": "nucleotide-count",
329
+ "slug": "nth-prime",
332
330
  "topics": [
333
- "control_flow_loops_switch_if_statements",
334
- "memory_management",
335
- "strings",
336
- "text_formatting"
331
+ "control_flow_if_else_statements",
332
+ "control_flow_loops",
333
+ "performance_optimizations"
337
334
  ],
338
- "unlocked_by": "hamming",
339
- "uuid": "38669990-e1e6-4486-a603-575a135d1f5c"
335
+ "unlocked_by": "sieve",
336
+ "uuid": "a0a703b2-244b-4739-b318-b837618b1047"
340
337
  },
341
338
  {
342
339
  "core": true,
@@ -351,6 +348,17 @@
351
348
  ],
352
349
  "uuid": "e665da31-fda2-4bce-94e9-7d79dffdef14"
353
350
  },
351
+ {
352
+ "core": true,
353
+ "difficulty": 1,
354
+ "slug": "pascals-triangle",
355
+ "topics": [
356
+ "control_flow_if_else_statements",
357
+ "mathematics",
358
+ "memory_management"
359
+ ],
360
+ "uuid": "be19352f-1b63-4673-9a2d-e763ee807741"
361
+ },
354
362
  {
355
363
  "core": false,
356
364
  "difficulty": 1,
@@ -365,26 +373,26 @@
365
373
  "uuid": "5c6bc8d2-2509-471a-993c-a5bf9d030ca7"
366
374
  },
367
375
  {
368
- "core": true,
376
+ "core": false,
369
377
  "difficulty": 1,
370
- "slug": "pascals-triangle",
378
+ "slug": "perfect-numbers",
371
379
  "topics": [
372
380
  "control_flow_if_else_statements",
373
- "mathematics",
374
- "memory_management"
381
+ "mathematics"
375
382
  ],
376
- "uuid": "be19352f-1b63-4673-9a2d-e763ee807741"
383
+ "unlocked_by": "pascals-triangle",
384
+ "uuid": "a1168a15-d46f-4541-8b58-68bca0c54733"
377
385
  },
378
386
  {
379
387
  "core": false,
380
- "difficulty": 1,
381
- "slug": "perfect-numbers",
388
+ "difficulty": 2,
389
+ "slug": "collatz-conjecture",
382
390
  "topics": [
383
- "control_flow_if_else_statements",
391
+ "functions",
384
392
  "mathematics"
385
393
  ],
386
394
  "unlocked_by": "pascals-triangle",
387
- "uuid": "a1168a15-d46f-4541-8b58-68bca0c54733"
395
+ "uuid": "5a47f8a5-36a1-4479-bb77-ef5fbab4bae0"
388
396
  },
389
397
  {
390
398
  "core": true,
@@ -397,49 +405,28 @@
397
405
  "uuid": "8621177c-1068-4610-bf5b-26cf23340ae6"
398
406
  },
399
407
  {
400
- "core": true,
401
- "difficulty": 2,
402
- "slug": "palindrome-products",
408
+ "core": false,
409
+ "difficulty": 3,
410
+ "slug": "all-your-base",
403
411
  "topics": [
404
- "functions",
405
- "pointers",
406
- "strings",
407
- "structs"
412
+ "arrays",
413
+ "control_flow_if_else_statements",
414
+ "control_flow_loops"
408
415
  ],
409
- "uuid": "8dd43f6c-37ba-42b1-bb85-9ad693e4ce03"
416
+ "unlocked_by": "binary",
417
+ "uuid": "e3574f75-89cb-4dda-8fce-14ce3141b595"
410
418
  },
411
419
  {
412
420
  "core": true,
413
- "difficulty": 4,
414
- "slug": "scrabble-score",
421
+ "difficulty": 2,
422
+ "slug": "palindrome-products",
415
423
  "topics": [
424
+ "functions",
416
425
  "pointers",
417
- "searching",
418
426
  "strings",
419
427
  "structs"
420
428
  ],
421
- "uuid": "8c631290-13b7-4d25-9ee7-ced2e534deb4"
422
- },
423
- {
424
- "core": false,
425
- "difficulty": 1,
426
- "slug": "space-age",
427
- "topics": [
428
- "functions"
429
- ],
430
- "unlocked_by": "gigasecond",
431
- "uuid": "fc03c7de-b0c6-4806-90bb-e9dda846e660"
432
- },
433
- {
434
- "core": false,
435
- "difficulty": 10,
436
- "slug": "react",
437
- "topics": [
438
- "functions",
439
- "memory_management"
440
- ],
441
- "unlocked_by": "atbash-cipher",
442
- "uuid": "929b651e-2017-4f98-b2cb-1dc46c609703"
429
+ "uuid": "8dd43f6c-37ba-42b1-bb85-9ad693e4ce03"
443
430
  },
444
431
  {
445
432
  "core": false,
@@ -457,14 +444,27 @@
457
444
  },
458
445
  {
459
446
  "core": false,
460
- "difficulty": 2,
461
- "slug": "collatz-conjecture",
447
+ "difficulty": 5,
448
+ "slug": "largest-series-product",
462
449
  "topics": [
463
- "functions",
464
- "mathematics"
450
+ "control_flow_loops",
451
+ "performance_optimizations",
452
+ "strings"
465
453
  ],
466
- "unlocked_by": "pascals-triangle",
467
- "uuid": "5a47f8a5-36a1-4479-bb77-ef5fbab4bae0"
454
+ "unlocked_by": "palindrome-products",
455
+ "uuid": "4b5974fe-dcff-4542-ad3e-2782201cba1e"
456
+ },
457
+ {
458
+ "core": true,
459
+ "difficulty": 4,
460
+ "slug": "scrabble-score",
461
+ "topics": [
462
+ "pointers",
463
+ "searching",
464
+ "strings",
465
+ "structs"
466
+ ],
467
+ "uuid": "8c631290-13b7-4d25-9ee7-ced2e534deb4"
468
468
  },
469
469
  {
470
470
  "core": true,