trackler 2.2.1.47 → 2.2.1.48

Sign up to get free protection for your applications and to get access to all the features.
Files changed (277) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/pangram/canonical-data.json +3 -3
  4. data/tracks/common-lisp/.travis.yml +2 -9
  5. data/tracks/common-lisp/docs/TESTS.md +43 -9
  6. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +2 -2
  7. data/tracks/elixir/.travis.yml +4 -7
  8. data/tracks/elixir/README.md +2 -6
  9. data/tracks/elixir/bin/dialyzer_check.sh +2 -13
  10. data/tracks/elixir/exercises/allergies/example.exs +3 -2
  11. data/tracks/elixir/exercises/atbash-cipher/example.exs +5 -5
  12. data/tracks/elixir/exercises/bank-account/example.exs +11 -11
  13. data/tracks/elixir/exercises/bob/example.exs +4 -4
  14. data/tracks/elixir/exercises/forth/example.exs +66 -48
  15. data/tracks/elixir/exercises/minesweeper/example.exs +31 -18
  16. data/tracks/elixir/exercises/pangram/example.exs +4 -4
  17. data/tracks/elixir/exercises/queen-attack/queen_attack_test.exs +68 -53
  18. data/tracks/elixir/exercises/say/example.exs +33 -31
  19. data/tracks/elixir/exercises/scrabble-score/example.exs +12 -11
  20. data/tracks/elixir/mix.exs +10 -7
  21. data/tracks/elixir/mix.lock +4 -1
  22. data/tracks/erlang/README.md +2 -0
  23. data/tracks/fsharp/exercises/nth-prime/Example.fs +4 -1
  24. data/tracks/fsharp/exercises/nth-prime/NthPrime.fs +1 -1
  25. data/tracks/fsharp/exercises/nth-prime/NthPrimeTest.fs +12 -32
  26. data/tracks/fsharp/exercises/pangram/PangramTest.fs +3 -3
  27. data/tracks/fsharp/exercises/perfect-numbers/Example.fs +9 -6
  28. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fs +1 -1
  29. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbersTest.fs +55 -21
  30. data/tracks/fsharp/generators/Generators.fs +18 -0
  31. data/tracks/gnu-apl/config.json +21 -0
  32. data/tracks/gnu-apl/exercises/hamming/README.md +42 -0
  33. data/tracks/gnu-apl/exercises/hamming/hamming-example.apl +5 -0
  34. data/tracks/gnu-apl/exercises/hamming/hamming.tc +75 -0
  35. data/tracks/gnu-apl/exercises/hello-world/README.md +17 -1
  36. data/tracks/gnu-apl/exercises/leap/README.md +33 -0
  37. data/tracks/gnu-apl/exercises/raindrops/README.md +24 -0
  38. data/tracks/gnu-apl/exercises/raindrops/raindrops-example.apl +8 -0
  39. data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +60 -0
  40. data/tracks/gnu-apl/exercises/rna-transcription/README.md +25 -0
  41. data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription-example.apl +7 -0
  42. data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription.tc +41 -0
  43. data/tracks/gnu-apl/test.apl +13 -0
  44. data/tracks/haskell/config.json +9 -0
  45. data/tracks/haskell/exercises/rotational-cipher/README.md +91 -0
  46. data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/package.yaml +16 -0
  47. data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/src/RotationalCipher.hs +9 -0
  48. data/tracks/haskell/exercises/rotational-cipher/package.yaml +20 -0
  49. data/tracks/haskell/exercises/rotational-cipher/src/RotationalCipher.hs +4 -0
  50. data/tracks/haskell/exercises/rotational-cipher/stack.yaml +1 -0
  51. data/tracks/haskell/exercises/rotational-cipher/test/Tests.hs +77 -0
  52. data/tracks/java/config.json +23 -14
  53. data/tracks/java/config/exercise-readme-insert.md +3 -3
  54. data/tracks/java/config/exercise_readme.go.tmpl +3 -0
  55. data/tracks/java/exercises/accumulate/README.md +4 -3
  56. data/tracks/java/exercises/acronym/.meta/{.version → version} +0 -0
  57. data/tracks/java/exercises/acronym/README.md +4 -3
  58. data/tracks/java/exercises/all-your-base/.meta/{.version → version} +0 -0
  59. data/tracks/java/exercises/all-your-base/README.md +4 -3
  60. data/tracks/java/exercises/allergies/README.md +4 -3
  61. data/tracks/java/exercises/anagram/README.md +4 -3
  62. data/tracks/java/exercises/atbash-cipher/README.md +4 -3
  63. data/tracks/java/exercises/bank-account/README.md +6 -3
  64. data/tracks/java/exercises/beer-song/README.md +4 -3
  65. data/tracks/java/exercises/binary-search-tree/.meta/src/reference/java/BinarySearchTree.java +38 -44
  66. data/tracks/java/exercises/binary-search-tree/README.md +4 -3
  67. data/tracks/java/exercises/binary-search-tree/src/main/java/BinarySearchTree.java +35 -0
  68. data/tracks/java/exercises/binary-search-tree/src/test/java/BinarySearchTreeTest.java +46 -40
  69. data/tracks/java/exercises/binary-search/.meta/hints.md +25 -0
  70. data/tracks/java/exercises/binary-search/.meta/src/reference/java/BinarySearch.java +3 -7
  71. data/tracks/java/exercises/binary-search/README.md +33 -3
  72. data/tracks/java/exercises/binary-search/src/test/java/BinarySearchTest.java +11 -11
  73. data/tracks/java/exercises/binary/README.md +4 -3
  74. data/tracks/java/exercises/bob/README.md +4 -3
  75. data/tracks/java/exercises/book-store/README.md +4 -3
  76. data/tracks/java/exercises/bowling/README.md +4 -3
  77. data/tracks/java/exercises/bracket-push/README.md +4 -3
  78. data/tracks/java/exercises/change/.meta/{.version → version} +0 -0
  79. data/tracks/java/exercises/change/README.md +4 -3
  80. data/tracks/java/exercises/circular-buffer/README.md +4 -3
  81. data/tracks/java/exercises/clock/.meta/{.version → version} +0 -0
  82. data/tracks/java/exercises/clock/README.md +6 -3
  83. data/tracks/java/exercises/collatz-conjecture/.meta/{.version → version} +0 -0
  84. data/tracks/java/exercises/collatz-conjecture/README.md +4 -3
  85. data/tracks/java/exercises/complex-numbers/README.md +4 -3
  86. data/tracks/java/exercises/crypto-square/README.md +4 -3
  87. data/tracks/java/exercises/{rna-transcription/.meta/.version → custom-set/.meta/version} +0 -0
  88. data/tracks/java/exercises/custom-set/README.md +4 -3
  89. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +103 -251
  90. data/tracks/java/exercises/diamond/.meta/{.version → version} +0 -0
  91. data/tracks/java/exercises/diamond/README.md +4 -3
  92. data/tracks/java/exercises/difference-of-squares/.meta/{.version → version} +0 -0
  93. data/tracks/java/exercises/difference-of-squares/README.md +4 -3
  94. data/tracks/java/exercises/etl/README.md +4 -3
  95. data/tracks/java/exercises/flatten-array/.meta/{.version → version} +0 -0
  96. data/tracks/java/exercises/flatten-array/README.md +4 -3
  97. data/tracks/java/exercises/food-chain/README.md +4 -3
  98. data/tracks/java/exercises/forth/.meta/{.version → version} +0 -0
  99. data/tracks/java/exercises/forth/README.md +3 -3
  100. data/tracks/java/exercises/gigasecond/README.md +4 -3
  101. data/tracks/java/exercises/grade-school/README.md +4 -3
  102. data/tracks/java/exercises/hamming/.meta/{.version → version} +0 -0
  103. data/tracks/java/exercises/hamming/README.md +6 -3
  104. data/tracks/java/exercises/hello-world/README.md +6 -3
  105. data/tracks/java/exercises/hexadecimal/README.md +4 -3
  106. data/tracks/java/exercises/house/README.md +4 -3
  107. data/tracks/java/exercises/isogram/README.md +6 -3
  108. data/tracks/java/exercises/kindergarten-garden/README.md +4 -3
  109. data/tracks/java/exercises/largest-series-product/README.md +4 -3
  110. data/tracks/java/exercises/linked-list/README.md +4 -3
  111. data/tracks/java/exercises/list-ops/.meta/{.version → version} +0 -0
  112. data/tracks/java/exercises/list-ops/README.md +6 -3
  113. data/tracks/java/exercises/luhn/README.md +4 -3
  114. data/tracks/java/exercises/matrix/README.md +4 -3
  115. data/tracks/java/exercises/meetup/README.md +4 -3
  116. data/tracks/java/exercises/minesweeper/.meta/{.version → version} +0 -0
  117. data/tracks/java/exercises/minesweeper/README.md +4 -3
  118. data/tracks/java/exercises/nth-prime/README.md +4 -3
  119. data/tracks/java/exercises/nucleotide-count/README.md +4 -3
  120. data/tracks/java/exercises/ocr-numbers/README.md +4 -3
  121. data/tracks/java/exercises/octal/README.md +4 -3
  122. data/tracks/java/exercises/palindrome-products/README.md +4 -3
  123. data/tracks/java/exercises/pangram/.meta/{.version → version} +0 -0
  124. data/tracks/java/exercises/pangram/README.md +4 -3
  125. data/tracks/java/exercises/pascals-triangle/.meta/{.version → version} +0 -0
  126. data/tracks/java/exercises/pascals-triangle/README.md +4 -3
  127. data/tracks/java/exercises/perfect-numbers/.meta/{.version → version} +0 -0
  128. data/tracks/java/exercises/perfect-numbers/README.md +4 -3
  129. data/tracks/java/exercises/phone-number/README.md +4 -3
  130. data/tracks/java/exercises/pig-latin/README.md +4 -3
  131. data/tracks/java/exercises/poker/README.md +4 -3
  132. data/tracks/java/exercises/prime-factors/README.md +4 -3
  133. data/tracks/java/exercises/pythagorean-triplet/README.md +4 -3
  134. data/tracks/java/exercises/queen-attack/README.md +4 -3
  135. data/tracks/java/exercises/raindrops/README.md +4 -3
  136. data/tracks/java/exercises/rectangles/README.md +4 -3
  137. data/tracks/java/exercises/rna-transcription/.meta/version +1 -0
  138. data/tracks/java/exercises/rna-transcription/README.md +4 -3
  139. data/tracks/java/exercises/robot-name/README.md +4 -3
  140. data/tracks/java/exercises/robot-simulator/README.md +4 -3
  141. data/tracks/java/exercises/roman-numerals/README.md +4 -3
  142. data/tracks/java/exercises/rotational-cipher/README.md +4 -3
  143. data/tracks/java/exercises/run-length-encoding/README.md +4 -3
  144. data/tracks/java/exercises/saddle-points/.meta/{.version → version} +0 -0
  145. data/tracks/java/exercises/saddle-points/README.md +4 -3
  146. data/tracks/java/exercises/scrabble-score/.meta/{.version → version} +0 -0
  147. data/tracks/java/exercises/scrabble-score/README.md +4 -3
  148. data/tracks/java/exercises/secret-handshake/README.md +4 -3
  149. data/tracks/java/exercises/series/README.md +4 -3
  150. data/tracks/java/exercises/sieve/README.md +4 -3
  151. data/tracks/java/exercises/simple-cipher/README.md +6 -3
  152. data/tracks/java/exercises/simple-linked-list/README.md +4 -3
  153. data/tracks/java/exercises/space-age/README.md +4 -3
  154. data/tracks/java/exercises/spiral-matrix/.meta/{.version → version} +0 -0
  155. data/tracks/java/exercises/spiral-matrix/README.md +4 -3
  156. data/tracks/java/exercises/strain/README.md +4 -3
  157. data/tracks/java/exercises/sublist/README.md +4 -3
  158. data/tracks/java/exercises/sum-of-multiples/README.md +4 -3
  159. data/tracks/java/exercises/tournament/README.md +4 -3
  160. data/tracks/java/exercises/transpose/README.md +4 -3
  161. data/tracks/java/exercises/triangle/.meta/{.version → version} +0 -0
  162. data/tracks/java/exercises/triangle/README.md +4 -3
  163. data/tracks/java/exercises/trinary/README.md +4 -3
  164. data/tracks/java/exercises/twelve-days/README.md +4 -3
  165. data/tracks/java/exercises/two-fer/README.md +6 -3
  166. data/tracks/java/exercises/word-count/README.md +4 -3
  167. data/tracks/java/exercises/word-search/.meta/{.version → version} +0 -0
  168. data/tracks/java/exercises/word-search/README.md +4 -3
  169. data/tracks/java/exercises/wordy/README.md +4 -3
  170. data/tracks/julia/config.json +13 -0
  171. data/tracks/julia/exercises/phone-number/README.md +36 -0
  172. data/tracks/julia/exercises/phone-number/example.jl +18 -0
  173. data/tracks/julia/exercises/phone-number/phone-number.jl +3 -0
  174. data/tracks/julia/exercises/phone-number/runtests.jl +49 -0
  175. data/tracks/lua/config.json +505 -494
  176. data/tracks/lua/config/maintainers.json +16 -16
  177. data/tracks/lua/exercises/acronym/README.md +0 -1
  178. data/tracks/lua/exercises/all-your-base/README.md +1 -1
  179. data/tracks/lua/exercises/allergies/README.md +0 -1
  180. data/tracks/lua/exercises/alphametics/README.md +2 -2
  181. data/tracks/lua/exercises/atbash-cipher/README.md +2 -1
  182. data/tracks/lua/exercises/beer-song/README.md +1 -1
  183. data/tracks/lua/exercises/binary/README.md +2 -0
  184. data/tracks/lua/exercises/bowling/README.md +20 -6
  185. data/tracks/lua/exercises/change/README.md +1 -1
  186. data/tracks/lua/exercises/circular-buffer/README.md +13 -6
  187. data/tracks/lua/exercises/crypto-square/README.md +4 -4
  188. data/tracks/lua/exercises/diamond/README.md +6 -6
  189. data/tracks/lua/exercises/etl/README.md +2 -0
  190. data/tracks/lua/exercises/flatten-array/README.md +1 -2
  191. data/tracks/lua/exercises/food-chain/README.md +1 -1
  192. data/tracks/lua/exercises/grade-school/README.md +0 -1
  193. data/tracks/lua/exercises/grains/README.md +0 -1
  194. data/tracks/lua/exercises/house/README.md +1 -2
  195. data/tracks/lua/exercises/isogram/README.md +2 -1
  196. data/tracks/lua/exercises/kindergarten-garden/README.md +13 -13
  197. data/tracks/lua/exercises/leap/README.md +1 -1
  198. data/tracks/lua/exercises/linked-list/README.md +10 -10
  199. data/tracks/lua/exercises/luhn/README.md +7 -7
  200. data/tracks/lua/exercises/matrix/README.md +6 -4
  201. data/tracks/lua/exercises/meetup/README.md +1 -2
  202. data/tracks/lua/exercises/nucleotide-count/README.md +8 -22
  203. data/tracks/lua/exercises/ocr-numbers/README.md +5 -5
  204. data/tracks/lua/exercises/octal/README.md +6 -2
  205. data/tracks/lua/exercises/pangram/README.md +1 -1
  206. data/tracks/lua/exercises/pascals-triangle/README.md +1 -1
  207. data/tracks/lua/exercises/perfect-numbers/README.md +2 -2
  208. data/tracks/lua/exercises/phone-number/README.md +3 -2
  209. data/tracks/lua/exercises/pov/README.md +2 -2
  210. data/tracks/lua/exercises/protein-translation/README.md +4 -5
  211. data/tracks/lua/exercises/pythagorean-triplet/README.md +3 -3
  212. data/tracks/lua/exercises/rail-fence-cipher/README.md +12 -7
  213. data/tracks/lua/exercises/react/README.md +29 -0
  214. data/tracks/lua/exercises/react/example.lua +108 -0
  215. data/tracks/lua/exercises/react/react_spec.lua +160 -0
  216. data/tracks/lua/exercises/rectangles/README.md +7 -7
  217. data/tracks/lua/exercises/roman-numerals/README.md +1 -1
  218. data/tracks/lua/exercises/run-length-encoding/README.md +4 -4
  219. data/tracks/lua/exercises/scrabble-score/README.md +3 -1
  220. data/tracks/lua/exercises/secret-handshake/README.md +1 -1
  221. data/tracks/lua/exercises/space-age/README.md +2 -1
  222. data/tracks/lua/exercises/sum-of-multiples/README.md +0 -3
  223. data/tracks/lua/exercises/tournament/README.md +5 -5
  224. data/tracks/lua/exercises/transpose/README.md +7 -7
  225. data/tracks/lua/exercises/triangle/README.md +9 -6
  226. data/tracks/lua/exercises/variable-length-quantity/README.md +6 -7
  227. data/tracks/lua/exercises/word-count/README.md +1 -2
  228. data/tracks/lua/exercises/word-search/README.md +1 -1
  229. data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
  230. data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
  231. data/tracks/perl6/exercises/leap/example.yaml +1 -1
  232. data/tracks/perl6/exercises/leap/leap.t +3 -3
  233. data/tracks/php/exercises/transpose/example.php +37 -15
  234. data/tracks/php/exercises/transpose/transpose_test.php +205 -45
  235. data/tracks/purescript/config.json +11 -0
  236. data/tracks/purescript/exercises/collatz-conjecture/README.md +33 -0
  237. data/tracks/purescript/exercises/collatz-conjecture/bower.json +26 -0
  238. data/tracks/purescript/exercises/collatz-conjecture/examples/src/CollatzConjecture.purs +15 -0
  239. data/tracks/purescript/exercises/collatz-conjecture/src/CollatzConjecture.purs +3 -0
  240. data/tracks/purescript/exercises/collatz-conjecture/test/Main.purs +43 -0
  241. data/tracks/python/config.json +10 -2
  242. data/tracks/racket/README.md +38 -33
  243. data/tracks/racket/config.json +10 -0
  244. data/tracks/racket/exercises/collatz-conjecture/README.md +58 -0
  245. data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture-test.rkt +34 -0
  246. data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture.rkt +6 -0
  247. data/tracks/racket/exercises/collatz-conjecture/example.rkt +20 -0
  248. data/tracks/ruby/exercises/allergies/.meta/.version +1 -0
  249. data/tracks/ruby/exercises/allergies/.meta/generator/allergies_case.rb +33 -0
  250. data/tracks/ruby/exercises/allergies/.meta/solutions/allergies.rb +4 -0
  251. data/tracks/ruby/exercises/allergies/allergies_test.rb +42 -9
  252. data/tracks/typescript/config.json +46 -0
  253. data/tracks/typescript/exercises/circular-buffer/README.md +74 -0
  254. data/tracks/typescript/exercises/circular-buffer/circular-buffer.example.ts +51 -0
  255. data/tracks/typescript/exercises/circular-buffer/circular-buffer.test.ts +103 -0
  256. data/tracks/typescript/exercises/circular-buffer/circular-buffer.ts +0 -0
  257. data/tracks/typescript/exercises/circular-buffer/package.json +36 -0
  258. data/tracks/typescript/exercises/circular-buffer/tsconfig.json +22 -0
  259. data/tracks/typescript/exercises/circular-buffer/tslint.json +127 -0
  260. data/tracks/typescript/exercises/circular-buffer/yarn.lock +2305 -0
  261. data/tracks/typescript/exercises/largest-series-product/README.md +51 -0
  262. data/tracks/typescript/exercises/largest-series-product/largest-series-product.example.ts +52 -0
  263. data/tracks/typescript/exercises/largest-series-product/largest-series-product.test.ts +68 -0
  264. data/tracks/typescript/exercises/largest-series-product/largest-series-product.ts +0 -0
  265. data/tracks/typescript/exercises/largest-series-product/package.json +36 -0
  266. data/tracks/typescript/exercises/largest-series-product/tsconfig.json +22 -0
  267. data/tracks/typescript/exercises/largest-series-product/tslint.json +127 -0
  268. data/tracks/typescript/exercises/largest-series-product/yarn.lock +2305 -0
  269. data/tracks/typescript/exercises/robot-simulator/README.md +58 -0
  270. data/tracks/typescript/exercises/robot-simulator/package.json +36 -0
  271. data/tracks/typescript/exercises/robot-simulator/robot-simulator.example.ts +74 -0
  272. data/tracks/typescript/exercises/robot-simulator/robot-simulator.test.ts +150 -0
  273. data/tracks/typescript/exercises/robot-simulator/robot-simulator.ts +0 -0
  274. data/tracks/typescript/exercises/robot-simulator/tsconfig.json +22 -0
  275. data/tracks/typescript/exercises/robot-simulator/tslint.json +127 -0
  276. data/tracks/typescript/exercises/robot-simulator/yarn.lock +2305 -0
  277. metadata +85 -23
