trackler 2.2.1.46 → 2.2.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/nucleotide-count/canonical-data.json +7 -7
  4. data/tracks/c/README.md +1 -1
  5. data/tracks/c/docs/SNIPPET.txt +2 -3
  6. data/tracks/c/exercises/acronym/test/test_acronym.c +8 -0
  7. data/tracks/c/exercises/all-your-base/test/test_all_your_base.c +8 -0
  8. data/tracks/c/exercises/allergies/test/test_allergies.c +8 -0
  9. data/tracks/c/exercises/anagram/test/test_anagram.c +8 -0
  10. data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +8 -0
  11. data/tracks/c/exercises/beer-song/src/example.c +23 -22
  12. data/tracks/c/exercises/beer-song/src/example.h +3 -3
  13. data/tracks/c/exercises/beer-song/test/test_beer_song.c +8 -0
  14. data/tracks/c/exercises/binary-search/test/test_binary_search.c +8 -0
  15. data/tracks/c/exercises/binary/test/test_binary.c +8 -0
  16. data/tracks/c/exercises/bob/test/test_bob.c +8 -0
  17. data/tracks/c/exercises/clock/test/test_clock.c +8 -0
  18. data/tracks/c/exercises/difference-of-squares/test/test_difference_of_squares.c +8 -0
  19. data/tracks/c/exercises/gigasecond/test/test_gigasecond.c +8 -0
  20. data/tracks/c/exercises/grains/test/test_grains.c +8 -0
  21. data/tracks/c/exercises/hamming/test/test_hamming.c +8 -0
  22. data/tracks/c/exercises/hello-world/src/example.c +0 -2
  23. data/tracks/c/exercises/hello-world/test/test_hello_world.c +8 -0
  24. data/tracks/c/exercises/isogram/test/test_isogram.c +8 -0
  25. data/tracks/c/exercises/largest-series-product/test/test_largest_series_product.c +8 -0
  26. data/tracks/c/exercises/leap/test/test_leap.c +8 -0
  27. data/tracks/c/exercises/meetup/test/test_meetup.c +8 -0
  28. data/tracks/c/exercises/nth-prime/test/test_nth_prime.c +8 -0
  29. data/tracks/c/exercises/nucleotide-count/test/test_nucleotide_count.c +8 -0
  30. data/tracks/c/exercises/palindrome-products/test/test_palindrome_products.c +8 -0
  31. data/tracks/c/exercises/pangram/test/test_pangram.c +8 -0
  32. data/tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c +8 -0
  33. data/tracks/c/exercises/perfect-numbers/src/example.c +4 -4
  34. data/tracks/c/exercises/perfect-numbers/src/example.h +4 -4
  35. data/tracks/c/exercises/perfect-numbers/src/perfect_numbers.h +4 -4
  36. data/tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c +23 -13
  37. data/tracks/c/exercises/phone-number/test/test_phone_number.c +8 -0
  38. data/tracks/c/exercises/raindrops/test/test_raindrops.c +5 -1
  39. data/tracks/c/exercises/react/src/example.c +8 -8
  40. data/tracks/c/exercises/react/test/test_react.c +8 -0
  41. data/tracks/c/exercises/rna-transcription/test/test_rna_transcription.c +8 -0
  42. data/tracks/c/exercises/robot-simulator/src/example.c +12 -12
  43. data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +11 -11
  44. data/tracks/c/exercises/robot-simulator/test/test_robot_simulator.c +33 -25
  45. data/tracks/c/exercises/roman-numerals/test/test_roman_numerals.c +8 -0
  46. data/tracks/c/exercises/scrabble-score/test/test_scrabble_score.c +8 -0
  47. data/tracks/c/exercises/series/test/test_series.c +8 -0
  48. data/tracks/c/exercises/sieve/test/test_sieve.c +8 -0
  49. data/tracks/c/exercises/space-age/src/example.h +8 -8
  50. data/tracks/c/exercises/space-age/test/test_space_age.c +16 -8
  51. data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +8 -0
  52. data/tracks/c/exercises/triangle/test/test_triangle.c +8 -0
  53. data/tracks/c/exercises/word-count/test/test_word_count.c +8 -0
  54. data/tracks/cfml/config.json +8 -0
  55. data/tracks/cfml/exercises/anagram/.meta/HINTS.md +0 -0
  56. data/tracks/cfml/exercises/anagram/Anagram.cfc +13 -0
  57. data/tracks/cfml/exercises/anagram/AnagramTest.cfc +79 -0
  58. data/tracks/cfml/exercises/anagram/README.md +29 -0
  59. data/tracks/cfml/exercises/anagram/Solution.cfc +42 -0
  60. data/tracks/cfml/exercises/anagram/SolutionTest.cfc +7 -0
  61. data/tracks/cfml/exercises/anagram/TestRunner.cfc +103 -0
  62. data/tracks/cfml/exercises/anagram/box.json +8 -0
  63. data/tracks/cfml/exercises/anagram/index.cfm +37 -0
  64. data/tracks/common-lisp/config.json +5 -5
  65. data/tracks/csharp/exercises/two-bucket/Example.cs +53 -79
  66. data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +2 -2
  67. data/tracks/csharp/generators/Exercises/QueenAttack.cs +3 -3
  68. data/tracks/dart/exercises/leap/test/leap_test.dart +1 -1
  69. data/tracks/delphi/exercises/hamming/uHammingTests.pas +2 -2
  70. data/tracks/delphi/exercises/leap/uLeapTests.pas +11 -38
  71. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountExample.pas +1 -1
  72. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +31 -55
  73. data/tracks/ecmascript/config.json +31 -0
  74. data/tracks/ecmascript/config/maintainers.json +5 -5
  75. data/tracks/ecmascript/exercises/accumulate/package.json +1 -1
  76. data/tracks/ecmascript/exercises/acronym/package.json +1 -1
  77. data/tracks/ecmascript/exercises/all-your-base/package.json +1 -1
  78. data/tracks/ecmascript/exercises/allergies/package.json +1 -1
  79. data/tracks/ecmascript/exercises/alphametics/package.json +1 -1
  80. data/tracks/ecmascript/exercises/anagram/package.json +1 -1
  81. data/tracks/ecmascript/exercises/atbash-cipher/package.json +1 -1
  82. data/tracks/ecmascript/exercises/beer-song/package.json +1 -1
  83. data/tracks/ecmascript/exercises/binary-search-tree/package.json +1 -1
  84. data/tracks/ecmascript/exercises/binary-search/package.json +1 -1
  85. data/tracks/ecmascript/exercises/binary/package.json +1 -1
  86. data/tracks/ecmascript/exercises/bob/package.json +1 -1
  87. data/tracks/ecmascript/exercises/bracket-push/package.json +1 -1
  88. data/tracks/ecmascript/exercises/circular-buffer/package.json +1 -1
  89. data/tracks/ecmascript/exercises/clock/package.json +1 -1
  90. data/tracks/ecmascript/exercises/collatz-conjecture/README.md +59 -0
  91. data/tracks/ecmascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +31 -0
  92. data/tracks/ecmascript/exercises/collatz-conjecture/example.js +14 -0
  93. data/tracks/ecmascript/exercises/collatz-conjecture/package.json +69 -0
  94. data/tracks/ecmascript/exercises/connect/package.json +1 -1
  95. data/tracks/ecmascript/exercises/crypto-square/package.json +1 -1
  96. data/tracks/ecmascript/exercises/custom-set/package.json +1 -1
  97. data/tracks/ecmascript/exercises/diamond/package.json +1 -1
  98. data/tracks/ecmascript/exercises/difference-of-squares/package.json +1 -1
  99. data/tracks/ecmascript/exercises/diffie-hellman/package.json +1 -1
  100. data/tracks/ecmascript/exercises/etl/package.json +1 -1
  101. data/tracks/ecmascript/exercises/flatten-array/package.json +1 -1
  102. data/tracks/ecmascript/exercises/food-chain/package.json +1 -1
  103. data/tracks/ecmascript/exercises/gigasecond/package.json +1 -1
  104. data/tracks/ecmascript/exercises/grade-school/package.json +1 -1
  105. data/tracks/ecmascript/exercises/grains/package.json +1 -1
  106. data/tracks/ecmascript/exercises/hamming/package.json +1 -1
  107. data/tracks/ecmascript/exercises/hello-world/package.json +1 -1
  108. data/tracks/ecmascript/exercises/hexadecimal/package.json +1 -1
  109. data/tracks/ecmascript/exercises/isogram/package.json +1 -1
  110. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +1 -1
  111. data/tracks/ecmascript/exercises/largest-series-product/package.json +1 -1
  112. data/tracks/ecmascript/exercises/leap/package.json +1 -1
  113. data/tracks/ecmascript/exercises/linked-list/package.json +1 -1
  114. data/tracks/ecmascript/exercises/list-ops/package.json +1 -1
  115. data/tracks/ecmascript/exercises/luhn/package.json +1 -1
  116. data/tracks/ecmascript/exercises/matrix/package.json +1 -1
  117. data/tracks/ecmascript/exercises/meetup/package.json +1 -1
  118. data/tracks/ecmascript/exercises/minesweeper/package.json +1 -1
  119. data/tracks/ecmascript/exercises/nth-prime/package.json +1 -1
  120. data/tracks/ecmascript/exercises/ocr-numbers/package.json +1 -1
  121. data/tracks/ecmascript/exercises/octal/package.json +1 -1
  122. data/tracks/ecmascript/exercises/palindrome-products/package.json +1 -1
  123. data/tracks/ecmascript/exercises/pangram/package.json +1 -1
  124. data/tracks/ecmascript/exercises/pascals-triangle/package.json +1 -1
  125. data/tracks/ecmascript/exercises/perfect-numbers/package.json +1 -1
  126. data/tracks/ecmascript/exercises/phone-number/package.json +1 -1
  127. data/tracks/ecmascript/exercises/pig-latin/package.json +1 -1
  128. data/tracks/ecmascript/exercises/prime-factors/package.json +1 -1
  129. data/tracks/ecmascript/exercises/proverb/package.json +1 -1
  130. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +1 -1
  131. data/tracks/ecmascript/exercises/queen-attack/package.json +1 -1
  132. data/tracks/ecmascript/exercises/raindrops/package.json +1 -1
  133. data/tracks/ecmascript/exercises/rna-transcription/package.json +1 -1
  134. data/tracks/ecmascript/exercises/robot-name/package.json +1 -1
  135. data/tracks/ecmascript/exercises/robot-simulator/package.json +1 -1
  136. data/tracks/ecmascript/exercises/roman-numerals/package.json +1 -1
  137. data/tracks/ecmascript/exercises/run-length-encoding/package.json +1 -1
  138. data/tracks/ecmascript/exercises/saddle-points/package.json +1 -1
  139. data/tracks/ecmascript/exercises/say/package.json +1 -1
  140. data/tracks/ecmascript/exercises/scrabble-score/package.json +1 -1
  141. data/tracks/ecmascript/exercises/secret-handshake/package.json +1 -1
  142. data/tracks/ecmascript/exercises/series/package.json +1 -1
  143. data/tracks/ecmascript/exercises/sieve/package.json +1 -1
  144. data/tracks/ecmascript/exercises/simple-cipher/package.json +1 -1
  145. data/tracks/ecmascript/exercises/simple-linked-list/package.json +1 -1
  146. data/tracks/ecmascript/exercises/space-age/package.json +1 -1
  147. data/tracks/ecmascript/exercises/strain/package.json +1 -1
  148. data/tracks/ecmascript/exercises/sublist/package.json +1 -1
  149. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +1 -1
  150. data/tracks/ecmascript/exercises/triangle/package.json +1 -1
  151. data/tracks/ecmascript/exercises/trinary/package.json +1 -1
  152. data/tracks/ecmascript/exercises/twelve-days/package.json +1 -1
  153. data/tracks/ecmascript/exercises/two-bucket/package.json +1 -1
  154. data/tracks/ecmascript/exercises/word-count/package.json +1 -1
  155. data/tracks/ecmascript/exercises/word-search/README.md +58 -0
  156. data/tracks/ecmascript/exercises/word-search/example.js +146 -0
  157. data/tracks/ecmascript/exercises/word-search/package.json +69 -0
  158. data/tracks/ecmascript/exercises/word-search/word-search.spec.js +626 -0
  159. data/tracks/ecmascript/exercises/wordy/package.json +1 -1
  160. data/tracks/ecmascript/package.json +1 -1
  161. data/tracks/elixir/config.json +11 -0
  162. data/tracks/elixir/exercises/luhn/example.exs +26 -46
  163. data/tracks/elixir/exercises/luhn/luhn.exs +0 -13
  164. data/tracks/elixir/exercises/luhn/luhn_test.exs +44 -14
  165. data/tracks/elixir/exercises/transpose/README.md +101 -0
  166. data/tracks/elixir/exercises/transpose/example.exs +46 -0
  167. data/tracks/elixir/exercises/transpose/transpose.exs +22 -0
  168. data/tracks/elixir/exercises/transpose/transpose_test.exs +248 -0
  169. data/tracks/fsharp/exercises/grains/Example.fs +10 -2
  170. data/tracks/fsharp/exercises/grains/Grains.fs +2 -4
  171. data/tracks/fsharp/exercises/grains/GrainsTest.fs +52 -25
  172. data/tracks/fsharp/exercises/phone-number/Example.fs +11 -3
  173. data/tracks/fsharp/exercises/phone-number/PhoneNumber.fs +1 -1
  174. data/tracks/fsharp/exercises/phone-number/PhoneNumberTest.fs +32 -21
  175. data/tracks/fsharp/exercises/prime-factors/Example.fs +6 -13
  176. data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fs +1 -1
  177. data/tracks/fsharp/exercises/prime-factors/PrimeFactorsTest.fs +23 -32
  178. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs +22 -13
  179. data/tracks/fsharp/generators/Exercise.fs +3 -4
  180. data/tracks/fsharp/generators/Generators.fs +31 -0
  181. data/tracks/gnu-apl/bin/run-all-tests +5 -2
  182. data/tracks/java/CONTRIBUTING.md +8 -0
  183. data/tracks/java/POLICIES.md +2 -2
  184. data/tracks/java/config.json +26 -4
  185. data/tracks/java/exercises/triangle/.meta/.version +1 -0
  186. data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +1 -1
  187. data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +59 -40
  188. data/tracks/javascript/config.json +30 -0
  189. data/tracks/javascript/config/maintainers.json +8 -8
  190. data/tracks/javascript/exercises/change/example.js +6 -22
  191. data/tracks/javascript/exercises/collatz-conjecture/README.md +57 -0
  192. data/tracks/javascript/exercises/collatz-conjecture/collatz-conjecture.spec.js +37 -0
  193. data/tracks/javascript/exercises/collatz-conjecture/example.js +20 -0
  194. data/tracks/javascript/exercises/protein-translation/example.js +30 -31
  195. data/tracks/javascript/exercises/protein-translation/protein-translation.spec.js +60 -60
  196. data/tracks/javascript/exercises/transpose/README.md +89 -0
  197. data/tracks/javascript/exercises/transpose/example.js +17 -0
  198. data/tracks/javascript/exercises/transpose/transpose.spec.js +67 -0
  199. data/tracks/objective-c/config.json +283 -263
  200. data/tracks/objective-c/exercises/grains/GrainsExample.h +6 -0
  201. data/tracks/objective-c/exercises/grains/GrainsExample.m +19 -0
  202. data/tracks/objective-c/exercises/grains/GrainsTest.m +85 -0
  203. data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.h +6 -0
  204. data/tracks/objective-c/exercises/nth-prime/NthPrimeExample.m +39 -0
  205. data/tracks/objective-c/exercises/nth-prime/NthPrimeTest.m +53 -0
  206. data/tracks/python/config.json +42 -11
  207. data/tracks/python/exercises/change/README.md +34 -0
  208. data/tracks/python/exercises/two-bucket/README.md +47 -0
  209. data/tracks/ruby/README.md +4 -1
  210. data/tracks/ruby/lib/generator/command_line.rb +3 -3
  211. data/tracks/ruby/lib/generator/command_line/generator_optparser.rb +3 -3
  212. data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +4 -4
  213. data/tracks/ruby/test/generator/command_line_test.rb +5 -5
  214. data/tracks/typescript/config.json +15 -0
  215. data/tracks/typescript/exercises/strain/README.md +60 -0
  216. data/tracks/typescript/exercises/strain/package.json +36 -0
  217. data/tracks/typescript/exercises/strain/strain.example.ts +23 -0
  218. data/tracks/typescript/exercises/strain/strain.test.ts +76 -0
  219. data/tracks/typescript/exercises/strain/strain.ts +0 -0
  220. data/tracks/typescript/exercises/strain/tsconfig.json +22 -0
  221. data/tracks/typescript/exercises/strain/tslint.json +127 -0
  222. data/tracks/typescript/exercises/strain/yarn.lock +2305 -0
  223. metadata +46 -3
  224. data/tracks/ecmascript/package-lock.json +0 -2835
