trackler 2.2.1.109 → 2.2.1.110

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/tracks/c/config.json +2 -0
  4. data/tracks/clojure/exercises/armstrong-numbers/test/armstrong_numbers_test.clj +1 -1
  5. data/tracks/elixir/.formatter.exs +3 -0
  6. data/tracks/elixir/exercises/accumulate/accumulate_test.exs +8 -8
  7. data/tracks/elixir/exercises/acronym/acronym_test.exs +2 -2
  8. data/tracks/elixir/exercises/acronym/example.exs +3 -4
  9. data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +2 -2
  10. data/tracks/elixir/exercises/all-your-base/example.exs +14 -7
  11. data/tracks/elixir/exercises/allergies/allergies.exs +2 -4
  12. data/tracks/elixir/exercises/allergies/allergies_test.exs +17 -11
  13. data/tracks/elixir/exercises/anagram/anagram.exs +1 -2
  14. data/tracks/elixir/exercises/anagram/anagram_test.exs +13 -13
  15. data/tracks/elixir/exercises/anagram/example.exs +2 -1
  16. data/tracks/elixir/exercises/atbash-cipher/atbash_cipher.exs +2 -2
  17. data/tracks/elixir/exercises/atbash-cipher/atbash_cipher_test.exs +2 -2
  18. data/tracks/elixir/exercises/bank-account/bank_account_test.exs +10 -5
  19. data/tracks/elixir/exercises/beer-song/beer_song.exs +2 -2
  20. data/tracks/elixir/exercises/beer-song/beer_song_test.exs +225 -225
  21. data/tracks/elixir/exercises/beer-song/example.exs +5 -3
  22. data/tracks/elixir/exercises/binary-search-tree/binary_search_tree_test.exs +2 -2
  23. data/tracks/elixir/exercises/binary-search-tree/example.exs +1 -1
  24. data/tracks/elixir/exercises/binary-search/binary_search.exs +0 -1
  25. data/tracks/elixir/exercises/binary-search/binary_search_test.exs +2 -2
  26. data/tracks/elixir/exercises/binary-search/example.exs +3 -1
  27. data/tracks/elixir/exercises/binary/binary.exs +1 -1
  28. data/tracks/elixir/exercises/binary/binary_test.exs +2 -2
  29. data/tracks/elixir/exercises/binary/example.exs +2 -2
  30. data/tracks/elixir/exercises/bob/bob.exs +1 -2
  31. data/tracks/elixir/exercises/bob/bob_test.exs +2 -2
  32. data/tracks/elixir/exercises/bowling/bowling.exs +2 -3
  33. data/tracks/elixir/exercises/bowling/bowling_test.exs +54 -275
  34. data/tracks/elixir/exercises/bowling/example.exs +24 -10
  35. data/tracks/elixir/exercises/bracket-push/bracket_push.exs +1 -2
  36. data/tracks/elixir/exercises/bracket-push/bracket_push_test.exs +5 -3
  37. data/tracks/elixir/exercises/bracket-push/example.exs +8 -3
  38. data/tracks/elixir/exercises/change/change.exs +1 -2
  39. data/tracks/elixir/exercises/change/change_test.exs +2 -2
  40. data/tracks/elixir/exercises/change/example.exs +5 -1
  41. data/tracks/elixir/exercises/clock/clock_test.exs +8 -8
  42. data/tracks/elixir/exercises/clock/example.exs +5 -3
  43. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture.exs +0 -1
  44. data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture_test.exs +3 -3
  45. data/tracks/elixir/exercises/collatz-conjecture/example.exs +1 -1
  46. data/tracks/elixir/exercises/connect/connect.exs +1 -2
  47. data/tracks/elixir/exercises/connect/connect_test.exs +40 -30
  48. data/tracks/elixir/exercises/connect/example.exs +12 -10
  49. data/tracks/elixir/exercises/crypto-square/crypto_square.exs +1 -2
  50. data/tracks/elixir/exercises/crypto-square/crypto_square_test.exs +2 -2
  51. data/tracks/elixir/exercises/crypto-square/example.exs +6 -5
  52. data/tracks/elixir/exercises/custom-set/custom_set.exs +1 -1
  53. data/tracks/elixir/exercises/custom-set/custom_set_test.exs +2 -2
  54. data/tracks/elixir/exercises/custom-set/example.exs +5 -4
  55. data/tracks/elixir/exercises/diamond/diamond.exs +1 -2
  56. data/tracks/elixir/exercises/diamond/diamond_test.exs +20 -18
  57. data/tracks/elixir/exercises/diamond/example.exs +10 -10
  58. data/tracks/elixir/exercises/difference-of-squares/difference_of_squares.exs +1 -5
  59. data/tracks/elixir/exercises/difference-of-squares/difference_of_squares_test.exs +5 -6
  60. data/tracks/elixir/exercises/difference-of-squares/example.exs +3 -4
  61. data/tracks/elixir/exercises/diffie-hellman/diffie_hellman.exs +7 -3
  62. data/tracks/elixir/exercises/diffie-hellman/diffie_hellman_test.exs +43 -23
  63. data/tracks/elixir/exercises/diffie-hellman/example.exs +10 -6
  64. data/tracks/elixir/exercises/dominoes/dominoes.exs +0 -1
  65. data/tracks/elixir/exercises/dominoes/dominoes_test.exs +16 -6
  66. data/tracks/elixir/exercises/dominoes/example.exs +9 -5
  67. data/tracks/elixir/exercises/dot-dsl/dot.exs +0 -1
  68. data/tracks/elixir/exercises/dot-dsl/dot_dsl_test.exs +107 -58
  69. data/tracks/elixir/exercises/dot-dsl/example.exs +18 -10
  70. data/tracks/elixir/exercises/etl/etl.exs +0 -1
  71. data/tracks/elixir/exercises/etl/etl_test.exs +34 -13
  72. data/tracks/elixir/exercises/etl/example.exs +6 -6
  73. data/tracks/elixir/exercises/flatten-array/flatten_array.exs +0 -1
  74. data/tracks/elixir/exercises/flatten-array/flatten_array_test.exs +8 -8
  75. data/tracks/elixir/exercises/forth/example.exs +5 -5
  76. data/tracks/elixir/exercises/forth/forth.exs +6 -9
  77. data/tracks/elixir/exercises/forth/forth_test.exs +107 -64
  78. data/tracks/elixir/exercises/gigasecond/example.exs +1 -1
  79. data/tracks/elixir/exercises/gigasecond/gigasecond.exs +2 -2
  80. data/tracks/elixir/exercises/gigasecond/gigasecond_test.exs +2 -2
  81. data/tracks/elixir/exercises/grade-school/example.exs +3 -3
  82. data/tracks/elixir/exercises/grade-school/grade_school_test.exs +26 -22
  83. data/tracks/elixir/exercises/grade-school/school.exs +3 -6
  84. data/tracks/elixir/exercises/grains/example.exs +10 -3
  85. data/tracks/elixir/exercises/grains/grains.exs +0 -2
  86. data/tracks/elixir/exercises/grains/grains_test.exs +16 -14
  87. data/tracks/elixir/exercises/grep/example.exs +22 -18
  88. data/tracks/elixir/exercises/grep/grep.exs +1 -2
  89. data/tracks/elixir/exercises/grep/grep_test.exs +108 -112
  90. data/tracks/elixir/exercises/hamming/example.exs +3 -2
  91. data/tracks/elixir/exercises/hamming/hamming_test.exs +7 -4
  92. data/tracks/elixir/exercises/hello-world/example.exs +1 -1
  93. data/tracks/elixir/exercises/hello-world/hello_world.exs +1 -1
  94. data/tracks/elixir/exercises/hello-world/hello_world_test.exs +2 -2
  95. data/tracks/elixir/exercises/hexadecimal/example.exs +8 -7
  96. data/tracks/elixir/exercises/hexadecimal/hexadecimal.exs +0 -1
  97. data/tracks/elixir/exercises/hexadecimal/hexadecimal_test.exs +3 -3
  98. data/tracks/elixir/exercises/isbn-verifier/example.exs +1 -1
  99. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier.exs +1 -2
  100. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier_test.exs +2 -2
  101. data/tracks/elixir/exercises/isogram/example.exs +5 -5
  102. data/tracks/elixir/exercises/isogram/isogram.exs +1 -3
  103. data/tracks/elixir/exercises/isogram/isogram_test.exs +2 -3
  104. data/tracks/elixir/exercises/kindergarten-garden/example.exs +15 -3
  105. data/tracks/elixir/exercises/kindergarten-garden/garden_test.exs +17 -4
  106. data/tracks/elixir/exercises/largest-series-product/example.exs +10 -9
  107. data/tracks/elixir/exercises/largest-series-product/largest_series_product.exs +1 -3
  108. data/tracks/elixir/exercises/largest-series-product/largest_series_product_test.exs +6 -4
  109. data/tracks/elixir/exercises/leap/example.exs +2 -2
  110. data/tracks/elixir/exercises/leap/leap.exs +0 -1
  111. data/tracks/elixir/exercises/leap/leap_test.exs +2 -2
  112. data/tracks/elixir/exercises/list-ops/example.exs +10 -9
  113. data/tracks/elixir/exercises/list-ops/list_ops.exs +1 -8
  114. data/tracks/elixir/exercises/list-ops/list_ops_test.exs +22 -25
  115. data/tracks/elixir/exercises/luhn/example.exs +16 -17
  116. data/tracks/elixir/exercises/luhn/luhn.exs +0 -2
  117. data/tracks/elixir/exercises/luhn/luhn_test.exs +2 -2
  118. data/tracks/elixir/exercises/markdown/example.exs +40 -14
  119. data/tracks/elixir/exercises/markdown/markdown.exs +8 -4
  120. data/tracks/elixir/exercises/markdown/markdown_test.exs +6 -3
  121. data/tracks/elixir/exercises/matrix/example.exs +6 -6
  122. data/tracks/elixir/exercises/matrix/matrix.exs +0 -1
  123. data/tracks/elixir/exercises/matrix/matrix_test.exs +11 -11
  124. data/tracks/elixir/exercises/meetup/example.exs +20 -13
  125. data/tracks/elixir/exercises/meetup/meetup.exs +8 -4
  126. data/tracks/elixir/exercises/meetup/meetup_test.exs +2 -2
  127. data/tracks/elixir/exercises/minesweeper/minesweeper.exs +1 -3
  128. data/tracks/elixir/exercises/minesweeper/minesweeper_test.exs +7 -21
  129. data/tracks/elixir/exercises/nth-prime/example.exs +7 -7
  130. data/tracks/elixir/exercises/nth-prime/nth_prime.exs +0 -1
  131. data/tracks/elixir/exercises/nth-prime/nth_prime_test.exs +3 -3
  132. data/tracks/elixir/exercises/nucleotide-count/example.exs +4 -3
  133. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count.exs +0 -3
  134. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +2 -2
  135. data/tracks/elixir/exercises/ocr-numbers/example.exs +3 -3
  136. data/tracks/elixir/exercises/ocr-numbers/ocr_numbers.exs +1 -2
  137. data/tracks/elixir/exercises/ocr-numbers/ocr_numbers_test.exs +54 -70
  138. data/tracks/elixir/exercises/palindrome-products/example.exs +3 -6
  139. data/tracks/elixir/exercises/palindrome-products/palindrome_products.exs +0 -1
  140. data/tracks/elixir/exercises/palindrome-products/palindrome_products_test.exs +8 -8
  141. data/tracks/elixir/exercises/pangram/pangram.exs +1 -1
  142. data/tracks/elixir/exercises/pangram/pangram_test.exs +5 -3
  143. data/tracks/elixir/exercises/parallel-letter-frequency/example.exs +7 -5
  144. data/tracks/elixir/exercises/parallel-letter-frequency/frequency.exs +1 -2
  145. data/tracks/elixir/exercises/parallel-letter-frequency/parallel_letter_frequency_test.exs +3 -4
  146. data/tracks/elixir/exercises/pascals-triangle/example.exs +2 -1
  147. data/tracks/elixir/exercises/pascals-triangle/pascals_triangle_test.exs +26 -8
  148. data/tracks/elixir/exercises/perfect-numbers/example.exs +8 -6
  149. data/tracks/elixir/exercises/perfect-numbers/perfect_numbers.exs +1 -2
  150. data/tracks/elixir/exercises/perfect-numbers/perfect_numbers_test.exs +18 -17
  151. data/tracks/elixir/exercises/phone-number/example.exs +19 -11
  152. data/tracks/elixir/exercises/phone-number/phone_number.exs +3 -3
  153. data/tracks/elixir/exercises/phone-number/phone_number_test.exs +2 -2
  154. data/tracks/elixir/exercises/pig-latin/pig_latin.exs +0 -1
  155. data/tracks/elixir/exercises/pig-latin/pig_latin_test.exs +3 -3
  156. data/tracks/elixir/exercises/poker/example.exs +104 -41
  157. data/tracks/elixir/exercises/poker/poker.exs +0 -1
  158. data/tracks/elixir/exercises/poker/poker_test.exs +7 -5
  159. data/tracks/elixir/exercises/prime-factors/example.exs +4 -8
  160. data/tracks/elixir/exercises/prime-factors/prime_factors.exs +0 -1
  161. data/tracks/elixir/exercises/prime-factors/prime_factors_test.exs +5 -5
  162. data/tracks/elixir/exercises/protein-translation/example.exs +14 -12
  163. data/tracks/elixir/exercises/protein-translation/protein_translation.exs +2 -3
  164. data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +26 -26
  165. data/tracks/elixir/exercises/pythagorean-triplet/example.exs +5 -4
  166. data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet.exs +0 -5
  167. data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet_test.exs +3 -3
  168. data/tracks/elixir/exercises/queen-attack/example.exs +9 -7
  169. data/tracks/elixir/exercises/queen-attack/queen_attack.exs +1 -4
  170. data/tracks/elixir/exercises/rail-fence-cipher/example.exs +18 -15
  171. data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher.exs +2 -4
  172. data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher_test.exs +2 -2
  173. data/tracks/elixir/exercises/raindrops/example.exs +3 -2
  174. data/tracks/elixir/exercises/raindrops/raindrops.exs +1 -2
  175. data/tracks/elixir/exercises/raindrops/raindrops_test.exs +2 -2
  176. data/tracks/elixir/exercises/rna-transcription/example.exs +1 -1
  177. data/tracks/elixir/exercises/rna-transcription/rna_transcription.exs +0 -1
  178. data/tracks/elixir/exercises/rna-transcription/rna_transcription_test.exs +2 -2
  179. data/tracks/elixir/exercises/robot-simulator/example.exs +33 -19
  180. data/tracks/elixir/exercises/robot-simulator/robot_simulator.exs +3 -5
  181. data/tracks/elixir/exercises/robot-simulator/robot_simulator_test.exs +26 -25
  182. data/tracks/elixir/exercises/roman-numerals/example.exs +14 -13
  183. data/tracks/elixir/exercises/roman-numerals/roman.exs +1 -1
  184. data/tracks/elixir/exercises/roman-numerals/roman_numerals_test.exs +2 -2
  185. data/tracks/elixir/exercises/rotational-cipher/example.exs +12 -8
  186. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher.exs +0 -1
  187. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher_test.exs +6 -4
  188. data/tracks/elixir/exercises/run-length-encoding/example.exs +20 -8
  189. data/tracks/elixir/exercises/run-length-encoding/rle.exs +2 -4
  190. data/tracks/elixir/exercises/run-length-encoding/rle_test.exs +6 -4
  191. data/tracks/elixir/exercises/saddle-points/example.exs +4 -3
  192. data/tracks/elixir/exercises/saddle-points/saddle_points.exs +0 -3
  193. data/tracks/elixir/exercises/saddle-points/saddle_points_test.exs +2 -2
  194. data/tracks/elixir/exercises/say/say.exs +1 -1
  195. data/tracks/elixir/exercises/say/say_test.exs +5 -3
  196. data/tracks/elixir/exercises/scale-generator/example.exs +20 -9
  197. data/tracks/elixir/exercises/scale-generator/scale_generator.exs +2 -2
  198. data/tracks/elixir/exercises/scale-generator/scale_generator_test.exs +16 -17
  199. data/tracks/elixir/exercises/scrabble-score/scrabble.exs +1 -2
  200. data/tracks/elixir/exercises/scrabble-score/scrabble_score_test.exs +2 -2
  201. data/tracks/elixir/exercises/secret-handshake/example.exs +4 -4
  202. data/tracks/elixir/exercises/secret-handshake/secret_handshake.exs +0 -1
  203. data/tracks/elixir/exercises/secret-handshake/secret_handshake_test.exs +3 -3
  204. data/tracks/elixir/exercises/series/example.exs +2 -2
  205. data/tracks/elixir/exercises/series/series.exs +0 -1
  206. data/tracks/elixir/exercises/series/series_test.exs +3 -4
  207. data/tracks/elixir/exercises/sieve/example.exs +4 -5
  208. data/tracks/elixir/exercises/sieve/sieve.exs +0 -3
  209. data/tracks/elixir/exercises/sieve/sieve_test.exs +173 -21
  210. data/tracks/elixir/exercises/simple-cipher/example.exs +8 -8
  211. data/tracks/elixir/exercises/simple-cipher/simple_cipher.exs +0 -1
  212. data/tracks/elixir/exercises/simple-cipher/simple_cipher_test.exs +3 -4
  213. data/tracks/elixir/exercises/simple-linked-list/example.exs +3 -1
  214. data/tracks/elixir/exercises/simple-linked-list/linked_list_test.exs +5 -2
  215. data/tracks/elixir/exercises/space-age/example.exs +5 -6
  216. data/tracks/elixir/exercises/space-age/space_age.exs +9 -3
  217. data/tracks/elixir/exercises/space-age/space_age_test.exs +2 -2
  218. data/tracks/elixir/exercises/spiral-matrix/example.exs +10 -5
  219. data/tracks/elixir/exercises/spiral-matrix/spiral.exs +0 -1
  220. data/tracks/elixir/exercises/spiral-matrix/spiral_test.exs +21 -21
  221. data/tracks/elixir/exercises/strain/example.exs +5 -4
  222. data/tracks/elixir/exercises/strain/strain.exs +2 -2
  223. data/tracks/elixir/exercises/strain/strain_test.exs +12 -7
  224. data/tracks/elixir/exercises/sublist/example.exs +11 -7
  225. data/tracks/elixir/exercises/sublist/sublist.exs +0 -1
  226. data/tracks/elixir/exercises/sublist/sublist_test.exs +16 -18
  227. data/tracks/elixir/exercises/sum-of-multiples/example.exs +3 -4
  228. data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples.exs +0 -1
  229. data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples_test.exs +4 -4
  230. data/tracks/elixir/exercises/test_helper.exs +4 -4
  231. data/tracks/elixir/exercises/tournament/example.exs +20 -13
  232. data/tracks/elixir/exercises/tournament/tournament.exs +0 -1
  233. data/tracks/elixir/exercises/tournament/tournament_test.exs +37 -30
  234. data/tracks/elixir/exercises/transpose/example.exs +4 -4
  235. data/tracks/elixir/exercises/transpose/transpose.exs +1 -1
  236. data/tracks/elixir/exercises/transpose/transpose_test.exs +89 -156
  237. data/tracks/elixir/exercises/triangle/example.exs +7 -7
  238. data/tracks/elixir/exercises/triangle/triangle.exs +1 -2
  239. data/tracks/elixir/exercises/triangle/triangle_test.exs +17 -17
  240. data/tracks/elixir/exercises/twelve-days/example.exs +10 -6
  241. data/tracks/elixir/exercises/twelve-days/twelve_days.exs +1 -2
  242. data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +55 -45
  243. data/tracks/elixir/exercises/word-count/example.exs +5 -5
  244. data/tracks/elixir/exercises/word-count/word_count.exs +1 -2
  245. data/tracks/elixir/exercises/word-count/word_count_test.exs +5 -5
  246. data/tracks/elixir/exercises/wordy/example.exs +13 -14
  247. data/tracks/elixir/exercises/wordy/wordy.exs +1 -4
  248. data/tracks/elixir/exercises/wordy/wordy_test.exs +2 -2
  249. data/tracks/elixir/exercises/zipper/example.exs +48 -37
  250. data/tracks/elixir/exercises/zipper/zipper.exs +20 -14
  251. data/tracks/elixir/exercises/zipper/zipper_test.exs +19 -20
  252. data/tracks/go/.travis.yml +1 -1
  253. data/tracks/go/exercises/paasio/paasio_test.go +76 -0
  254. data/tracks/ocaml/exercises/acronym/test.ml +3 -5
  255. data/tracks/ocaml/exercises/all-your-base/test.ml +2 -2
  256. data/tracks/ocaml/exercises/anagram/test.ml +1 -9
  257. data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -1
  258. data/tracks/ocaml/exercises/binary-search/test.ml +1 -1
  259. data/tracks/ocaml/exercises/bob/test.ml +1 -1
  260. data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
  261. data/tracks/ocaml/exercises/connect/test.ml +1 -1
  262. data/tracks/ocaml/exercises/difference-of-squares/test.ml +1 -1
  263. data/tracks/ocaml/exercises/dominoes/test.ml +1 -1
  264. data/tracks/ocaml/exercises/hello-world/test.ml +1 -1
  265. data/tracks/ocaml/exercises/leap/test.ml +2 -2
  266. data/tracks/ocaml/exercises/luhn/test.ml +2 -2
  267. data/tracks/ocaml/exercises/pangram/test.ml +1 -1
  268. data/tracks/ocaml/exercises/phone-number/test.ml +7 -3
  269. data/tracks/ocaml/exercises/prime-factors/test.ml +1 -1
  270. data/tracks/ocaml/exercises/raindrops/test.ml +1 -1
  271. data/tracks/ocaml/exercises/react/example.ml +1 -1
  272. data/tracks/ocaml/exercises/roman-numerals/test.ml +3 -1
  273. data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
  274. data/tracks/ocaml/exercises/space-age/test.ml +1 -1
  275. data/tracks/ocaml/exercises/word-count/test.ml +1 -1
  276. data/tracks/swift/circle.yml +21 -2
  277. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3036bb821ee32c887913d7896ef3433df01821d3