@@ -17,16 +17,17 @@ Examples:
17
17
  * A = [1, 2, 3, 4, 5], B = [2, 3, 4], A is a superlist of B
18
18
  * A = [1, 2, 4], B = [1, 2, 3, 4, 5], A is not a superlist of, sublist of or equal to B
19
19
 
20
+ # Running the tests
20
21
 
21
- To run the tests:
22
+ You can run all the tests for an exercise by entering
22
23
 
23
24
  ```sh
24
25
  $ gradle test
25
26
  ```
26
27
 
27
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
28
-
28
+ in your terminal.
29
29
 
30
30
 
31
31
  ## Submitting Incomplete Solutions
32
+
32
33
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -8,19 +8,20 @@ multiples of either 3 or 5, we get 3, 5, 6 and 9, 10, 12, 15, and 18.
8
8
 
9
9
  The sum of these multiples is 78.
10
10
 
11
+ # Running the tests
11
12
 
12
- To run the tests:
13
+ You can run all the tests for an exercise by entering
13
14
 
14
15
  ```sh
15
16
  $ gradle test
16
17
  ```
17
18
 
18
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
19
-
19
+ in your terminal.
20
20
 
21
21
  ## Source
22
22
 
23
23
  A variation on Problem 1 at Project Euler [http://projecteuler.net/problem=1](http://projecteuler.net/problem=1)
24
24
 
25
25
  ## Submitting Incomplete Solutions
26
+
26
27
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -64,16 +64,17 @@ Devastating Donkeys;Courageous Californians;draw
64
64
 
65
65
  Means that the Devastating Donkeys and Courageous Californians tied.
66
66
 
67
+ # Running the tests
67
68
 
68
- To run the tests:
69
+ You can run all the tests for an exercise by entering
69
70
 
70
71
  ```sh
71
72
  $ gradle test
72
73
  ```
73
74
 
74
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
75
-
75
+ in your terminal.
76
76
 
77
77
 
78
78
  ## Submitting Incomplete Solutions
79
+
79
80
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -58,19 +58,20 @@ In general, all characters from the input should also be present in the transpos
58
58
  That means that if a column in the input text contains only spaces on its bottom-most row(s),
59
59
  the corresponding output row should contain the spaces in its right-most column(s).
60
60
 
61
+ # Running the tests
61
62
 
62
- To run the tests:
63
+ You can run all the tests for an exercise by entering
63
64
 
64
65
  ```sh
65
66
  $ gradle test
66
67
  ```
67
68
 
68
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
69
-
69
+ in your terminal.
70
70
 
71
71
  ## Source
72
72
 
73
73
  Reddit r/dailyprogrammer challenge #270 [Easy]. [https://www.reddit.com/r/dailyprogrammer/comments/4msu2x/challenge_270_easy_transpose_the_input_text](https://www.reddit.com/r/dailyprogrammer/comments/4msu2x/challenge_270_easy_transpose_the_input_text)
74
74
 
75
75
  ## Submitting Incomplete Solutions
76
+
76
77
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -22,19 +22,20 @@ The case where the sum of the lengths of two sides _equals_ that of the
22
22
  third is known as a _degenerate_ triangle - it has zero area and looks like
23
23
  a single line. Feel free to add your own code/tests to check for degenerate triangles.
24
24
 
25
+ # Running the tests
25
26
 
26
- To run the tests:
27
+ You can run all the tests for an exercise by entering
27
28
 
28
29
  ```sh
29
30
  $ gradle test
30
31
  ```
31
32
 
32
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
33
-
33
+ in your terminal.
34
34
 
35
35
  ## Source
36
36
 
37
37
  The Ruby Koans triangle project, parts 1 & 2 [http://rubykoans.com](http://rubykoans.com)
38
38
 
39
39
  ## Submitting Incomplete Solutions
40
+
40
41
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -21,19 +21,20 @@ is the 3's place, the third to last is the 9's place, etc.
21
21
  If your language provides a method in the standard library to perform the
22
22
  conversion, pretend it doesn't exist and implement it yourself.
23
23
 
24
+ # Running the tests
24
25
 
25
- To run the tests:
26
+ You can run all the tests for an exercise by entering
26
27
 
27
28
  ```sh
28
29
  $ gradle test
29
30
  ```
30
31
 
31
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
32
-
32
+ in your terminal.
33
33
 
34
34
  ## Source
35
35
 
36
36
  All of Computer Science [http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-](http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-)
37
37
 
38
38
  ## Submitting Incomplete Solutions
39
+
39
40
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -28,19 +28,20 @@ On the eleventh day of Christmas my true love gave to me, eleven Pipers Piping,
28
28
  On the twelfth day of Christmas my true love gave to me, twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
29
29
  ```
30
30
 
31
+ # Running the tests
31
32
 
32
- To run the tests:
33
+ You can run all the tests for an exercise by entering
33
34
 
34
35
  ```sh
35
36
  $ gradle test
36
37
  ```
37
38
 
38
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
39
-
39
+ in your terminal.
40
40
 
41
41
  ## Source
42
42
 
43
43
  Wikipedia [http://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song)](http://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song))
44
44
 
45
45
  ## Submitting Incomplete Solutions
46
+
46
47
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -40,6 +40,8 @@ also important not to over-engineer a solution.
40
40
  It's important to remember that the goal is to make code as expressive and
41
41
  readable as we can.
42
42
 
43
+ # Java Tips
44
+
43
45
  Most Java exercises include multiple test cases. These cases are structured to
44
46
  support a useful process known as
45
47
  [test-driven development (TDD)](https://en.wikipedia.org/wiki/Test-driven_development).
@@ -80,19 +82,20 @@ steps:
80
82
  5. Return to step 1 until no tests are skipped and all tests pass!
81
83
 
82
84
 
85
+ # Running the tests
83
86
 
84
- To run the tests:
87
+ You can run all the tests for an exercise by entering
85
88
 
86
89
  ```sh
87
90
  $ gradle test
88
91
  ```
89
92
 
90
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
91
-
93
+ in your terminal.
92
94
 
93
95
  ## Source
94
96
 
95
97
  This is an exercise to introduce users to basic programming constructs, just after hello World. [https://en.wikipedia.org/wiki/Two-fer](https://en.wikipedia.org/wiki/Two-fer)
96
98
 
97
99
  ## Submitting Incomplete Solutions
100
+
98
101
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -11,19 +11,20 @@ come: 1
11
11
  free: 1
12
12
  ```
13
13
 
14
+ # Running the tests
14
15
 
15
- To run the tests:
16
+ You can run all the tests for an exercise by entering
16
17
 
17
18
  ```sh
18
19
  $ gradle test
19
20
  ```
20
21
 
21
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
22
-
22
+ in your terminal.
23
23
 
24
24
  ## Source
25
25
 
26
26
  This is a classic toy problem, but we were reminded of it by seeing it in the Go Tour.
27
27
 
28
28
  ## Submitting Incomplete Solutions
29
+
29
30
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -26,16 +26,17 @@ vertical and diagonal.
26
26
  Given a puzzle and a list of words return the location of the first and last
27
27
  letter of each word.
28
28
 
29
+ # Running the tests
29
30
 
30
- To run the tests:
31
+ You can run all the tests for an exercise by entering
31
32
 
32
33
  ```sh
33
34
  $ gradle test
34
35
  ```
35
36
 
36
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
37
-
37
+ in your terminal.
38
38
 
39
39
 
40
40
  ## Submitting Incomplete Solutions
41
+
41
42
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -51,19 +51,20 @@ If you'd like, handle exponentials.
51
51
 
52
52
  32
53
53
 
54
+ # Running the tests
54
55
 
55
- To run the tests:
56
+ You can run all the tests for an exercise by entering
56
57
 
57
58
  ```sh
58
59
  $ gradle test
59
60
  ```
60
61
 
61
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
62
-
62
+ in your terminal.
63
63
 
64
64
  ## Source
65
65
 
66
66
  Inspired by one of the generated questions in the Extreme Startup game. [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
67
67
 
68
68
  ## Submitting Incomplete Solutions
69
+
69
70
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -283,6 +283,19 @@
283
283
  "mathematics"
284
284
  ]
285
285
  },
286
+ {
287
+ "uuid": "2e39f242-0dac-ca80-0a59-15c1850d6617a864d57",
288
+ "slug": "phone-number",
289
+ "core": false,
290
+ "unlocked_by": null,
291
+ "difficulty": 1,
292
+ "topics": [
293
+ "pattern_matching",
294
+ "conditionals",
295
+ "strings",
296
+ "regular_expressions"
297
+ ]
298
+ },
286
299
  {
287
300
  "uuid": "e5a6d640-cd76-4453-8247-fd34ffed4fe5",
288
301
  "slug": "transpose",
@@ -0,0 +1,36 @@
1
+ # Phone Number
2
+
3
+ Clean up user-entered phone numbers so that they can be sent SMS messages.
4
+
5
+ The **North American Numbering Plan (NANP)** is a telephone numbering system used by many countries in North America like the United States, Canada or Bermuda. All NANP-countries share the same international country code: `1`.
6
+
7
+ NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
8
+
9
+ The format is usually represented as
10
+
11
+ ```text
12
+ (NXX)-NXX-XXXX
13
+ ```
14
+
15
+ where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
16
+
17
+ Your task is to clean up differently formated telephone numbers by removing punctuation and the country code (1) if present.
18
+
19
+ For example, the inputs
20
+ - `+1 (613)-995-0253`
21
+ - `613-995-0253`
22
+ - `1 613 995 0253`
23
+ - `613.995.0253`
24
+
25
+ should all produce the output
26
+
27
+ `6139950253`
28
+
29
+ **Note:** As this exercise only deals with telephone numbers used in NANP-countries, only 1 is considered a valid country code.
30
+ ## Source
31
+
32
+ Event Manager by JumpstartLab [http://tutorials.jumpstartlab.com/projects/eventmanager.html](http://tutorials.jumpstartlab.com/projects/eventmanager.html)
33
+
34
+
35
+ ## Submitting Incomplete Solutions
36
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,18 @@
1
+ function clean(phone_number)
2
+ # Main machinery is in the regex expression.
3
+ NXX = "[2-9][\\d]{2}"
4
+ country = "(?:\\+?1)?"
5
+ area = "\\(?\\s*($NXX)\\s*\\)?"
6
+ exchange = "($NXX)"
7
+ subscriber = "([\\d]{4})"
8
+ fillers = "\\s*(?:\\.|-)?\\s*"
9
+ r = Regex("^\\s*$country$fillers$area$fillers$exchange$fillers$subscriber\\s*\$")
10
+
11
+ result = match(r, phone_number)
12
+
13
+ if result != nothing
14
+ result = string(result.captures...)
15
+ end
16
+
17
+ return result
18
+ end
@@ -0,0 +1,3 @@
1
+ function clean(phone_number)
2
+
3
+ end
@@ -0,0 +1,49 @@
1
+ using Base.Test
2
+
3
+ include("phone-number.jl")
4
+
5
+
6
+ # Tests adapted from `problem-specifications//canonical-data.json` @ v1.2.0
7
+ # Returns the cleaned phone number as a digit string if given number is valid,
8
+ # else returns `nothing`.
9
+
10
+ const expected_number = "2234567890"
11
+ const valid_10digit_num = (
12
+ "(223) 456-7890",
13
+ "223.456.7890",
14
+ "223 456 7890 ",
15
+ )
16
+ const valid_11digit_num = (
17
+ "12234567890",
18
+ " 1 223 456 7890 ",
19
+ "+1 (223) 456-7890",
20
+ )
21
+ const invalid_num = (
22
+ "1223456789",
23
+ "22234567890",
24
+ "321234567890",
25
+ "223-abc-7890",
26
+ "223-@:!-7890",
27
+ "(023) 456-7890",
28
+ "(123) 456-7890",
29
+ "(223) 056-7890",
30
+ "(223) 156-7890",
31
+ )
32
+
33
+ @testset "clean 10-digit number" begin
34
+ @testset "$number" for number in valid_10digit_num
35
+ @test clean(number) == expected_number
36
+ end
37
+ end
38
+
39
+ @testset "clean 11-digit number starting with 1" begin
40
+ @testset "$number" for number in valid_11digit_num
41
+ @test clean(number) == expected_number
42
+ end
43
+ end
44
+
45
+ @testset "detect invalid number" begin
46
+ @testset "$number" for number in invalid_num
47
+ @test clean(number) == nothing
48
+ end
49
+ end
@@ -1,917 +1,928 @@
1
1
  {
2
- "language": "Lua",
3
2
  "active": true,
4
- "test_pattern": ".*spec[.]lua$",
5
3
  "exercises": [
6
4
  {
7
- "uuid": "9099df24-f9fb-4bd0-8b7f-df52efed7840",
8
- "slug": "hello-world",
9
5
  "core": true,
10
- "unlocked_by": null,
11
6
  "difficulty": 1,
7
+ "slug": "hello-world",
12
8
  "topics": [
13
- "control-flow (if-statements)",
14
- "optional values",
15
- "text formatting"
16
- ]
9
+ "control_flow_if_statements",
10
+ "optional_values",
11
+ "text_formatting"
12
+ ],
13
+ "unlocked_by": null,
14
+ "uuid": "9099df24-f9fb-4bd0-8b7f-df52efed7840"
17
15
  },
18
16
  {
19
- "uuid": "23fde0b3-c57b-439f-a9ad-3cd6ae286b62",
20
- "slug": "hamming",
21
17
  "core": true,
22
- "unlocked_by": null,
23
18
  "difficulty": 2,
19
+ "slug": "hamming",
24
20
  "topics": [
25
- "strings",
26
- "control-flow (loops)"
27
- ]
21
+ "control_flow_loops",
22
+ "strings"
23
+ ],
24
+ "unlocked_by": null,
25
+ "uuid": "23fde0b3-c57b-439f-a9ad-3cd6ae286b62"
28
26
  },
29
27
  {
30
- "uuid": "f38cd7b3-e1e6-4bcf-b1fe-c63ed94df636",
31
- "slug": "house",
32
28
  "core": true,
33
- "unlocked_by": null,
34
29
  "difficulty": 3,
30
+ "slug": "house",
35
31
  "topics": [
32
+ "control_flow_loops",
36
33
  "strings",
37
- "text formatting",
38
- "control-flow (loops)"
39
- ]
34
+ "text_formatting"
35
+ ],
36
+ "unlocked_by": null,
37
+ "uuid": "f38cd7b3-e1e6-4bcf-b1fe-c63ed94df636"
40
38
  },
41
39
  {
42
- "uuid": "faaa79ba-ddfa-42dd-8668-4aa811757dee",
43
- "slug": "raindrops",
44
40
  "core": false,
45
- "unlocked_by": "leap",
46
41
  "difficulty": 1,
42
+ "slug": "raindrops",
47
43
  "topics": [
48
- "strings",
49
- "control-flow (if-else statements)"
50
- ]
44
+ "control_flow_if_else_statements",
45
+ "strings"
46
+ ],
47
+ "unlocked_by": "leap",
48
+ "uuid": "faaa79ba-ddfa-42dd-8668-4aa811757dee"
51
49
  },
52
50
  {
53
- "uuid": "9646d991-e3ad-475e-9231-c5723a73e57b",
54
- "slug": "bob",
55
51
  "core": false,
56
- "unlocked_by": "leap",
57
52
  "difficulty": 3,
53
+ "slug": "bob",
58
54
  "topics": [
59
- "strings",
60
- "control-flow (if-else statements)"
61
- ]
55
+ "control_flow_if_else_statements",
56
+ "strings"
57
+ ],
58
+ "unlocked_by": "leap",
59
+ "uuid": "9646d991-e3ad-475e-9231-c5723a73e57b"
62
60
  },