@@ -1,480 +1,500 @@
1
1
  {
2
- "language": "Objective-C",
3
2
  "active": true,
4
3
  "exercises": [
5
4
  {
6
- "uuid": "da5eb908-8cdf-4f99-93f7-c2b7dcb4fb37",
7
- "slug": "hello-world",
8
5
  "core": false,
9
- "unlocked_by": null,
10
6
  "difficulty": 1,
7
+ "slug": "hello-world",
11
8
  "topics": [
12
- "Text formatting",
13
- "Optional values"
14
- ]
9
+ "optional_values",
10
+ "text_formatting"
11
+ ],
12
+ "unlocked_by": null,
13
+ "uuid": "da5eb908-8cdf-4f99-93f7-c2b7dcb4fb37"
15
14
  },
16
15
  {
17
- "uuid": "3438b44a-3e0e-4488-b4e1-57dadbed5f3a",
18
- "slug": "bob",
19
16
  "core": false,
20
- "unlocked_by": null,
21
17
  "difficulty": 1,
18
+ "slug": "bob",
22
19
  "topics": [
23
- "Strings",
24
- "Control-flow (if-else statements)"
25
- ]
20
+ "control_flow_if_else_statements",
21
+ "strings"
22
+ ],
23
+ "unlocked_by": null,
24
+ "uuid": "3438b44a-3e0e-4488-b4e1-57dadbed5f3a"
26
25
  },