4
- data.tar.gz: 374c6ddaecd208bf6192cb39c88c95e8c07dc209
3
+ metadata.gz: b1a008f214471e1eb4b8e7d9b43328c0b81473e9
4
+ data.tar.gz: c114e360ea3b59997689d638f226e325d2a91893
5
5
  SHA512:
6
- metadata.gz: b1110d7ba12be2e740884e5c73a74a2b11b9fca4ff42517f68174460064aab88ffc84af4af2b07289f0ec9e91d903a921aee60fad0e239976a491492bf8e1e0d
7
- data.tar.gz: 30f98519f62e225ae41edb727517e9b7b9e340db588daa9625ed075e10f85bcb3be844e646c6f0d7e9a8172077bae86fd9acfbd7b0250c167e105aade9a54d86
6
+ metadata.gz: e4efd9bd6d1f3825e78035ea979e06e0b8b4611662395ffe019c857cb4a76e340511a40e831a9b83ee797a7a24f1811cf31dc6fe3caf68f9f2e91938a3552a4c
7
+ data.tar.gz: 7539a437045feda970f1df3578b9519172dad01e08a4cf80d851c175a4855438e9f60da1b641ed1279389deef6f1a9ff4fcafd0d4d1e0564fea8b2a77f39001c
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.109"
2
+ VERSION = "2.2.1.110"
3
3
  end