63
61
  {
64
- "uuid": "b985299f-c6eb-487e-9900-1b35a6e66dea",
65
- "slug": "difference-of-squares",
66
62
  "core": true,
67
- "unlocked_by": null,
68
63
  "difficulty": 2,
64
+ "slug": "difference-of-squares",
69
65
  "topics": [
70
66
  "mathematics"
71
- ]
67
+ ],
68
+ "unlocked_by": null,
69
+ "uuid": "b985299f-c6eb-487e-9900-1b35a6e66dea"
72
70
  },
73
71
  {
74
- "uuid": "312d3e2f-ac24-4e06-8e6c-f4651124c516",
75
- "slug": "variable-length-quantity",
76
72
  "core": false,
77
- "unlocked_by": "run-length-encoding",
78
73
  "difficulty": 6,
74
+ "slug": "variable-length-quantity",
79
75
  "topics": [
80
- "control-flow (if-else statements)",
81
- "control-flow (loops)",
82
- "bitwise operations",
83
- "arrays"
84
- ]
76
+ "arrays",
77
+ "bitwise_operations",
78
+ "control_flow_if_else_statements",
79
+ "control_flow_loops"
80
+ ],
81
+ "unlocked_by": "run-length-encoding",
82
+ "uuid": "312d3e2f-ac24-4e06-8e6c-f4651124c516"
85
83
  },