27
26
  {
28
- "uuid": "0b3db961-0ee2-4903-8237-4333dee92b68",
29
- "slug": "leap",
30
27
  "core": false,
31
- "unlocked_by": null,
32
28
  "difficulty": 1,
29
+ "slug": "leap",
33
30
  "topics": [
34
- "Integers"
35
- ]
31
+ "integers"
32
+ ],
33
+ "unlocked_by": null,
34
+ "uuid": "0b3db961-0ee2-4903-8237-4333dee92b68"
36
35
  },
37
36
  {
38
- "uuid": "1ac87e91-5174-44c6-93b6-deef7c2f4438",
39
- "slug": "gigasecond",
40
37
  "core": false,
41
- "unlocked_by": null,
42
38
  "difficulty": 1,
39
+ "slug": "gigasecond",
43
40
  "topics": [
44
- "Dates"
45
- ]
41
+ "dates"
42
+ ],
43
+ "unlocked_by": null,
44
+ "uuid": "1ac87e91-5174-44c6-93b6-deef7c2f4438"
46
45
  },
47
46
  {
48
- "uuid": "30cfe053-ef80-42c8-b196-3a05f61e0190",
49
- "slug": "difference-of-squares",
50
47
  "core": false,
51
- "unlocked_by": null,
52
48
  "difficulty": 1,
49
+ "slug": "difference-of-squares",
53
50
  "topics": [
54
- "Integers"
55
- ]
51
+ "integers"
52
+ ],
53
+ "unlocked_by": null,
54
+ "uuid": "30cfe053-ef80-42c8-b196-3a05f61e0190"
56
55
  },