@@ -518,6 +518,7 @@
518
518
  "strings",
519
519
  "algorithms"
520
520
  ],
521
+ "unlocked_by": "pascals-triangle",
521
522
  "uuid": "8c0762e6-702e-4733-a0a1-65099e2a46f7"
522
523
  },
523
524
  {
@@ -529,6 +530,7 @@
529
530
  "stacks",
530
531
  "recursion"
531
532
  ],
533
+ "unlocked_by": "isogram",
532
534
  "uuid": "cd573670-54da-4291-ab78-afd5d77fbeac"
533
535
  }
534
536
  ],
@@ -15,7 +15,7 @@
15
15
  (is (armstrong? 153))))
16
16
 
17
17
  (deftest not-armstrong-number-100
18
- (testing "Three digit number that is an Armstrong number"
18
+ (testing "Three digit number that is not an Armstrong number"
19
19
  (is (not (armstrong? 100)))))
20
20
 
21
21
  (deftest armstrong-number-9474
@@ -0,0 +1,3 @@
1
+ [
2
+ inputs: ["mix.exs", "{exercises}/**/*.{ex,exs}"]
3
+ ]
@@ -2,30 +2,30 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("accumulate.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule AccumulateTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  test "accumulate empty list" do
12
- assert Accumulate.accumulate([], fn(n) -> n * n end) == []
12
+ assert Accumulate.accumulate([], fn n -> n * n end) == []
13
13
  end
14
14
 
15
15
  @tag :pending
16
16
  test "accumulate square numbers" do
17
- assert Accumulate.accumulate([1, 2, 3], fn(n) -> n * n end) == [1, 4, 9]
17
+ assert Accumulate.accumulate([1, 2, 3], fn n -> n * n end) == [1, 4, 9]
18
18
  end
19
19
 
20
20
  @tag :pending
21
21
  test "accumulate upcased strings" do
22
- fun = fn(w) -> String.upcase(w) end
22
+ fun = fn w -> String.upcase(w) end
23
23
  assert Accumulate.accumulate(["hello", "world"], fun) == ["HELLO", "WORLD"]
24
24
  end
25
25
 
26
26
  @tag :pending
27
27
  test "accumulate reversed strings" do
28
- fun = fn(w) -> String.reverse(w) end
28
+ fun = fn w -> String.reverse(w) end
29
29
  words = ~w(the quick brown fox etc)
30
30
  expected = ["eht", "kciuq", "nworb", "xof", "cte"]
31
31
  assert Accumulate.accumulate(words, fun) == expected
@@ -34,8 +34,8 @@ defmodule AccumulateTest do
34
34
  @tag :pending
35
35
  test "nested accumulate" do
36
36
  chars = ~w(a b c)
37
- nums = ~w(1 2 3)
38
- fun = fn(c) -> Accumulate.accumulate(nums, &(c <> &1)) end
37
+ nums = ~w(1 2 3)
38
+ fun = fn c -> Accumulate.accumulate(nums, &(c <> &1)) end
39
39
  expected = [["a1", "a2", "a3"], ["b1", "b2", "b3"], ["c1", "c2", "c3"]]
40
40
  assert Accumulate.accumulate(chars, fun) == expected
41
41
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("acronym.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule AcronymTest do
9
9
  use ExUnit.Case
@@ -1,11 +1,10 @@
1
1
  defmodule Acronym do
2
-
3
2
  @spec abbreviate(String.t()) :: String.t()
4
3
  def abbreviate(string) do
5
4
  Regex.scan(~r/[A-Z]+[a-z]*|[a-z]+/, string)
6
- |> List.flatten
7
- |> Enum.map(fn(x) -> String.first(x) end)
5
+ |> List.flatten()
6
+ |> Enum.map(fn x -> String.first(x) end)
8
7
  |> Enum.join("")
9
- |> String.upcase
8
+ |> String.upcase()
10
9
  end
11
10
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("all-your-base.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule AllYourBaseTest do
9
9
  use ExUnit.Case
@@ -1,5 +1,4 @@
1
1
  defmodule AllYourBase do
2
-
3
2
  @doc """
4
3
  Given a number in base a, represented as a sequence of digits, converts it to base b,
5
4
  or returns nil if either of the bases are less than 2
@@ -8,8 +7,9 @@ defmodule AllYourBase do
8
7
  @spec convert(list, integer, integer) :: list
9
8
  def convert(digits, base_a, base_b) do
10
9
  cond do
11
- base_a > 1 and base_b > 1 and digits !=[] ->
10
+ base_a > 1 and base_b > 1 and digits != [] ->
12
11
  do_convert(digits, base_a, base_b)
12
+
13
13
  true ->
14
14
  nil
15
15
  end
@@ -17,18 +17,25 @@ defmodule AllYourBase do
17
17
 
18
18
  defp do_convert(digits, base_a, base_b) do
19
19
  num = convert_to_num(digits, base_a, 0)
20
+
20
21
  case num do
21
- nil -> nil
22
- 0 -> [0]
23
- num -> convert_to_digits(num, base_b, [])
24
- |> Enum.reverse
22
+ nil ->
23
+ nil
24
+
25
+ 0 ->
26
+ [0]
27
+
28
+ num ->
29
+ convert_to_digits(num, base_b, [])
30
+ |> Enum.reverse()
25
31
  end
26
32
  end
27
33
 
28
34
  defp convert_to_num([head | tail], base_a, accumulator) do
29
35
  cond do
30
36
  head < base_a and head >= 0 ->
31
- convert_to_num(tail, base_a, accumulator * base_a + head)
37
+ convert_to_num(tail, base_a, accumulator * base_a + head)
38
+
32
39
  true ->
33
40
  nil
34
41
  end
@@ -2,16 +2,14 @@ defmodule Allergies do
2
2
  @doc """
3
3
  List the allergies for which the corresponding flag bit is true.
4
4
  """
5
- @spec list(non_neg_integer) :: [String.t]
5
+ @spec list(non_neg_integer) :: [String.t()]
6
6
  def list(flags) do
7
-
8
7
  end
9
8
 
10
9
  @doc """
11
10
  Returns whether the corresponding flag bit in 'flags' is set for the item.
12
11
  """
13
- @spec allergic_to?(non_neg_integer, String.t) :: boolean
12
+ @spec allergic_to?(non_neg_integer, String.t()) :: boolean
14
13
  def allergic_to?(flags, item) do
15
-
16
14
  end
17
15
  end
@@ -2,9 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("allergies.exs", __DIR__)
3
3
  end
4
4
 
5
-
6
- ExUnit.start
7
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
8
7
 
9
8
  defmodule AllergiesTest do
10
9
  use ExUnit.Case
@@ -41,12 +40,16 @@ defmodule AllergiesTest do
41
40
 
42
41
  @tag :pending
43
42
  test "allergic_to_lots_of_stuff" do
44
- Allergies.list(248) |> assert_is_a_set_containing(~w[strawberries tomatoes chocolate pollen cats])
43
+ Allergies.list(248)
44
+ |> assert_is_a_set_containing(~w[strawberries tomatoes chocolate pollen cats])
45
45
  end
46
46
 
47
47
  @tag :pending
48
48
  test "allergic_to_everything" do
49
- Allergies.list(255) |> assert_is_a_set_containing(~w[eggs peanuts shellfish strawberries tomatoes chocolate pollen cats])
49
+ Allergies.list(255)
50
+ |> assert_is_a_set_containing(
51
+ ~w[eggs peanuts shellfish strawberries tomatoes chocolate pollen cats]
52
+ )
50
53
  end
51
54
 
52
55
  @tag :pending
@@ -68,16 +71,19 @@ defmodule AllergiesTest do
68
71
 
69
72
  @tag :pending
70
73
  test "ignore_non_allergen_score_parts" do
71
- Allergies.list(509) |> assert_is_a_set_containing(~w[eggs shellfish strawberries tomatoes chocolate pollen cats])
74
+ Allergies.list(509)
75
+ |> assert_is_a_set_containing(~w[eggs shellfish strawberries tomatoes chocolate pollen cats])
72
76
  end
73
77
 
74
78
  defp assert_is_a_set_containing(list, to_contain) do
75
- set = Enum.into(list, MapSet.new)
76
- same_contents = to_contain
77
- |> Enum.into(MapSet.new)
79
+ set = Enum.into(list, MapSet.new())
80
+
81
+ same_contents =
82
+ to_contain
83
+ |> Enum.into(MapSet.new())
78
84
  |> MapSet.equal?(set)
85
+
79
86
  assert same_contents,
80
- "Expected a set with: #{inspect to_contain} got #{inspect set |> MapSet.to_list}"
87
+ "Expected a set with: #{inspect(to_contain)} got #{inspect(set |> MapSet.to_list())}"
81
88
  end
82
-
83
89
  end
@@ -2,8 +2,7 @@ defmodule Anagram do
2
2
  @doc """
3
3
  Returns all candidates that are anagrams of, but not equal to, 'base'.
4
4
  """
5
- @spec match(String.t, [String.t]) :: [String.t]
5
+ @spec match(String.t(), [String.t()]) :: [String.t()]
6
6
  def match(base, candidates) do
7
-
8
7
  end
9
8
  end
@@ -2,75 +2,75 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("anagram.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule AnagramTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  # @tag :pending
12
12
  test "no matches" do
13
- matches = Anagram.match "diaper", ["hello", "world", "zombies", "pants"]
13
+ matches = Anagram.match("diaper", ["hello", "world", "zombies", "pants"])
14
14
  assert matches == []
15
15
  end
16
16
 
17
17
  @tag :pending
18
18
  test "detect simple anagram" do
19
- matches = Anagram.match "ant", ["tan", "stand", "at"]
19
+ matches = Anagram.match("ant", ["tan", "stand", "at"])
20
20
  assert matches == ["tan"]
21
21
  end
22
22
 
23
23
  @tag :pending
24
24
  test "detect multiple anagrams" do
25
- matches = Anagram.match "master", ["stream", "pigeon", "maters"]
25
+ matches = Anagram.match("master", ["stream", "pigeon", "maters"])
26
26
  assert matches == ["stream", "maters"]
27
27
  end
28
28
 
29
29
  @tag :pending
30
30
  test "do not detect anagram subsets" do
31
- matches = Anagram.match "good", ~w(dog goody)
31
+ matches = Anagram.match("good", ~w(dog goody))
32
32
  assert matches == []
33
33
  end
34
34
 
35
35
  @tag :pending
36
36
  test "detect anagram" do
37
- matches = Anagram.match "listen", ~w(enlists google inlets banana)
37
+ matches = Anagram.match("listen", ~w(enlists google inlets banana))
38
38
  assert matches == ["inlets"]
39
39
  end
40
40
 
41
41
  @tag :pending
42
42
  test "multiple anagrams" do
43
- matches = Anagram.match "allergy", ~w(gallery ballerina regally clergy largely leading)
43
+ matches = Anagram.match("allergy", ~w(gallery ballerina regally clergy largely leading))
44
44
  assert matches == ["gallery", "regally", "largely"]
45
45
  end
46
46
 
47
47
  @tag :pending
48
48
  test "anagrams must use all letters exactly once" do
49
- matches = Anagram.match "patter", ["tapper"]
49
+ matches = Anagram.match("patter", ["tapper"])
50
50
  assert matches == []
51
51
  end
52
52
 
53
53
  @tag :pending
54
54
  test "detect anagrams with case-insensitive subject" do
55
- matches = Anagram.match "Orchestra", ~w(cashregister carthorse radishes)
55
+ matches = Anagram.match("Orchestra", ~w(cashregister carthorse radishes))
56
56
  assert matches == ["carthorse"]
57
57
  end
58
58
 
59
59
  @tag :pending
60
60
  test "detect anagrams with case-insensitive candidate" do
61
- matches = Anagram.match "orchestra", ~w(cashregister Carthorse radishes)
61
+ matches = Anagram.match("orchestra", ~w(cashregister Carthorse radishes))
62
62
  assert matches == ["Carthorse"]
63
63
  end
64
64
 
65
65
  @tag :pending
66
66
  test "anagrams must not be the source word" do
67
- matches = Anagram.match "corn", ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"]
67
+ matches = Anagram.match("corn", ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"])
68
68
  assert matches == ["cron"]
69
69
  end
70
70
 
71
71
  @tag :pending
72
72
  test "do not detect words based on checksum" do
73
- matches = Anagram.match "mass", ["last"]
73
+ matches = Anagram.match("mass", ["last"])
74
74
  assert matches == []
75
75
  end
76
76
  end
@@ -4,10 +4,11 @@ defmodule Anagram do
4
4
 
5
5
  Comparison is case insensitive.
6
6
  """
7
- @spec match(String.t, [String.t]) :: [String.t]
7
+ @spec match(String.t(), [String.t()]) :: [String.t()]
8
8
  def match(target, words) do
9
9
  lc_target = String.downcase(target)
10
10
  sorted_target = sort(lc_target)
11
+
11
12
  Enum.filter(words, fn word ->
12
13
  lc_word = String.downcase(word)
13
14
  # `and` is shortcutting
@@ -7,11 +7,11 @@ defmodule Atbash do
7
7
  iex> Atbash.encode("completely insecure")
8
8
  "xlnko vgvob rmhvx fiv"
9
9
  """
10
- @spec encode(String.t) :: String.t
10
+ @spec encode(String.t()) :: String.t()
11
11
  def encode(plaintext) do
12
12
  end
13
13
 
14
- @spec decode(String.t) :: String.t
14
+ @spec decode(String.t()) :: String.t()
15
15
  def decode(cipher) do
16
16
  end
17
17
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("atbash_cipher.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  defmodule AtbashTest do
9
9
  use ExUnit.Case
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("account.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure exclude: :pending, trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(exclude: :pending, trace: true)
7
7
 
8
8
  # The BankAccount module should support four calls:
9
9
  #
@@ -26,8 +26,8 @@ defmodule BankAccountTest do
26
26
  use ExUnit.Case
27
27
 
28
28
  setup do
29
- account = BankAccount.open_bank
30
- { :ok, account: account }
29
+ account = BankAccount.open_bank()
30
+ {:ok, account: account}
31
31
  end
32
32
 
33
33
  # @tag :pending
@@ -59,18 +59,23 @@ defmodule BankAccountTest do
59
59
  end
60
60
 
61
61
  @tag :pending
62
- test "incrementing balance from another process then checking it from test process", %{account: account} do
62
+ test "incrementing balance from another process then checking it from test process", %{
63
+ account: account
64
+ } do
63
65
  assert BankAccount.balance(account) == 0
64
66
  this = self()
67
+
65
68
  spawn(fn ->
66
69
  BankAccount.update(account, 20)
67
70
  send(this, :continue)
68
71
  end)
72
+
69
73
  receive do
70
74
  :continue -> :ok
71
75
  after
72
76
  1000 -> flunk("Timeout")
73
77
  end
78
+
74
79
  assert BankAccount.balance(account) == 20
75
80
  end
76
81
  end