86
84
  {
87
- "uuid": "c8ac2fca-fdec-4562-9c60-fdee5b541186",
88
- "slug": "anagram",
89
85
  "core": false,
90
- "unlocked_by": "isogram",
91
86
  "difficulty": 6,
87
+ "slug": "anagram",
92
88
  "topics": [
93
- "strings",
94
89
  "algorithms",
95
- "control-flow (if-else statements)",
96
- "control-flow (loops)"
97
- ]
90
+ "control_flow_if_else_statements",
91
+ "control_flow_loops",
92
+ "strings"
93
+ ],
94
+ "unlocked_by": "isogram",
95
+ "uuid": "c8ac2fca-fdec-4562-9c60-fdee5b541186"
98
96
  },
99
97
  {
100
- "uuid": "b64e6544-4778-40e8-a216-86df5c366c9c",
101
- "slug": "octal",
102
98
  "core": false,
103
- "unlocked_by": "binary",
104
99
  "difficulty": 4,
100
+ "slug": "octal",
105
101
  "topics": [
106
- "strings",
107
- "bitwise operations",
108
- "control-flow (if-else statements)",
109
- "control-flow (loops)"
110
- ]
102
+ "bitwise_operations",
103
+ "control_flow_if_else_statements",
104
+ "control_flow_loops",
105
+ "strings"
106
+ ],
107
+ "unlocked_by": "binary",
108
+ "uuid": "b64e6544-4778-40e8-a216-86df5c366c9c"
111
109
  },
112
110
  {
113
- "uuid": "2c50d23c-c15c-42d5-bc48-48afd21cdcf9",
114
- "slug": "binary-search",
115
111
  "core": true,
116
- "unlocked_by": null,
117
112
  "difficulty": 4,
113
+ "slug": "binary-search",
118
114
  "topics": [
119
- "arrays",
120
115
  "algorithms",
121
- "searching",
122
- "control-flow (if-else statements)",
123
- "control-flow (loops)"
124
- ]
116
+ "arrays",
117
+ "control_flow_if_else_statements",
118
+ "control_flow_loops",
119
+ "searching"
120
+ ],
121
+ "unlocked_by": null,
122
+ "uuid": "2c50d23c-c15c-42d5-bc48-48afd21cdcf9"
125
123
  },
126
124
  {
127
- "uuid": "25f501e6-40e8-4fd0-9dc3-ce5504d7a7a7",
128
- "slug": "bracket-push",
129
125
  "core": false,
130
- "unlocked_by": "binary-search",
131
126
  "difficulty": 5,
127
+ "slug": "bracket-push",
132
128
  "topics": [
133
- "stacks",
134
- "strings",
135
129
  "algorithms",
136
- "control-flow (if-else statements)",
137
- "control-flow (loops)"
138
- ]
130
+ "control_flow_if_else_statements",
131
+ "control_flow_loops",
132
+ "stacks",
133
+ "strings"
134
+ ],
135
+ "unlocked_by": "binary-search",
136
+ "uuid": "25f501e6-40e8-4fd0-9dc3-ce5504d7a7a7"
139
137
  },
140
138
  {
141
- "uuid": "c976a2aa-aaa8-42b5-9666-8f9d8b16b27c",
142
- "slug": "flatten-array",
143
139
  "core": false,
144
- "unlocked_by": "binary-search",
145
140
  "difficulty": 5,
141
+ "slug": "flatten-array",
146
142
  "topics": [
147
- "arrays",
148
- "recursion",
149
143
  "algorithms",
150
- "control-flow (if-else statements)",
151
- "control-flow (loops)"
152
- ]
144
+ "arrays",
145
+ "control_flow_if_else_statements",
146
+ "control_flow_loops",
147
+ "recursion"
148
+ ],
149
+ "unlocked_by": "binary-search",
150
+ "uuid": "c976a2aa-aaa8-42b5-9666-8f9d8b16b27c"
153
151
  },
154
152
  {
155
- "uuid": "a15f48db-7f35-4a20-8830-e3eb91db164f",
156
- "slug": "word-count",
157
153
  "core": false,
158
- "unlocked_by": "isogram",
159
154
  "difficulty": 3,
155
+ "slug": "word-count",
160
156
  "topics": [
161
- "strings",
162
- "control-flow (loops)"
163
- ]
157
+ "control_flow_loops",
158
+ "strings"
159
+ ],
160
+ "unlocked_by": "isogram",
161
+ "uuid": "a15f48db-7f35-4a20-8830-e3eb91db164f"
164
162
  },