57
56
  {
58
- "uuid": "e9b0efd4-9da5-4036-a03f-a6f697ae786e",
59
- "slug": "sum-of-multiples",
60
57
  "core": false,
61
- "unlocked_by": null,
62
58
  "difficulty": 1,
59
+ "slug": "sum-of-multiples",
63
60
  "topics": [
64
- "Lists",
65
- "Transforming"
66
- ]
61
+ "lists",
62
+ "transforming"
63
+ ],
64
+ "unlocked_by": null,
65
+ "uuid": "e9b0efd4-9da5-4036-a03f-a6f697ae786e"
67
66
  },
68
67
  {
69
- "uuid": "6a2ab923-5102-44f8-8d5b-4e967983766e",
70
- "slug": "space-age",
71
68
  "core": false,
72
- "unlocked_by": null,
73
69
  "difficulty": 1,
70
+ "slug": "space-age",
74
71
  "topics": [
75
- "Discriminated unions",
76
- "Floating-point numbers"
77
- ]
72
+ "discriminated_unions",
73
+ "floating_point_numbers"
74
+ ],
75
+ "unlocked_by": null,
76
+ "uuid": "6a2ab923-5102-44f8-8d5b-4e967983766e"
78
77
  },
79
78
  {
80
- "uuid": "6a5a3dd6-a1d2-490c-b781-4e781f1e3289",
81
- "slug": "hamming",
82
79
  "core": false,
83
- "unlocked_by": null,
84
80
  "difficulty": 2,
81
+ "slug": "hamming",
85
82
  "topics": [
86
- "Strings",
87
- "Filtering"
88
- ]
83
+ "filtering",
84
+ "strings"
85
+ ],
86
+ "unlocked_by": null,
87
+ "uuid": "6a5a3dd6-a1d2-490c-b781-4e781f1e3289"
89
88
  },
