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
@@ -11,8 +11,9 @@ defmodule Hamming do
11
11
  distance = pairs(strand1, strand2) |> count_mismatched
12
12
  {:ok, distance}
13
13
  end
14
+
14
15
  def hamming_distance(_, _), do: {:error, "Lists must be the same length"}
15
16
 
16
- defp pairs(s1, s2), do: Enum.zip(s1, s2)
17
- defp count_mismatched(pairs), do: Enum.count(pairs, fn({c1, c2}) -> c2 && (c1 != c2) end)
17
+ defp pairs(s1, s2), do: Enum.zip(s1, s2)
18
+ defp count_mismatched(pairs), do: Enum.count(pairs, fn {c1, c2} -> c2 && c1 != c2 end)
18
19
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("hamming.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 HammingTest do
9
9
  use ExUnit.Case
@@ -34,7 +34,10 @@ defmodule HammingTest do
34
34
 
35
35
  @tag :pending
36
36
  test "hamming distance is undefined for strands of different lengths" do
37
- assert {:error, "Lists must be the same length"} = Hamming.hamming_distance('AAAC', 'TAGGGGAGGCTAGCGGTAGGAC')
38
- assert {:error, "Lists must be the same length"} = Hamming.hamming_distance('GACTACGGACAGGACACC', 'GACATCGC')
37
+ assert {:error, "Lists must be the same length"} =
38
+ Hamming.hamming_distance('AAAC', 'TAGGGGAGGCTAGCGGTAGGAC')
39
+
40
+ assert {:error, "Lists must be the same length"} =
41
+ Hamming.hamming_distance('GACTACGGACAGGACACC', 'GACATCGC')
39
42
  end
40
43
  end
@@ -6,4 +6,4 @@ defmodule HelloWorld do
6
6
  def hello do
7
7
  "Hello, World!"
8
8
  end
9
- end
9
+ end
@@ -2,7 +2,7 @@ defmodule HelloWorld do
2
2
  @doc """
3
3
  Simply returns "Hello, World!"
4
4
  """
5
- @spec hello :: String.t
5
+ @spec hello :: String.t()
6
6
  def hello do
7
7
  "Your implementation goes here"
8
8
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("hello_world.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure trace: true
5
+ ExUnit.start()
6
+ ExUnit.configure(trace: true)
7
7
 
8
8
  defmodule HelloWorldTest do
9
9
  use ExUnit.Case
@@ -1,8 +1,8 @@
1
1
  defmodule Hexadecimal do
2
2
  @base 16
3
3
  @hex_table String.split("0123456789abcdef", "", trim: true)
4
- |> Enum.with_index
5
- |> Enum.into(%{})
4
+ |> Enum.with_index()
5
+ |> Enum.into(%{})
6
6
 
7
7
  @doc """
8
8
  Accept a string representing a hexadecimal value and return the
@@ -26,10 +26,10 @@ defmodule Hexadecimal do
26
26
  0
27
27
  else
28
28
  hex
29
- |> String.downcase
30
- |> String.reverse
31
- |> String.split("", trim: true)
32
- |> hex_to_int(0, 0)
29
+ |> String.downcase()
30
+ |> String.reverse()
31
+ |> String.split("", trim: true)
32
+ |> hex_to_int(0, 0)
33
33
  end
34
34
  end
35
35
 
@@ -38,7 +38,8 @@ defmodule Hexadecimal do
38
38
  end
39
39
 
40
40
  defp hex_to_int([], acc, _), do: round(acc)
41
- defp hex_to_int([char|hex], acc, power) do
41
+
42
+ defp hex_to_int([char | hex], acc, power) do
42
43
  acc = acc + Map.get(@hex_table, char) * :math.pow(@base, power)
43
44
  hex_to_int(hex, acc, power + 1)
44
45
  end
@@ -17,6 +17,5 @@ defmodule Hexadecimal do
17
17
 
18
18
  @spec to_decimal(binary) :: integer
19
19
  def to_decimal(hex) do
20
-
21
20
  end
22
21
  end
@@ -2,14 +2,14 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("hexadecimal.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 HexadecimalTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  test "returns 1 when hex is 1" do
12
- assert Hexadecimal.to_decimal("1") == 1
12
+ assert Hexadecimal.to_decimal("1") == 1
13
13
  end
14
14
 
15
15
  @tag :pending
@@ -33,4 +33,4 @@ defmodule ISBNVerifier do
33
33
  defp checksum_weighting({digit, weight}) do
34
34
  String.to_integer(digit) * weight
35
35
  end
36
- end
36
+ end
@@ -13,6 +13,5 @@ defmodule ISBNVerifier do
13
13
  """
14
14
  @spec isbn?(String.t()) :: boolean
15
15
  def isbn?(isbn) do
16
-
17
16
  end
18
- end
17
+ end
@@ -8,7 +8,7 @@ ExUnit.configure(exclude: :pending, trace: true)
8
8
  defmodule ISBNVerifierTest do
9
9
  use ExUnit.Case
10
10
 
11
- #@tag :pending
11
+ # @tag :pending
12
12
  test "valid isbn number" do
13
13
  assert ISBNVerifier.isbn?("3-598-21508-8")
14
14
  end
@@ -72,4 +72,4 @@ defmodule ISBNVerifierTest do
72
72
  test "check digit of X should not be used for 0" do
73
73
  refute ISBNVerifier.isbn?("3-598-21515-X")
74
74
  end
75
- end
75
+ end
@@ -2,14 +2,14 @@ defmodule Isogram do
2
2
  @doc """
3
3
  Determines if a word or sentence is an isogram
4
4
  """
5
- @spec isogram?(String.t) :: boolean
5
+ @spec isogram?(String.t()) :: boolean
6
6
  def isogram?(sentence) do
7
- codepoints = sentence
8
- |> String.downcase
7
+ codepoints =
8
+ sentence
9
+ |> String.downcase()
9
10
  |> String.replace(~r/\s|-/u, "")
10
- |> String.codepoints
11
+ |> String.codepoints()
11
12
 
12
13
  length(Enum.uniq(codepoints)) == length(codepoints)
13
14
  end
14
-
15
15
  end
@@ -2,9 +2,7 @@ defmodule Isogram do
2
2
  @doc """
3
3
  Determines if a word or sentence is an isogram
4
4
  """
5
- @spec isogram?(String.t) :: boolean
5
+ @spec isogram?(String.t()) :: boolean
6
6
  def isogram?(sentence) do
7
-
8
7
  end
9
-
10
8
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("isogram.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 IsogramTest do
9
9
  use ExUnit.Case
@@ -46,5 +46,4 @@ defmodule IsogramTest do
46
46
  test "phrase is not isogram" do
47
47
  refute Isogram.isogram?("the quick brown fox")
48
48
  end
49
-
50
49
  end
@@ -1,6 +1,18 @@
1
1
  defmodule Garden do
2
- @default_names [:alice, :bob, :charlie, :david, :eve, :fred, :ginny, :harriet,
3
- :ileana, :joseph, :kincaid, :larry]
2
+ @default_names [
3
+ :alice,
4
+ :bob,
5
+ :charlie,
6
+ :david,
7
+ :eve,
8
+ :fred,
9
+ :ginny,
10
+ :harriet,
11
+ :ileana,
12
+ :joseph,
13
+ :kincaid,
14
+ :larry
15
+ ]
4
16
  @letter_map %{"V" => :violets, "R" => :radishes, "C" => :clover, "G" => :grass}
5
17
 
6
18
  @doc """
@@ -46,7 +58,7 @@ defmodule Garden do
46
58
 
47
59
  defp add_to_map(map, current_name, letters) do
48
60
  letters = String.codepoints(letters)
49
- translated_list = Enum.map(letters, fn(letter) -> @letter_map[letter] end)
61
+ translated_list = Enum.map(letters, fn letter -> @letter_map[letter] end)
50
62
  tuple = List.to_tuple(translated_list)
51
63
  Map.put(map, current_name, tuple)
52
64
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("garden.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 GardenTest do
9
9
  use ExUnit.Case
@@ -57,8 +57,21 @@ defmodule GardenTest do
57
57
 
58
58
  @tag :pending
59
59
  test "gets the garden for all students with custom child names" do
60
- names = [:maggie, :nate, :xander, :ophelia, :pete, :reggie, :sylvia,
61
- :tanner, :ursula, :victor, :winnie, :ynold]
60
+ names = [
61
+ :maggie,
62
+ :nate,
63
+ :xander,
64
+ :ophelia,
65
+ :pete,
66
+ :reggie,
67
+ :sylvia,
68
+ :tanner,
69
+ :ursula,
70
+ :victor,
71
+ :winnie,
72
+ :ynold
73
+ ]
74
+
62
75
  garden_string = "VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV"
63
76
  garden_info = Garden.info(garden_string, names)
64
77
  assert garden_info.maggie == {:violets, :radishes, :violets, :radishes}
@@ -1,17 +1,16 @@
1
1
  defmodule Series do
2
-
3
- @spec digits(String.t) :: [non_neg_integer]
2
+ @spec digits(String.t()) :: [non_neg_integer]
4
3
  defp digits("") do
5
4
  []
6
5
  end
7
6
 
8
7
  defp digits(number_string) do
9
8
  String.split(number_string, "", trim: true)
10
- |> Enum.reduce([], fn(char, acc) -> [String.to_integer(char)|acc] end)
11
- |> Enum.reverse
9
+ |> Enum.reduce([], fn char, acc -> [String.to_integer(char) | acc] end)
10
+ |> Enum.reverse()
12
11
  end
13
12
 
14
- @spec slices(String.t, non_neg_integer) :: [list(non_neg_integer)]
13
+ @spec slices(String.t(), non_neg_integer) :: [list(non_neg_integer)]
15
14
  defp slices(number_string, size) do
16
15
  digits = digits(number_string)
17
16
  chunk(digits, size, 1)
@@ -20,7 +19,7 @@ defmodule Series do
20
19
  @doc """
21
20
  Finds the largest product of a given number of consecutive numbers in a given string of numbers.
22
21
  """
23
- @spec largest_product(String.t, non_neg_integer) :: non_neg_integer
22
+ @spec largest_product(String.t(), non_neg_integer) :: non_neg_integer
24
23
  def largest_product(_, 0) do
25
24
  1
26
25
  end
@@ -29,13 +28,15 @@ defmodule Series do
29
28
  unless Enum.member?(Range.new(0, String.length(number_string)), size) do
30
29
  raise ArgumentError
31
30
  end
31
+
32
32
  slices = slices(number_string, size)
33
- Enum.map(slices, &Enum.reduce(&1, fn(x, acc) -> x * acc end))
34
- |> Enum.max
33
+
34
+ Enum.map(slices, &Enum.reduce(&1, fn x, acc -> x * acc end))
35
+ |> Enum.max()
35
36
  end
36
37
 
37
38
  # Handle Enum.chunks -> Enum.chunk renaming.
38
- if not { :chunk, 3 } in Enum.__info__(:functions) do
39
+ if not ({:chunk, 3} in Enum.__info__(:functions)) do
39
40
  defp chunk(coll, n, step), do: Enum.chunks(coll, n, step)
40
41
  else
41
42
  defp chunk(coll, n, step), do: Enum.chunk(coll, n, step)
@@ -1,10 +1,8 @@
1
1
  defmodule Series do
2
-
3
2
  @doc """
4
3
  Finds the largest product of a given number of consecutive numbers in a given string of numbers.
5
4
  """
6
- @spec largest_product(String.t, non_neg_integer) :: non_neg_integer
5
+ @spec largest_product(String.t(), non_neg_integer) :: non_neg_integer
7
6
  def largest_product(number_string, size) do
8
-
9
7
  end
10
8
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("largest_series_product.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 LargestSeriesProductTest do
9
9
  use ExUnit.Case
@@ -45,12 +45,14 @@ defmodule LargestSeriesProductTest do
45
45
 
46
46
  @tag :pending
47
47
  test "some big number" do
48
- assert Series.largest_product("73167176531330624919225119674426574742355349194934", 6) == 23520
48
+ assert Series.largest_product("73167176531330624919225119674426574742355349194934", 6) ==
49
+ 23520
49
50
  end
50
51
 
51
52
  @tag :pending
52
53
  test "some other big number" do
53
- assert Series.largest_product("52677741234314237566414902593461595376319419139427", 6) == 28350
54
+ assert Series.largest_product("52677741234314237566414902593461595376319419139427", 6) ==
55
+ 28350
54
56
  end
55
57
 
56
58
  @tag :pending
@@ -1,10 +1,10 @@
1
1
  defmodule Year do
2
2
  def leap_year?(year) do
3
- div4?(year) && (div100?(year) == div400?(year))
3
+ div4?(year) && div100?(year) == div400?(year)
4
4
  end
5
5
 
6
6
  defp divides?(dividend, divisor), do: rem(dividend, divisor) == 0
7
- defp div4?(dividend), do: divides?(dividend, 4)
7
+ defp div4?(dividend), do: divides?(dividend, 4)
8
8
  defp div100?(dividend), do: divides?(dividend, 100)
9
9
  defp div400?(dividend), do: divides?(dividend, 400)
10
10
  end
@@ -10,6 +10,5 @@ defmodule Year do
10
10
  """
11
11
  @spec leap_year?(non_neg_integer) :: boolean
12
12
  def leap_year?(year) do
13
-
14
13
  end
15
14
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("leap.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 LeapTest do
9
9
  use ExUnit.Case
@@ -10,43 +10,44 @@ defmodule ListOps do
10
10
  def count(l), do: do_count(l, 0)
11
11
 
12
12
  defp do_count([], acc), do: acc
13
- defp do_count([_|t], acc), do: do_count(t, acc+1)
13
+ defp do_count([_ | t], acc), do: do_count(t, acc + 1)
14
14
 
15
15
  @spec reverse(list) :: list
16
16
  def reverse(l), do: do_reverse(l, [])
17
17
 
18
18
  defp do_reverse([], acc), do: acc
19
- defp do_reverse([h|t], acc), do: do_reverse(t, [h|acc])
19
+ defp do_reverse([h | t], acc), do: do_reverse(t, [h | acc])
20
20
 
21
21
  @spec map(list, (any -> any)) :: list
22
22
  def map(l, f), do: do_map(l, f, []) |> reverse()
23
23
 
24
24
  defp do_map([], _, acc), do: acc
25
- defp do_map([h|t], f, acc), do: do_map(t, f, [f.(h)|acc])
25
+ defp do_map([h | t], f, acc), do: do_map(t, f, [f.(h) | acc])
26
26
 
27
27
  @spec filter(list, (any -> as_boolean(term))) :: list
28
28
  def filter(l, f), do: do_filter(l, f, []) |> reverse()
29
29
 
30
30
  defp do_filter([], _, acc), do: acc
31
- defp do_filter([h|t], f, acc) do
31
+
32
+ defp do_filter([h | t], f, acc) do
32
33
  if f.(h) do
33
- do_filter(t, f, [h|acc])
34
+ do_filter(t, f, [h | acc])
34
35
  else
35
36
  do_filter(t, f, acc)
36
37
  end
37
38
  end
38
39
 
39
40
  @type acc :: any
40
- @spec reduce(list, acc, ((any, acc) -> acc)) :: acc
41
+ @spec reduce(list, acc, (any, acc -> acc)) :: acc
41
42
  def reduce([], acc, _), do: acc
42
- def reduce([h|t], acc, f), do: reduce(t, f.(h, acc), f)
43
+ def reduce([h | t], acc, f), do: reduce(t, f.(h, acc), f)
43
44
 
44
45
  @spec append(list, list) :: list
45
46
  def append(a, b), do: do_append(reverse(a), b)
46
47
 
47
48
  defp do_append([], b), do: b
48
- defp do_append([h|t], b), do: do_append(t, [h|b])
49
+ defp do_append([h | t], b), do: do_append(t, [h | b])
49
50
 
50
51
  @spec concat([[any]]) :: [any]
51
- def concat(ll), do: reverse(ll) |> reduce([], &(append(&1, &2)))
52
+ def concat(ll), do: reverse(ll) |> reduce([], &append(&1, &2))
52
53
  end