165
163
  {
166
- "uuid": "32724558-411b-4945-95fe-aaf3eae6daf2",
167
- "slug": "pangram",
168
164
  "core": false,
169
- "unlocked_by": "isogram",
170
165
  "difficulty": 3,
166
+ "slug": "pangram",
171
167
  "topics": [
172
- "strings",
173
- "control-flow (if-else statements)",
174
- "control-flow (loops)"
175
- ]
168
+ "control_flow_if_else_statements",
169
+ "control_flow_loops",
170
+ "strings"
171
+ ],
172
+ "unlocked_by": "isogram",
173
+ "uuid": "32724558-411b-4945-95fe-aaf3eae6daf2"
176
174
  },
177
175
  {
178
- "uuid": "cfcefc94-cc73-4438-a62f-15c63a70bf5e",
179
- "slug": "matrix",
180
176
  "core": true,
181
- "unlocked_by": null,
182
177
  "difficulty": 3,
178
+ "slug": "matrix",
183
179
  "topics": [
184
- "matrices",
185
180
  "arrays",
186
- "control-flow (loops)"
187
- ]
181
+ "control_flow_loops",
182
+ "matrices"
183
+ ],
184
+ "unlocked_by": null,
185
+ "uuid": "cfcefc94-cc73-4438-a62f-15c63a70bf5e"
188
186
  },
189
187
  {
190
- "uuid": "38b18de8-d0d9-4a4d-934f-2893b1f1ce45",
191
- "slug": "beer-song",
192
188
  "core": false,
193
- "unlocked_by": "house",
194
189
  "difficulty": 3,
190
+ "slug": "beer-song",
195
191
  "topics": [
192
+ "control_flow_if_else_statements",
193
+ "control_flow_loops",
196
194
  "strings",
197
- "text formatting",
198
- "control-flow (if-else statements)",
199
- "control-flow (loops)"
200
- ]
195
+ "text_formatting"
196
+ ],
197
+ "unlocked_by": "house",
198
+ "uuid": "38b18de8-d0d9-4a4d-934f-2893b1f1ce45"
201
199
  },
202
200
  {
203
- "uuid": "3e70727a-1839-4ccf-8205-f2c8455cfdd1",
204
- "slug": "isogram",
205
201
  "core": true,
206
- "unlocked_by": null,
207
202
  "difficulty": 2,
203
+ "slug": "isogram",
208
204
  "topics": [
209
- "strings",
210
- "control-flow (if-else statements)",
211
- "control-flow (loops)"
212
- ]
205
+ "control_flow_if_else_statements",
206
+ "control_flow_loops",
207
+ "strings"
208
+ ],
209
+ "unlocked_by": null,
210
+ "uuid": "3e70727a-1839-4ccf-8205-f2c8455cfdd1"
213
211
  },
214
212
  {
215
- "uuid": "d781a53f-8eb8-44d0-8ded-57d943225604",
216
- "slug": "perfect-numbers",
217
213
  "core": false,
218
- "unlocked_by": "difference-of-squares",
219
214
  "difficulty": 3,
215
+ "slug": "perfect-numbers",
220
216
  "topics": [
221
- "mathematics",
222
- "control-flow (if-else statements)",
223
- "control-flow (loops)"
224
- ]
217
+ "control_flow_if_else_statements",
218
+ "control_flow_loops",
219
+ "mathematics"
220
+ ],
221
+ "unlocked_by": "difference-of-squares",
222
+ "uuid": "d781a53f-8eb8-44d0-8ded-57d943225604"
225
223
  },
226
224
  {
227
- "uuid": "c4846231-c68b-46cf-abe0-9e0b9f7c2825",
228
- "slug": "etl",
229
225
  "core": false,
230
- "unlocked_by": "list-ops",
231
226
  "difficulty": 3,
227
+ "slug": "etl",
232
228
  "topics": [
233
- "transforming",
234
- "control-flow (loops)"
235
- ]
229
+ "control_flow_loops",
230
+ "transforming"
231
+ ],
232
+ "unlocked_by": "list-ops",
233
+ "uuid": "c4846231-c68b-46cf-abe0-9e0b9f7c2825"
236
234
  },
237
235
  {
238
- "uuid": "903e3be6-cefd-4db5-b3dc-a325c4bcae7a",
239
- "slug": "nucleotide-count",
240
236
  "core": false,
241
- "unlocked_by": "hamming",
242
237
  "difficulty": 3,
238
+ "slug": "nucleotide-count",
243
239
  "topics": [
244
- "strings",
245
- "exception handling",
246
- "control-flow (loops)"
247
- ]
240
+ "control_flow_loops",
241
+ "exception_handling",
242
+ "strings"
243
+ ],
244
+ "unlocked_by": "hamming",
245
+ "uuid": "903e3be6-cefd-4db5-b3dc-a325c4bcae7a"
248
246
  },
249
247
  {
250
- "uuid": "50425ddf-fbec-4740-99eb-14cb7cc8a78a",
251
- "slug": "food-chain",
252
248
  "core": false,
253
- "unlocked_by": "house",
254
249
  "difficulty": 3,
250
+ "slug": "food-chain",
255
251
  "topics": [
256
- "strings",
257
- "control-flow (if-else statements)",
258
- "control-flow (loops)"
259
- ]
252
+ "control_flow_if_else_statements",
253
+ "control_flow_loops",
254
+ "strings"
255
+ ],
256
+ "unlocked_by": "house",
257
+ "uuid": "50425ddf-fbec-4740-99eb-14cb7cc8a78a"
260
258
  },
261
259
  {
262
- "uuid": "39bb7747-23e3-4d96-880d-2af302b0c328",
263
- "slug": "sum-of-multiples",
264
260
  "core": false,
265
- "unlocked_by": "difference-of-squares",
266
261
  "difficulty": 2,
262
+ "slug": "sum-of-multiples",
267
263
  "topics": [
268
- "mathematics",
269
- "control-flow (if-else statements)",
270
- "control-flow (loops)"
271
- ]
264
+ "control_flow_if_else_statements",
265
+ "control_flow_loops",
266
+ "mathematics"
267
+ ],
268
+ "unlocked_by": "difference-of-squares",
269
+ "uuid": "39bb7747-23e3-4d96-880d-2af302b0c328"
272
270
  },
273
271
  {
274
- "uuid": "a42ea84d-030a-446b-8537-0bef558320df",
275
- "slug": "rna-transcription",
276
272
  "core": false,
277
- "unlocked_by": "hamming",
278
273
  "difficulty": 3,
274
+ "slug": "rna-transcription",
279
275
  "topics": [
276
+ "control_flow_loops",
280
277
  "strings",
281
- "transforming",
282
- "control-flow (loops)"
283
- ]
278
+ "transforming"
279
+ ],
280
+ "unlocked_by": "hamming",
281
+ "uuid": "a42ea84d-030a-446b-8537-0bef558320df"
284
282
  },
285
283
  {
286
- "uuid": "c2130674-fe39-4e40-a1b5-b6b6ea24e255",
287
- "slug": "phone-number",
288
284
  "core": false,
289
- "unlocked_by": "allergies",
290
285
  "difficulty": 3,
286
+ "slug": "phone-number",
291
287
  "topics": [
288
+ "control_flow_if_else_statements",
292
289
  "strings",
293
- "text formatting",
294
- "control-flow (if-else statements)"
295
- ]
290
+ "text_formatting"
291
+ ],
292
+ "unlocked_by": "allergies",
293
+ "uuid": "c2130674-fe39-4e40-a1b5-b6b6ea24e255"
296
294
  },
297
295
  {
298
- "uuid": "ffde0b07-d6b1-4b55-94d9-ec564817cbb8",
299
- "slug": "bank-account",
300
296
  "core": true,
301
- "unlocked_by": null,
302
297
  "difficulty": 3,
298
+ "slug": "bank-account",
303
299
  "topics": [
304
300
  "classes",
305
- "control-flow (if-else statements)"
306
- ]
301
+ "control_flow_if_else_statements"
302
+ ],
303
+ "unlocked_by": null,
304
+ "uuid": "ffde0b07-d6b1-4b55-94d9-ec564817cbb8"
307
305
  },
308
306
  {
309
- "uuid": "7ffbdb77-a0a3-4bcf-8fb7-d3c34bdfcaf5",
310
- "slug": "protein-translation",
311
307
  "core": false,
312
- "unlocked_by": "hamming",
313
308
  "difficulty": 3,
309
+ "slug": "protein-translation",
314
310
  "topics": [
315
- "strings",
316
- "control-flow (if-else statements)",
317
- "control-flow (loops)",
318
- "exception handling"
319
- ]
311
+ "control_flow_if_else_statements",
312
+ "control_flow_loops",
313
+ "exception_handling",
314
+ "strings"
315
+ ],
316
+ "unlocked_by": "hamming",
317
+ "uuid": "7ffbdb77-a0a3-4bcf-8fb7-d3c34bdfcaf5"
320
318
  },
321
319
  {
322
- "uuid": "84f1b842-3c9b-4d96-93f1-e26577dc493f",
323
- "slug": "grade-school",
324
320
  "core": false,
325
- "unlocked_by": "bank-account",
326
321
  "difficulty": 4,
322
+ "slug": "grade-school",
327
323
  "topics": [
328
324
  "classes",
329
- "control-flow (if-else statements)"
330
- ]
325
+ "control_flow_if_else_statements"
326
+ ],
327
+ "unlocked_by": "bank-account",
328
+ "uuid": "84f1b842-3c9b-4d96-93f1-e26577dc493f"
331
329
  },
332
330
  {
333
- "uuid": "f141a9a3-af4b-4257-92b8-f850a987cf49",
334
- "slug": "nth-prime",
335
331
  "core": true,
336
- "unlocked_by": null,
337
332
  "difficulty": 4,
333
+ "slug": "nth-prime",
338
334
  "topics": [
339
- "mathematics",
340
- "control-flow (if-else statements)",
341
- "control-flow (loops)",
342
- "exception handling"
343
- ]
335
+ "control_flow_if_else_statements",
336
+ "control_flow_loops",
337
+ "exception_handling",
338
+ "mathematics"
339
+ ],
340
+ "unlocked_by": null,
341
+ "uuid": "f141a9a3-af4b-4257-92b8-f850a987cf49"
344
342
  },
345
343
  {
346
- "uuid": "1c624b3f-7cf6-4896-90ff-11aec0d37059",
347
- "slug": "diamond",
348
344
  "core": true,
349
- "unlocked_by": null,
350
345
  "difficulty": 4,
346
+ "slug": "diamond",
351
347
  "topics": [
352
- "control-flow (loops)",
348
+ "algorithms",
349
+ "control_flow_loops",
353
350
  "strings",
354
- "text formatting",
355
- "algorithms"
356
- ]
351
+ "text_formatting"
352
+ ],
353
+ "unlocked_by": null,
354
+ "uuid": "1c624b3f-7cf6-4896-90ff-11aec0d37059"
357
355
  },