90
89
  {
91
- "uuid": "a33b7e1b-7f37-4494-8943-719f7d7e6d28",
92
- "slug": "nucleotide-count",
93
90
  "core": false,
94
- "unlocked_by": null,
95
91
  "difficulty": 2,
92
+ "slug": "nucleotide-count",
96
93
  "topics": [
97
- "Maps",
98
- "Strings"
99
- ]
94
+ "maps",
95
+ "strings"
96
+ ],
97
+ "unlocked_by": null,
98
+ "uuid": "a33b7e1b-7f37-4494-8943-719f7d7e6d28"
100
99
  },
101
100
  {
102
- "uuid": "4e16fc56-b8a8-4d48-8635-55e13795eb4d",
103
- "slug": "raindrops",
104
101
  "core": false,
105
- "unlocked_by": null,
106
102
  "difficulty": 2,
103
+ "slug": "raindrops",
107
104
  "topics": [
108
- "Text formatting",
109
- "Filtering"
110
- ]
105
+ "filtering",
106
+ "text_formatting"
107
+ ],
108
+ "unlocked_by": null,
109
+ "uuid": "4e16fc56-b8a8-4d48-8635-55e13795eb4d"
111
110
  },
112
111
  {
113
- "uuid": "5b5c4168-cffa-4d4d-94f5-d8ac7bf8a25f",
114
- "slug": "grade-school",
115
112
  "core": false,
116
- "unlocked_by": null,
117
113
  "difficulty": 2,
114
+ "slug": "grade-school",
118
115
  "topics": [
119
- "Maps",
120
- "Sorting"
121
- ]
116
+ "maps",
117
+ "sorting"
118
+ ],
119
+ "unlocked_by": null,
120
+ "uuid": "5b5c4168-cffa-4d4d-94f5-d8ac7bf8a25f"
122
121
  },
123
122
  {
124
- "uuid": "7ff9aecb-2af3-4846-818c-00eddc87bf3b",
125
- "slug": "etl",
126
123
  "core": false,
127
- "unlocked_by": null,
128
124
  "difficulty": 2,
125
+ "slug": "etl",
129
126
  "topics": [
130
- "Maps",
131
- "Transforming"
132
- ]
127
+ "maps",
128
+ "transforming"
129
+ ],
130
+ "unlocked_by": null,
131
+ "uuid": "7ff9aecb-2af3-4846-818c-00eddc87bf3b"
133
132
  },
134
133
  {
135
- "uuid": "25eb6063-e228-4862-9477-02ebcae02d3d",
136
- "slug": "isogram",
137
134
  "core": false,
138
- "unlocked_by": null,
139
135
  "difficulty": 2,
136
+ "slug": "isogram",
140
137
  "topics": [
141
- "Strings",
142
- "Filtering"
143
- ]
138
+ "filtering",
139
+ "strings"
140
+ ],
141
+ "unlocked_by": null,
142
+ "uuid": "25eb6063-e228-4862-9477-02ebcae02d3d"
144
143
  },
145
144
  {
146
- "uuid": "af3bce9f-954a-4f46-97a0-9236436e3f08",
147
- "slug": "flatten-array",
148
145
  "core": false,
149
- "unlocked_by": null,
150
146
  "difficulty": 2,
147
+ "slug": "flatten-array",
151
148
  "topics": [
152
- "Searching",
153
- "Looping",
154
- "Lists"
155
- ]
149
+ "lists",
150
+ "looping",
151
+ "searching"
152
+ ],
153
+ "unlocked_by": null,
154
+ "uuid": "af3bce9f-954a-4f46-97a0-9236436e3f08"
156
155
  },
157
156
  {
158
- "uuid": "1f3e9399-b1fa-4dec-92d7-7abf3b64f499",
159
- "slug": "sublist",
160
157
  "core": false,
161
- "unlocked_by": null,
162
158
  "difficulty": 3,
159
+ "slug": "sublist",
163
160
  "topics": [
164
- "Looping",
165
- "Lists"
166
- ]
161
+ "lists",
162
+ "looping"
163
+ ],
164
+ "unlocked_by": null,
165
+ "uuid": "1f3e9399-b1fa-4dec-92d7-7abf3b64f499"
167
166
  },
168
167
  {
169
- "uuid": "fec4d906-3b0a-412d-ad54-b6e02bf8cabb",
170
- "slug": "clock",
171
168
  "core": false,
172
- "unlocked_by": null,
173
169
  "difficulty": 3,
170
+ "slug": "clock",
174
171
  "topics": [
175
- "Time",
176
- "Structural equality"
177
- ]
172
+ "structural_equality",
173
+ "time"
174
+ ],
175
+ "unlocked_by": null,
176
+ "uuid": "fec4d906-3b0a-412d-ad54-b6e02bf8cabb"
178
177
  },
179
178
  {
180
- "uuid": "c90dbfe2-64ff-47d5-9b46-7827bf1cc06c",
181
- "slug": "triangle",
182
179
  "core": false,
183
- "unlocked_by": null,
184
180
  "difficulty": 3,
181
+ "slug": "triangle",
185
182
  "topics": [
186
- "Integers",
187
- "Discriminated unions"
188
- ]
183
+ "discriminated_unions",
184
+ "integers"
185
+ ],
186
+ "unlocked_by": null,
187
+ "uuid": "c90dbfe2-64ff-47d5-9b46-7827bf1cc06c"
189
188
  },
190
189
  {
191
- "uuid": "de603240-aa3b-4f2d-8427-c442bf0067d2",
192
- "slug": "robot-name",
193
190
  "core": false,
194
- "unlocked_by": null,
195
191
  "difficulty": 3,
192
+ "slug": "robot-name",
196
193
  "topics": [
197
- "Randomness",
198
- "Strings"
199
- ]
194
+ "randomness",
195
+ "strings"
196
+ ],
197
+ "unlocked_by": null,
198
+ "uuid": "de603240-aa3b-4f2d-8427-c442bf0067d2"
200
199
  },
201
200
  {
202
- "uuid": "f56b96e3-a642-4594-97a8-4bc82674547a",
203
- "slug": "scrabble-score",
204
201
  "core": false,
205
- "unlocked_by": null,
206
202
  "difficulty": 3,
203
+ "slug": "scrabble-score",
207
204
  "topics": [
208
- "Transforming"
209
- ]
205
+ "transforming"
206
+ ],
207
+ "unlocked_by": null,
208
+ "uuid": "f56b96e3-a642-4594-97a8-4bc82674547a"
210
209
  },
211
210
  {
212
- "uuid": "f290c133-81b1-4e94-90b0-85d665fdcfc6",
213
- "slug": "phone-number",
214
211
  "core": false,
215
- "unlocked_by": null,
216
212
  "difficulty": 3,
213
+ "slug": "phone-number",
217
214
  "topics": [
218
- "Parsing",
219
- "Transforming"
220
- ]
215
+ "parsing",
216
+ "transforming"
217
+ ],
218
+ "unlocked_by": null,
219
+ "uuid": "f290c133-81b1-4e94-90b0-85d665fdcfc6"
221
220
  },
222
221
  {
223
- "uuid": "6339da5d-0fe7-489c-a2fe-6b6016afef42",
224
- "slug": "perfect-numbers",
225
222
  "core": false,
226
- "unlocked_by": null,
227
223
  "difficulty": 3,
224
+ "slug": "perfect-numbers",
228
225
  "topics": [
229
- "Integers",
230
- "Discriminated unions"
231
- ]
226
+ "discriminated_unions",
227
+ "integers"
228
+ ],
229
+ "unlocked_by": null,
230
+ "uuid": "6339da5d-0fe7-489c-a2fe-6b6016afef42"
232
231
  },
233
232
  {
234
- "uuid": "f57cb4b4-5c22-4204-9006-8642af0e4678",
235
- "slug": "secret-handshake",
236
233
  "core": false,
237
- "unlocked_by": null,
238
234
  "difficulty": 3,
235
+ "slug": "secret-handshake",
239
236
  "topics": [
240
- "Bitwise operations",
241
- "Lists"
242
- ]
237
+ "bitwise_operations",
238
+ "lists"
239
+ ],
240
+ "unlocked_by": null,
241
+ "uuid": "f57cb4b4-5c22-4204-9006-8642af0e4678"
243
242
  },
244
243
  {
245
- "uuid": "659b25c4-4f01-49d1-be97-7a45e762b56c",
246
- "slug": "atbash-cipher",
247
244
  "core": false,
248
- "unlocked_by": null,
249
245
  "difficulty": 3,
246
+ "slug": "atbash-cipher",
250
247
  "topics": [
251
- "Strings",
252
- "Maps",
253
- "Transforming"
254
- ]
248
+ "maps",
249
+ "strings",
250
+ "transforming"
251
+ ],
252
+ "unlocked_by": null,
253
+ "uuid": "659b25c4-4f01-49d1-be97-7a45e762b56c"
255
254
  },
256
255
  {
257
- "uuid": "fd22b216-28c3-43cc-9627-e7584f4d3e27",
258
- "slug": "sieve",
259
256
  "core": false,
260
- "unlocked_by": null,
261
257
  "difficulty": 3,
258
+ "slug": "sieve",
262
259
  "topics": [
263
- "Filtering",
264
- "Mathematics"
265
- ]
260
+ "filtering",
261
+ "mathematics"
262
+ ],
263
+ "unlocked_by": null,
264
+ "uuid": "fd22b216-28c3-43cc-9627-e7584f4d3e27"
266
265
  },
267
266
  {
268
- "uuid": "3f9eb775-a268-42fa-8c28-f8fd9d43bddf",
269
- "slug": "beer-song",
270
267
  "core": false,
271
- "unlocked_by": null,
272
268
  "difficulty": 4,
269
+ "slug": "beer-song",
273
270
  "topics": [
274
- "Looping",
275
- "Conditionals",
276
- "Strings"
277
- ]
271
+ "conditionals",
272
+ "looping",
273
+ "strings"
274
+ ],
275
+ "unlocked_by": null,
276
+ "uuid": "3f9eb775-a268-42fa-8c28-f8fd9d43bddf"
278
277
  },
279
278
  {
280
- "uuid": "75cece67-bfa9-42d9-a497-2efd0862b3ef",
281
- "slug": "word-count",
282
279
  "core": false,
283
- "unlocked_by": null,
284
280
  "difficulty": 4,
281
+ "slug": "word-count",
285
282
  "topics": [
286
- "Strings",
287
- "Maps",
288
- "Transforming"
289
- ]
283
+ "maps",
284
+ "strings",
285
+ "transforming"
286
+ ],
287
+ "unlocked_by": null,
288
+ "uuid": "75cece67-bfa9-42d9-a497-2efd0862b3ef"
290
289
  },