358
356
  {
359
- "uuid": "d70fae4a-b8a0-41ab-856f-e078fcb2f85c",
360
- "slug": "run-length-encoding",
361
357
  "core": true,
362
- "unlocked_by": null,
363
358
  "difficulty": 5,
359
+ "slug": "run-length-encoding",
364
360
  "topics": [
365
- "strings",
366
361
  "algorithms",
367
- "text formatting",
368
- "control-flow (if-else statements)",
369
- "control-flow (loops)"
370
- ]
362
+ "control_flow_if_else_statements",
363
+ "control_flow_loops",
364
+ "strings",
365
+ "text_formatting"
366
+ ],
367
+ "unlocked_by": null,
368
+ "uuid": "d70fae4a-b8a0-41ab-856f-e078fcb2f85c"
371
369
  },
372
370
  {
373
- "uuid": "23120234-680d-4505-96e8-e87d669f0234",
374
- "slug": "sublist",
375
371
  "core": false,
376
- "unlocked_by": "list-ops",
377
372
  "difficulty": 4,
373
+ "slug": "sublist",
378
374
  "topics": [
379
375
  "arrays",
380
- "control-flow (if-else statements)",
381
- "control-flow (loops)"
382
- ]
376
+ "control_flow_if_else_statements",
377
+ "control_flow_loops"
378
+ ],
379
+ "unlocked_by": "list-ops",
380
+ "uuid": "23120234-680d-4505-96e8-e87d669f0234"
383
381
  },
384
382
  {
385
- "uuid": "4db71417-612a-41d2-9db4-d53fdc7d530c",
386
- "slug": "robot-name",
387
383
  "core": true,
388
- "unlocked_by": null,
389
384
  "difficulty": 4,
385
+ "slug": "robot-name",
390
386
  "topics": [
391
- "strings",
392
387
  "randomness",
393
- "text formatting"
394
- ]
388
+ "strings",
389
+ "text_formatting"
390
+ ],
391
+ "unlocked_by": null,
392
+ "uuid": "4db71417-612a-41d2-9db4-d53fdc7d530c"
395
393
  },
396
394
  {
397
- "uuid": "c603a44b-c027-4906-aaa9-11522a92e3cb",
398
- "slug": "robot-simulator",
399
395
  "core": false,
400
- "unlocked_by": "robot-name",
401
396
  "difficulty": 3,
397
+ "slug": "robot-simulator",
402
398
  "topics": [
403
- "strings",
404
399
  "classes",
405
- "exception handling"
406
- ]
400
+ "exception_handling",
401
+ "strings"
402
+ ],
403
+ "unlocked_by": "robot-name",
404
+ "uuid": "c603a44b-c027-4906-aaa9-11522a92e3cb"
407
405
  },
408
406
  {
409
- "uuid": "d9fbf011-73ea-4e00-b6e9-85d2418b8565",
410
- "slug": "pythagorean-triplet",
411
407
  "core": false,
412
- "unlocked_by": "difference-of-squares",
413
408
  "difficulty": 3,
409
+ "slug": "pythagorean-triplet",
414
410
  "topics": [
415
- "mathematics",
416
- "control-flow (if-else statements)",
417
- "control-flow (loops)"
418
- ]
411
+ "control_flow_if_else_statements",
412
+ "control_flow_loops",
413
+ "mathematics"
414
+ ],
415
+ "unlocked_by": "difference-of-squares",
416
+ "uuid": "d9fbf011-73ea-4e00-b6e9-85d2418b8565"
419
417
  },
420
418
  {
421
- "uuid": "79c25dc6-d2d5-4089-8016-9c01fc2e53f8",
422
- "slug": "leap",
423
419
  "core": true,
424
- "unlocked_by": null,
425
420
  "difficulty": 1,
421
+ "slug": "leap",
426
422
  "topics": [
427
- "logic",
428
- "control-flow (if-else statements)"
429
- ]
423
+ "control_flow_if_else_statements",
424
+ "logic"
425
+ ],
426
+ "unlocked_by": null,
427
+ "uuid": "79c25dc6-d2d5-4089-8016-9c01fc2e53f8"
430
428
  },
431
429
  {
432
- "uuid": "b10fd75b-53dd-4220-b76b-a2f1ed2d2ea2",
433
- "slug": "space-age",
434
430
  "core": false,
435
- "unlocked_by": "leap",
436
431
  "difficulty": 2,
432
+ "slug": "space-age",
437
433
  "topics": [
438
434
  "classes"
439
- ]
435
+ ],
436
+ "unlocked_by": "leap",
437
+ "uuid": "b10fd75b-53dd-4220-b76b-a2f1ed2d2ea2"
440
438
  },
441
439
  {
442
- "uuid": "2a38e35d-04ab-45b1-aaff-dab7c9b60306",
443
- "slug": "pascals-triangle",
444
440
  "core": false,
445
- "unlocked_by": "diamond",
446
441
  "difficulty": 5,
442
+ "slug": "pascals-triangle",
447
443
  "topics": [
448
- "mathematics",
449
- "control-flow (loops)"
450
- ]
444
+ "control_flow_loops",
445
+ "mathematics"
446
+ ],
447
+ "unlocked_by": "diamond",
448
+ "uuid": "2a38e35d-04ab-45b1-aaff-dab7c9b60306"
451
449
  },
452
450
  {
453
- "uuid": "4b5615e0-5c82-472e-84ed-f91b58ffc5c9",
454
- "slug": "sieve",
455
451
  "core": false,
456
- "unlocked_by": "nth-prime",
457
452
  "difficulty": 4,
453
+ "slug": "sieve",
458
454
  "topics": [
459
- "mathematics",
460
- "control-flow (if-else statements)",
461
- "control-flow (loops)"
462
- ]
455
+ "control_flow_if_else_statements",
456
+ "control_flow_loops",
457
+ "mathematics"
458
+ ],
459
+ "unlocked_by": "nth-prime",
460
+ "uuid": "4b5615e0-5c82-472e-84ed-f91b58ffc5c9"
463
461
  },
464
462
  {
465
- "uuid": "1430571b-001a-4298-b834-1b6342d1c89a",
466
- "slug": "grains",
467
463
  "core": false,
468
- "unlocked_by": "leap",
469
464
  "difficulty": 2,
465
+ "slug": "grains",
470
466
  "topics": [
471
- "control-flow (loops)"
472
- ]
467
+ "control_flow_loops"
468
+ ],
469
+ "unlocked_by": "leap",
470
+ "uuid": "1430571b-001a-4298-b834-1b6342d1c89a"
473
471
  },
474
472
  {
475
- "uuid": "40e73366-3ee5-4190-99bc-fad839c59a40",
476
- "slug": "kindergarten-garden",
477
473
  "core": false,
478
- "unlocked_by": "allergies",
479
474
  "difficulty": 5,
475
+ "slug": "kindergarten-garden",
480
476
  "topics": [
481
- "strings",
482
- "control-flow (if-else statements)",
483
- "control-flow (loops)"
484
- ]
477
+ "control_flow_if_else_statements",
478
+ "control_flow_loops",
479
+ "strings"
480
+ ],
481
+ "unlocked_by": "allergies",
482
+ "uuid": "40e73366-3ee5-4190-99bc-fad839c59a40"
485
483
  },
486
484
  {
487
- "uuid": "2530da0a-050c-472d-9f0c-cfe9045fb09f",
488
- "slug": "custom-set",
489
485
  "core": true,
490
- "unlocked_by": null,
491
486
  "difficulty": 6,
487
+ "slug": "custom-set",
492
488
  "topics": [
493
489
  "classes",
494
- "sets",
495
- "control-flow (if-else statements)",
496
- "control-flow (loops)"
497
- ]
490
+ "control_flow_if_else_statements",
491
+ "control_flow_loops",
492
+ "sets"
493
+ ],
494
+ "unlocked_by": null,
495
+ "uuid": "2530da0a-050c-472d-9f0c-cfe9045fb09f"
498
496
  },
499
497
  {
500
- "uuid": "abe93c0d-a99c-4b58-a86a-3f96df09a186",
501
- "slug": "gigasecond",
502
498
  "core": false,
503
- "unlocked_by": "leap",
504
499
  "difficulty": 2,
500
+ "slug": "gigasecond",
505
501
  "topics": [
506
502
  "time"
507
- ]
503
+ ],
504
+ "unlocked_by": "leap",
505
+ "uuid": "abe93c0d-a99c-4b58-a86a-3f96df09a186"
508
506
  },
509
507
  {
510
- "uuid": "d7f4c19a-ac4c-4622-a5dd-e43b883365b8",
511
- "slug": "word-search",
512
508
  "core": false,
513
- "unlocked_by": "matrix",
514
509
  "difficulty": 7,
510
+ "slug": "word-search",
515
511
  "topics": [
516
- "strings",
517
- "control-flow (if-else statements)",
518
- "control-flow (loops)"
519
- ]
512
+ "control_flow_if_else_statements",
513
+ "control_flow_loops",
514
+ "strings"
515
+ ],
516
+ "unlocked_by": "matrix",
517
+ "uuid": "d7f4c19a-ac4c-4622-a5dd-e43b883365b8"
520
518
  },
521
519
  {
522
- "uuid": "3f8cc956-0f54-441f-b25a-c97390750bb6",
523
- "slug": "luhn",
524
520
  "core": false,
525
- "unlocked_by": "run-length-encoding",
526
521
  "difficulty": 4,
522
+ "slug": "luhn",
527
523
  "topics": [
528
- "strings",
529
- "control-flow (if-else statements)",
530
- "control-flow (loops)"
531
- ]
524
+ "control_flow_if_else_statements",
525
+ "control_flow_loops",
526
+ "strings"
527
+ ],
528
+ "unlocked_by": "run-length-encoding",
529
+ "uuid": "3f8cc956-0f54-441f-b25a-c97390750bb6"
532
530
  },
533
531
  {
534
- "uuid": "f3963d89-aacd-4502-ab60-b2fb127b30a5",
535
- "slug": "triangle",
536
532
  "core": false,
537
- "unlocked_by": "difference-of-squares",
538
533
  "difficulty": 3,
534
+ "slug": "triangle",
539
535
  "topics": [
540
- "control-flow (if-else statements)",
541
- "exception handling"
542
- ]
536
+ "control_flow_if_else_statements",
537
+ "exception_handling"
538
+ ],
539
+ "unlocked_by": "difference-of-squares",
540
+ "uuid": "f3963d89-aacd-4502-ab60-b2fb127b30a5"
543
541
  },
544
542
  {
545
- "uuid": "a9e467c9-e820-49d8-aa45-542fcee4f112",
546
- "slug": "clock",
547
543
  "core": false,
548
- "unlocked_by": "bank-account",
549
544
  "difficulty": 3,
545
+ "slug": "clock",
550
546
  "topics": [
551
547
  "classes"
552
- ]
548
+ ],
549
+ "unlocked_by": "bank-account",
550
+ "uuid": "a9e467c9-e820-49d8-aa45-542fcee4f112"
553
551
  },
554
552
  {
555
- "uuid": "e96a4a0a-ac81-4969-ac50-93713958f06a",
556
- "slug": "series",
557
553
  "core": false,
558
- "unlocked_by": "list-ops",
559
554
  "difficulty": 4,
555
+ "slug": "series",
560
556
  "topics": [
561
- "coroutines",
562
557
  "arrays",
563
- "control-flow (loops)"
564
- ]
558
+ "control_flow_loops",
559
+ "coroutines"
560
+ ],
561
+ "unlocked_by": "list-ops",
562
+ "uuid": "e96a4a0a-ac81-4969-ac50-93713958f06a"
565
563
  },
566
564
  {
567
- "uuid": "530c358d-44e9-4b36-9ced-a1b633591a3d",
568
- "slug": "linked-list",
569
565
  "core": false,
570
- "unlocked_by": "custom-set",
571
566
  "difficulty": 4,
567
+ "slug": "linked-list",
572
568
  "topics": [
573
569
  "classes",
574
- "control-flow (if-else statements)",
575
- "control-flow (loops)"
576
- ]
570
+ "control_flow_if_else_statements",
571
+ "control_flow_loops"
572
+ ],
573
+ "unlocked_by": "custom-set",
574
+ "uuid": "530c358d-44e9-4b36-9ced-a1b633591a3d"
577
575
  },
578
576
  {
579
- "uuid": "91cff99a-b182-4a6d-befb-ce716d290996",
580
- "slug": "ocr-numbers",
581
577
  "core": false,
582
- "unlocked_by": "matrix",
583
578
  "difficulty": 7,
579
+ "slug": "ocr-numbers",
584
580
  "topics": [
585
- "strings",
586
- "control-flow (loops)"
587
- ]
581
+ "control_flow_loops",
582
+ "strings"
583
+ ],
584
+ "unlocked_by": "matrix",
585
+ "uuid": "91cff99a-b182-4a6d-befb-ce716d290996"
588
586
  },
589
587
  {
590
- "uuid": "464ef39f-8991-49f6-b6eb-5d811a262363",
591
- "slug": "pig-latin",
592
588
  "core": true,
593
- "unlocked_by": null,
594
589
  "difficulty": 5,
590
+ "slug": "pig-latin",
595
591
  "topics": [
592
+ "control_flow_if_else_statements",
593
+ "control_flow_loops",
596
594
  "strings",
597
- "text formatting",
598
- "control-flow (if-else statements)",
599
- "control-flow (loops)"
600
- ]
595
+ "text_formatting"
596
+ ],
597
+ "unlocked_by": null,
598
+ "uuid": "464ef39f-8991-49f6-b6eb-5d811a262363"
601
599
  },
602
600
  {
603
- "uuid": "f41c1b0e-26e7-43d5-b1d2-106c08d6fa4a",
604
- "slug": "minesweeper",
605
601
  "core": false,
606
- "unlocked_by": "matrix",
607
602
  "difficulty": 7,
603
+ "slug": "minesweeper",
608
604
  "topics": [
609
605
  "arrays",
610
- "strings",
611
- "control-flow (if-else statements)",
612
- "control-flow (loops)",
613
- "exception handling"
614
- ]
606
+ "control_flow_if_else_statements",
607
+ "control_flow_loops",
608
+ "exception_handling",
609
+ "strings"
610
+ ],
611
+ "unlocked_by": "matrix",
612
+ "uuid": "f41c1b0e-26e7-43d5-b1d2-106c08d6fa4a"
615
613
  },
616
614
  {
617
- "uuid": "058b40fe-9ca7-4082-a525-8b01b5d3a632",
618
- "slug": "crypto-square",
619
615
  "core": false,
620
- "unlocked_by": "run-length-encoding",
621
616
  "difficulty": 5,
617
+ "slug": "crypto-square",
622
618
  "topics": [
619
+ "control_flow_loops",
623
620
  "strings",
624
- "text formatting",
625
- "control-flow (loops)"
626
- ]
621
+ "text_formatting"
622
+ ],
623
+ "unlocked_by": "run-length-encoding",
624
+ "uuid": "058b40fe-9ca7-4082-a525-8b01b5d3a632"
627
625
  },
628
626
  {
629
- "uuid": "71a6d7d8-938b-4a8f-a216-ec0e8326ea52",
630
- "slug": "list-ops",
631
627
  "core": true,
632
- "unlocked_by": null,
633
628
  "difficulty": 4,
629
+ "slug": "list-ops",
634
630
  "topics": [
635
631
  "arrays",
636
- "filtering",
637
- "control-flow (loops)"
638
- ]
632
+ "control_flow_loops",
633
+ "filtering"
634
+ ],
635
+ "unlocked_by": null,
636
+ "uuid": "71a6d7d8-938b-4a8f-a216-ec0e8326ea52"
639
637
  },
640
638
  {
641
- "uuid": "bf78cd80-3f8d-4075-b893-ba4ded5bf179",
642
- "slug": "meetup",
643
639
  "core": false,
644
- "unlocked_by": "pig-latin",
645
640
  "difficulty": 6,
641
+ "slug": "meetup",
646
642
  "topics": [
647
- "time",
648
- "control-flow (if-statements)",
649
- "control-flow (loops)"
650
- ]
643
+ "control_flow_if_statements",
644
+ "control_flow_loops",
645
+ "time"
646
+ ],
647
+ "unlocked_by": "pig-latin",
648
+ "uuid": "bf78cd80-3f8d-4075-b893-ba4ded5bf179"
651
649
  },
652
650
  {
653
- "uuid": "49d08ed0-3a4a-44f6-beb3-ae086255e59f",
654
- "slug": "atbash-cipher",
655
651
  "core": false,
656
- "unlocked_by": "run-length-encoding",
657
652
  "difficulty": 3,
653
+ "slug": "atbash-cipher",
658
654
  "topics": [
655
+ "control_flow_loops",
659
656
  "strings",
660
- "text formatting",
661
- "control-flow (loops)"
662
- ]
657
+ "text_formatting"
658
+ ],
659
+ "unlocked_by": "run-length-encoding",
660
+ "uuid": "49d08ed0-3a4a-44f6-beb3-ae086255e59f"
663
661
  },
664
662
  {
665
- "uuid": "4ec23243-6401-4be7-9770-1cd235da0557",
666
- "slug": "scrabble-score",
667
663
  "core": false,
668
- "unlocked_by": "hamming",
669
664
  "difficulty": 3,
665
+ "slug": "scrabble-score",
670
666
  "topics": [
671
- "strings",
672
- "control-flow (loops)"
673
- ]
667
+ "control_flow_loops",
668
+ "strings"
669
+ ],
670
+ "unlocked_by": "hamming",
671
+ "uuid": "4ec23243-6401-4be7-9770-1cd235da0557"
674
672
  },
675
673
  {
676
- "uuid": "d2004df3-1cc5-4f78-a564-f66771425fd3",
677
- "slug": "largest-series-product",
678
674
  "core": false,
679
- "unlocked_by": "difference-of-squares",
680
675
  "difficulty": 5,
676
+ "slug": "largest-series-product",
681
677
  "topics": [
682
- "control-flow (loops)",
683
- "exception handling"
684
- ]
678
+ "control_flow_loops",
679
+ "exception_handling"
680
+ ],
681
+ "unlocked_by": "difference-of-squares",
682
+ "uuid": "d2004df3-1cc5-4f78-a564-f66771425fd3"
685
683
  },
686
684
  {
687
- "uuid": "d1fedc2b-9771-49b5-b253-05e1337448c6",
688
- "slug": "rail-fence-cipher",
689
685
  "core": false,
690
- "unlocked_by": "run-length-encoding",
691
686
  "difficulty": 7,
687
+ "slug": "rail-fence-cipher",
692
688
  "topics": [
689
+ "control_flow_if_else_statements",
690
+ "control_flow_loops",
693
691
  "strings",
694
- "text formatting",
695
- "control-flow (if-else statements)",
696
- "control-flow (loops)"
697
- ]
692
+ "text_formatting"
693
+ ],
694
+ "unlocked_by": "run-length-encoding",
695
+ "uuid": "d1fedc2b-9771-49b5-b253-05e1337448c6"
698
696
  },
699
697
  {
700
- "uuid": "5e38f418-d279-4d2f-a035-f440e59c4635",
701
- "slug": "roman-numerals",
702
698
  "core": false,
703
- "unlocked_by": "leap",
704
699
  "difficulty": 4,
700
+ "slug": "roman-numerals",
705
701
  "topics": [
702
+ "control_flow_loops",
706
703
  "strings",
707
- "text formatting",
708
- "control-flow (loops)"
709
- ]
704
+ "text_formatting"
705
+ ],
706
+ "unlocked_by": "leap",
707
+ "uuid": "5e38f418-d279-4d2f-a035-f440e59c4635"
710
708
  },
711
709
  {
712
- "uuid": "a54806a0-d17c-4ae9-a48e-bc587eab93ea",
713
- "slug": "transpose",
714
710
  "core": false,
715
- "unlocked_by": "matrix",
716
711
  "difficulty": 7,
712
+ "slug": "transpose",
717
713
  "topics": [
718
- "strings",
719
714
  "algorithms",
720
- "control-flow (loops)"
721
- ]
715
+ "control_flow_loops",
716
+ "strings"
717
+ ],
718
+ "unlocked_by": "matrix",
719
+ "uuid": "a54806a0-d17c-4ae9-a48e-bc587eab93ea"
722
720
  },
723
721
  {
724
- "uuid": "d4a793a8-bd4a-478d-a4e2-ee20dd4b6085",
725
- "slug": "tournament",
726
722
  "core": false,
727
- "unlocked_by": "allergies",
728
723
  "difficulty": 5,
724
+ "slug": "tournament",
729
725
  "topics": [
730
726
  "arrays",
727
+ "control_flow_loops",
731
728
  "strings",
732
- "text formatting",
733
- "text parsing",
734
- "control-flow (loops)"
735
- ]
729
+ "text_formatting",
730
+ "text_parsing"
731
+ ],
732
+ "unlocked_by": "allergies",
733
+ "uuid": "d4a793a8-bd4a-478d-a4e2-ee20dd4b6085"
736
734
  },