291
290
  {
292
- "uuid": "da7c4aa4-bdaa-4006-89ef-7f93e7a0abf7",
293
- "slug": "allergies",
294
291
  "core": false,
295
- "unlocked_by": null,
296
292
  "difficulty": 4,
293
+ "slug": "allergies",
297
294
  "topics": [
298
- "Enumerations",
299
- "Bitwise operations",
300
- "Filtering"
301
- ]
295
+ "bitwise_operations",
296
+ "enumerations",
297
+ "filtering"
298
+ ],
299
+ "unlocked_by": null,
300
+ "uuid": "da7c4aa4-bdaa-4006-89ef-7f93e7a0abf7"
302
301
  },
303
302
  {
304
- "uuid": "cea2e160-2269-4dde-9063-734c72cb7255",
305
- "slug": "meetup",
306
303
  "core": false,
307
- "unlocked_by": null,
308
304
  "difficulty": 4,
305
+ "slug": "meetup",
309
306
  "topics": [
310
- "Dates"
311
- ]
307
+ "dates"
308
+ ],
309
+ "unlocked_by": null,
310
+ "uuid": "cea2e160-2269-4dde-9063-734c72cb7255"
312
311
  },
313
312
  {
314
- "uuid": "0a08a2f5-cb37-407d-9bf7-d499b0e16258",
315
- "slug": "anagram",
316
313
  "core": false,
317
- "unlocked_by": null,
318
314
  "difficulty": 4,
315
+ "slug": "anagram",
319
316
  "topics": [
320
- "Strings",
321
- "Filtering"
322
- ]
317
+ "filtering",
318
+ "strings"
319
+ ],
320
+ "unlocked_by": null,
321
+ "uuid": "0a08a2f5-cb37-407d-9bf7-d499b0e16258"
323
322
  },
324
323
  {
325
- "uuid": "1644b429-041b-4cdb-a023-e6ce74c8fc89",
326
- "slug": "acronym",
327
324
  "core": false,
328
- "unlocked_by": null,
329
325
  "difficulty": 4,
326
+ "slug": "acronym",
330
327
  "topics": [
331
- "Strings",
332
- "Transforming"
333
- ]
328
+ "strings",
329
+ "transforming"
330
+ ],
331
+ "unlocked_by": null,
332
+ "uuid": "1644b429-041b-4cdb-a023-e6ce74c8fc89"
334
333
  },
335
334
  {
336
- "uuid": "8fe580b5-23e5-4120-9b8b-bb43240da325",
337
- "slug": "all-your-base",
338
335
  "core": false,
339
- "unlocked_by": null,
340
336
  "difficulty": 4,
337
+ "slug": "all-your-base",
341
338
  "topics": [
342
- "Integers",
343
- "Transforming"
344
- ]
339
+ "integers",
340
+ "transforming"
341
+ ],
342
+ "unlocked_by": null,
343
+ "uuid": "8fe580b5-23e5-4120-9b8b-bb43240da325"
345
344
  },
346
345
  {
347
- "uuid": "12c53e14-9184-42ca-86a1-fc7cb8ae8401",
348
- "slug": "largest-series-product",
349
346
  "core": false,
350
- "unlocked_by": null,
351
347
  "difficulty": 4,
348
+ "slug": "largest-series-product",
352
349
  "topics": [
353
- "Strings",
354
- "Integers",
355
- "Transforming"
356
- ]
350
+ "integers",
351
+ "strings",
352
+ "transforming"
353
+ ],
354
+ "unlocked_by": null,
355
+ "uuid": "12c53e14-9184-42ca-86a1-fc7cb8ae8401"
357
356
  },
358
357
  {
359
- "uuid": "567478d0-b93b-48fe-a727-d1969f9097ad",
360
- "slug": "pangram",
361
358
  "core": false,
362
- "unlocked_by": null,
363
359
  "difficulty": 4,
360
+ "slug": "pangram",
364
361
  "topics": [
365
- "Strings",
366
- "Searching",
367
- "Transforming"
368
- ]
362
+ "searching",
363
+ "strings",
364
+ "transforming"
365
+ ],
366
+ "unlocked_by": null,
367
+ "uuid": "567478d0-b93b-48fe-a727-d1969f9097ad"
369
368
  },
370
369
  {
371
- "uuid": "a6b0237b-3eeb-449c-92dc-d950fd379713",
372
- "slug": "transpose",
373
370
  "core": false,
374
- "unlocked_by": null,
375
371
  "difficulty": 4,
372
+ "slug": "transpose",
376
373
  "topics": [
377
- "Strings",
378
- "Transforming"
379
- ]
374
+ "strings",
375
+ "transforming"
376
+ ],
377
+ "unlocked_by": null,
378
+ "uuid": "a6b0237b-3eeb-449c-92dc-d950fd379713"
380
379
  },
381
380
  {
382
- "uuid": "1674a32a-3b75-4c75-a90b-d06a9aa01b4c",
383
- "slug": "binary-search",
384
381
  "core": false,
385
- "unlocked_by": null,
386
382
  "difficulty": 4,
383
+ "slug": "binary-search",
387
384
  "topics": [
388
- "Integers",
389
- "Recursion",
390
- "Searching"
391
- ]
385
+ "integers",
386
+ "recursion",
387
+ "searching"
388
+ ],
389
+ "unlocked_by": null,
390
+ "uuid": "1674a32a-3b75-4c75-a90b-d06a9aa01b4c"
392
391
  },