737
735
  {
738
- "uuid": "5b636f8a-37ba-412d-b957-633caac86369",
739
- "slug": "circular-buffer",
740
736
  "core": false,
741
- "unlocked_by": "custom-set",
742
737
  "difficulty": 4,
738
+ "slug": "circular-buffer",
743
739
  "topics": [
744
740
  "classes",
745
- "control-flow (if-else statements)",
746
- "exception handling"
747
- ]
741
+ "control_flow_if_else_statements",
742
+ "exception_handling"
743
+ ],
744
+ "unlocked_by": "custom-set",
745
+ "uuid": "5b636f8a-37ba-412d-b957-633caac86369"
748
746
  },
749
747
  {
750
- "uuid": "84715ca7-b4cb-41bd-a5f0-1c45e372d834",
751
- "slug": "binary-search-tree",
752
748
  "core": false,
753
- "unlocked_by": "binary-search",
754
749
  "difficulty": 5,
750
+ "slug": "binary-search-tree",
755
751
  "topics": [
756
- "coroutines",
757
- "trees",
758
752
  "algorithms",
759
- "searching",
753
+ "coroutines",
754
+ "exception_handling",
760
755
  "recursion",
761
- "exception handling"
762
- ]
756
+ "searching",
757
+ "trees"
758
+ ],
759
+ "unlocked_by": "binary-search",
760
+ "uuid": "84715ca7-b4cb-41bd-a5f0-1c45e372d834"
763
761
  },
764
762
  {
765
- "uuid": "6132095c-964f-4d58-9555-b4c77818e6d2",
766
- "slug": "bowling",
767
763
  "core": false,
768
- "unlocked_by": "allergies",
769
764
  "difficulty": 4,
765
+ "slug": "bowling",
770
766
  "topics": [
771
767
  "algorithms",
772
- "control-flow (if-else statements)",
773
- "exception handling"
774
- ]
768
+ "control_flow_if_else_statements",
769
+ "exception_handling"
770
+ ],
771
+ "unlocked_by": "allergies",
772
+ "uuid": "6132095c-964f-4d58-9555-b4c77818e6d2"
775
773
  },
776
774
  {
777
- "uuid": "90fe2b43-5f4e-42fe-89ad-4fff49ccbb53",
778
- "slug": "binary",
779
775
  "core": true,
780
- "unlocked_by": null,
781
776
  "difficulty": 3,
777
+ "slug": "binary",
782
778
  "topics": [
783
- "strings",
784
- "bitwise operations",
785
- "control-flow (if-else statements)",
786
- "control-flow (loops)"
787
- ]
779
+ "bitwise_operations",
780
+ "control_flow_if_else_statements",
781
+ "control_flow_loops",
782
+ "strings"
783
+ ],
784
+ "unlocked_by": null,
785
+ "uuid": "90fe2b43-5f4e-42fe-89ad-4fff49ccbb53"
788
786
  },
789
787
  {
790
- "uuid": "26ea07b8-2658-47c2-9218-059c168ba1ea",
791
- "slug": "alphametics",
792
788
  "core": false,
793
- "unlocked_by": "matrix",
794
789
  "difficulty": 8,
790
+ "slug": "alphametics",
795
791
  "topics": [
796
- "strings",
797
792
  "algorithms",
793
+ "control_flow_if_else_statements",
794
+ "control_flow_loops",
798
795
  "performance",
799
- "control-flow (if-else statements)",
800
- "control-flow (loops)"
801
- ]
796
+ "strings"
797
+ ],
798
+ "unlocked_by": "matrix",
799
+ "uuid": "26ea07b8-2658-47c2-9218-059c168ba1ea"
802
800
  },
803
801
  {
804
- "uuid": "0f85f581-0077-447e-a5f4-7b58c1b4b7a8",
805
- "slug": "prime-factors",
806
802
  "core": false,
807
- "unlocked_by": "nth-prime",
808
803
  "difficulty": 4,
804
+ "slug": "prime-factors",
809
805
  "topics": [
810
- "mathematics",
811
- "control-flow (if-else statements)",
812
- "control-flow (loops)"
813
- ]
806
+ "control_flow_if_else_statements",
807
+ "control_flow_loops",
808
+ "mathematics"
809
+ ],
810
+ "unlocked_by": "nth-prime",
811
+ "uuid": "0f85f581-0077-447e-a5f4-7b58c1b4b7a8"
814
812
  },
815
813
  {
816
- "uuid": "3f8c4f1b-b0b7-4f6e-8cd9-d5e252737ebb",
817
- "slug": "acronym",
818
814
  "core": false,
819
- "unlocked_by": "isogram",
820
815
  "difficulty": 4,
816
+ "slug": "acronym",
821
817
  "topics": [
822
- "strings",
823
- "control-flow (loops)"
824
- ]
818
+ "control_flow_loops",
819
+ "strings"
820
+ ],
821
+ "unlocked_by": "isogram",
822
+ "uuid": "3f8c4f1b-b0b7-4f6e-8cd9-d5e252737ebb"
825
823
  },
826
824
  {
827
- "uuid": "1ee89535-3e91-4404-9116-adcbf87f2390",
828
- "slug": "all-your-base",
829
825
  "core": false,
830
- "unlocked_by": "binary",
831
826
  "difficulty": 4,
827
+ "slug": "all-your-base",
832
828
  "topics": [
833
- "mathematics",
834
829
  "arrays",
835
- "control-flow (loops)"
836
- ]
830
+ "control_flow_loops",
831
+ "mathematics"
832
+ ],
833
+ "unlocked_by": "binary",
834
+ "uuid": "1ee89535-3e91-4404-9116-adcbf87f2390"
837
835
  },
838
836
  {
839
- "uuid": "6f2e38ae-57d8-4b4e-b1db-ae35c066ece4",
840
- "slug": "rectangles",
841
837
  "core": false,
842
- "unlocked_by": "matrix",
843
838
  "difficulty": 8,
839
+ "slug": "rectangles",
844
840
  "topics": [
845
- "strings",
841
+ "algorithms",
842
+ "control_flow_if_else_statements",
843
+ "control_flow_loops",
846
844
  "performance",
847
- "control-flow (if-else statements)",
848
- "control-flow (loops)",
849
- "algorithms"
850
- ]
845
+ "strings"
846
+ ],
847
+ "unlocked_by": "matrix",
848
+ "uuid": "6f2e38ae-57d8-4b4e-b1db-ae35c066ece4"
851
849
  },
852
850
  {
853
- "uuid": "6e7a0d97-580b-4b21-bcad-e89e0473d507",
854
- "slug": "allergies",
855
851
  "core": true,
856
- "unlocked_by": null,
857
852
  "difficulty": 4,
853
+ "slug": "allergies",
858
854
  "topics": [
859
- "bitwise operations",
860
- "control-flow (if-else statements)",
861
- "control-flow (loops)"
862
- ]
855
+ "bitwise_operations",
856
+ "control_flow_if_else_statements",
857
+ "control_flow_loops"
858
+ ],
859
+ "unlocked_by": null,
860
+ "uuid": "6e7a0d97-580b-4b21-bcad-e89e0473d507"
863
861
  },
864
862
  {
865
- "uuid": "7159ffe2-3f5f-4d12-8a38-843452ef5d7e",
866
- "slug": "say",
867
863
  "core": false,
868
- "unlocked_by": "pig-latin",
869
864
  "difficulty": 7,
865
+ "slug": "say",
870
866
  "topics": [
867
+ "control_flow_loops",
871
868
  "strings",
872
- "text formatting",
873
- "control-flow (loops)"
874
- ]
869
+ "text_formatting"
870
+ ],
871
+ "unlocked_by": "pig-latin",
872
+ "uuid": "7159ffe2-3f5f-4d12-8a38-843452ef5d7e"
875
873
  },
876
874
  {
877
- "uuid": "ba763756-e934-473f-a01c-a7c9ea0a971d",
878
- "slug": "pov",
879
875
  "core": false,
880
- "unlocked_by": "binary-search",
881
876
  "difficulty": 9,
877
+ "slug": "pov",
882
878
  "topics": [
883
- "graphs",
884
879
  "algorithms",
885
- "control-flow (if-else statements)",
886
- "control-flow (loops)",
887
- "exception handling"
888
- ]
880
+ "control_flow_if_else_statements",
881
+ "control_flow_loops",
882
+ "exception_handling",
883
+ "graphs"
884
+ ],
885
+ "unlocked_by": "binary-search",
886
+ "uuid": "ba763756-e934-473f-a01c-a7c9ea0a971d"
889
887
  },
890
888
  {
891
- "uuid": "790d60b6-a64e-482f-8c2b-3e2442ac0b4e",
892
- "slug": "change",
893
889
  "core": false,
894
- "unlocked_by": "binary-search",
895
890
  "difficulty": 4,
891
+ "slug": "change",
896
892
  "topics": [
897
- "control-flow (if-else statements)",
898
- "control-flow (loops)"
899
- ]
893
+ "control_flow_if_else_statements",
894
+ "control_flow_loops"
895
+ ],
896
+ "unlocked_by": "binary-search",
897
+ "uuid": "790d60b6-a64e-482f-8c2b-3e2442ac0b4e"
900
898
  },
901
899
  {
902
- "uuid": "a608af44-59df-425d-a652-163635bf740e",
903
- "slug": "secret-handshake",
904
900
  "core": false,
905
- "unlocked_by": "leap",
906
901
  "difficulty": 3,
902
+ "slug": "secret-handshake",
907
903
  "topics": [
908
- "control-flow (if-else statements)",
909
904
  "arrays",
910
- "bitwise operations"
911
- ]
905
+ "bitwise_operations",
906
+ "control_flow_if_else_statements"
907
+ ],
908
+ "unlocked_by": "leap",
909
+ "uuid": "a608af44-59df-425d-a652-163635bf740e"
910
+ },
911
+ {
912
+ "core": false,
913
+ "difficulty": 8,
914
+ "slug": "react",
915
+ "topics": [
916
+ "control_flow_if_else_statements",
917
+ "control_flow_loops",
918
+ "functions",
919
+ "graphs"
920
+ ],
921
+ "unlocked_by": "matrix",
922
+ "uuid": "beca7d79-9237-4344-b058-66e0fa840691"
912
923
  }
913
924
  ],
914
- "foregone": [
915
-
916
- ]
917
- }
925
+ "foregone": [],
926
+ "language": "Lua",
927
+ "test_pattern": ".*spec[.]lua$"
928
+ }