393
392
  {
394
- "uuid": "74b484a9-ad9e-4fc1-820c-eb1bbb1fdb82",
395
- "slug": "crypto-square",
396
393
  "core": false,
397
- "unlocked_by": null,
398
394
  "difficulty": 4,
395
+ "slug": "crypto-square",
399
396
  "topics": [
400
- "Looping",
401
- "Transforming",
402
- "Strings"
403
- ]
397
+ "looping",
398
+ "strings",
399
+ "transforming"
400
+ ],
401
+ "unlocked_by": null,
402
+ "uuid": "74b484a9-ad9e-4fc1-820c-eb1bbb1fdb82"
404
403
  },
405
404
  {
406
- "uuid": "f00fe4b4-7caf-4fe0-b8e6-c1684f71c5f6",
407
- "slug": "pascals-triangle",
408
405
  "core": false,
409
- "unlocked_by": null,
410
406
  "difficulty": 4,
407
+ "slug": "pascals-triangle",
411
408
  "topics": [
412
- "Recursion",
413
- "Lists",
414
- "Mathematics"
415
- ]
409
+ "lists",
410
+ "mathematics",
411
+ "recursion"
412
+ ],
413
+ "unlocked_by": null,
414
+ "uuid": "f00fe4b4-7caf-4fe0-b8e6-c1684f71c5f6"
416
415
  },
417
416
  {
418
- "uuid": "5afbe74a-af64-4558-938b-d075bc4d1f61",
419
- "slug": "bracket-push",
420
417
  "core": false,
421
- "unlocked_by": null,
422
418
  "difficulty": 5,
419
+ "slug": "bracket-push",
423
420
  "topics": [
424
- "Strings",
425
- "Conditionals",
426
- "Looping"
427
- ]
421
+ "conditionals",
422
+ "looping",
423
+ "strings"
424
+ ],
425
+ "unlocked_by": null,
426
+ "uuid": "5afbe74a-af64-4558-938b-d075bc4d1f61"
428
427
  },
429
428
  {
430
- "uuid": "fd0b00f9-0c19-46be-8d34-0f86564bf35e",
431
- "slug": "roman-numerals",
432
429
  "core": false,
433
- "unlocked_by": null,
434
430
  "difficulty": 5,
431
+ "slug": "roman-numerals",
435
432
  "topics": [
436
- "Recursion",
437
- "Transforming"
438
- ]
433
+ "recursion",
434
+ "transforming"
435
+ ],
436
+ "unlocked_by": null,
437
+ "uuid": "fd0b00f9-0c19-46be-8d34-0f86564bf35e"
439
438
  },
440
439
  {
441
- "uuid": "aac1ae62-744a-468f-ba22-53be185c5a6f",
442
- "slug": "run-length-encoding",
443
440
  "core": false,
444
- "unlocked_by": null,
445
441
  "difficulty": 5,
442
+ "slug": "run-length-encoding",
446
443
  "topics": [
447
- "Algorithms",
448
- "Transforming"
449
- ]
444
+ "algorithms",
445
+ "transforming"
446
+ ],
447
+ "unlocked_by": null,
448
+ "uuid": "aac1ae62-744a-468f-ba22-53be185c5a6f"
450
449
  },
451
450
  {
452
- "uuid": "989aaedc-4836-4d75-8579-0ac177c58120",
453
- "slug": "luhn",
454
451
  "core": false,
455
- "unlocked_by": null,
456
452
  "difficulty": 5,
453
+ "slug": "luhn",
457
454
  "topics": [
458
- "Strings",
459
- "Algorithms",
460
- "Transforming"
461
- ]
455
+ "algorithms",
456
+ "strings",
457
+ "transforming"
458
+ ],
459
+ "unlocked_by": null,
460
+ "uuid": "989aaedc-4836-4d75-8579-0ac177c58120"
462
461
  },
463
462
  {
464
- "uuid": "cdc9a509-ded9-45b8-b8b1-5903016b77ad",
463
+ "core": false,
464
+ "difficulty": 2,
465
465
  "slug": "rna-transcription",
466
+ "topics": [
467
+ "conditionals",
468
+ "loops",
469
+ "strings",
470
+ "transforming"
471
+ ],
472
+ "unlocked_by": null,
473
+ "uuid": "cdc9a509-ded9-45b8-b8b1-5903016b77ad"
474
+ },
475
+ {
466
476
  "core": false,
477
+ "difficulty": 3,
478
+ "slug": "grains",
479
+ "topics": [
480
+ "integers"
481
+ ],
467
482
  "unlocked_by": null,
468
- "difficulty": 2,
483
+ "uuid": "f64b5655-0256-0580-a1dc-5b114910f0f36f0c255"
484
+ },
485
+ {
486
+ "uuid": "8e3d974c-0020-3880-e92e-af4fedd478e00ce788a",
487
+ "slug": "nth-prime",
488
+ "core": false,
489
+ "unlocked_by": null,
490
+ "difficulty": 4,
469
491
  "topics": [
470
- "Strings",
471
- "Conditionals",
472
492
  "Loops",
473
- "Transforming"
493
+ "Integers",
494
+ "Mathematics"
474
495
  ]
475
496
  }
476
497
  ],
477
- "foregone": [
478
-
479
- ]
480
- }
498
+ "foregone": [],
499
+ "language": "Objective-C"
500
+ }