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
@@ -1,10 +1,10 @@
1
1
  defmodule Triangle do
2
- def kind(a, b, c), do: kind Enum.sort [a, b, c]
2
+ def kind(a, b, c), do: kind(Enum.sort([a, b, c]))
3
3
 
4
- defp kind([a, _, _]) when a <= 0, do: { :error, "all side lengths must be positive" }
5
- defp kind([a, b, c]) when a + b <= c, do: { :error, "side lengths violate triangle inequality" }
6
- defp kind([x, x, x]), do: { :ok, :equilateral }
7
- defp kind([x, x, _]), do: { :ok, :isosceles }
8
- defp kind([_, x, x]), do: { :ok, :isosceles }
9
- defp kind([_, _, _]), do: { :ok, :scalene }
4
+ defp kind([a, _, _]) when a <= 0, do: {:error, "all side lengths must be positive"}
5
+ defp kind([a, b, c]) when a + b <= c, do: {:error, "side lengths violate triangle inequality"}
6
+ defp kind([x, x, x]), do: {:ok, :equilateral}
7
+ defp kind([x, x, _]), do: {:ok, :isosceles}
8
+ defp kind([_, x, x]), do: {:ok, :isosceles}
9
+ defp kind([_, _, _]), do: {:ok, :scalene}
10
10
  end
@@ -4,8 +4,7 @@ defmodule Triangle do
4
4
  @doc """
5
5
  Return the kind of triangle of a triangle with 'a', 'b' and 'c' as lengths.
6
6
  """
7
- @spec kind(number, number, number) :: { :ok, kind } | { :error, String.t }
7
+ @spec kind(number, number, number) :: {:ok, kind} | {:error, String.t()}
8
8
  def kind(a, b, c) do
9
-
10
9
  end
11
10
  end
@@ -2,84 +2,84 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("triangle.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 TriangleTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  # @tag :pending
12
12
  test "equilateral triangles have equal sides" do
13
- assert Triangle.kind(2, 2, 2) == { :ok, :equilateral }
13
+ assert Triangle.kind(2, 2, 2) == {:ok, :equilateral}
14
14
  end
15
15
 
16
16
  @tag :pending
17
17
  test "larger equilateral triangles also have equal sides" do
18
- assert Triangle.kind(10, 10, 10) == { :ok, :equilateral }
18
+ assert Triangle.kind(10, 10, 10) == {:ok, :equilateral}
19
19
  end
20
20
 
21
21
  @tag :pending
22
22
  test "isosceles triangles have last two sides equal" do
23
- assert Triangle.kind(3, 4, 4) == { :ok, :isosceles }
23
+ assert Triangle.kind(3, 4, 4) == {:ok, :isosceles}
24
24
  end
25
25
 
26
26
  @tag :pending
27
27
  test "isosceles triangles have first and last sides equal" do
28
- assert Triangle.kind(4, 3, 4) == { :ok, :isosceles }
28
+ assert Triangle.kind(4, 3, 4) == {:ok, :isosceles}
29
29
  end
30
30
 
31
31
  @tag :pending
32
32
  test "isosceles triangles have two first sides equal" do
33
- assert Triangle.kind(4, 4, 3) == { :ok, :isosceles }
33
+ assert Triangle.kind(4, 4, 3) == {:ok, :isosceles}
34
34
  end
35
35
 
36
36
  @tag :pending
37
37
  test "isosceles triangles have in fact exactly two sides equal" do
38
- assert Triangle.kind(10, 10, 2) == { :ok, :isosceles }
38
+ assert Triangle.kind(10, 10, 2) == {:ok, :isosceles}
39
39
  end
40
40
 
41
41
  @tag :pending
42
42
  test "scalene triangles have no equal sides" do
43
- assert Triangle.kind(3, 4, 5) == { :ok, :scalene }
43
+ assert Triangle.kind(3, 4, 5) == {:ok, :scalene}
44
44
  end
45
45
 
46
46
  @tag :pending
47
47
  test "scalene triangles have no equal sides at a larger scale too" do
48
- assert Triangle.kind(10, 11, 12) == { :ok, :scalene }
48
+ assert Triangle.kind(10, 11, 12) == {:ok, :scalene}
49
49
  end
50
50
 
51
51
  @tag :pending
52
52
  test "scalene triangles have no equal sides in descending order either" do
53
- assert Triangle.kind(5, 4, 2) == { :ok, :scalene }
53
+ assert Triangle.kind(5, 4, 2) == {:ok, :scalene}
54
54
  end
55
55
 
56
56
  @tag :pending
57
57
  test "very small triangles are legal" do
58
- assert Triangle.kind(0.4, 0.6, 0.3) == { :ok, :scalene }
58
+ assert Triangle.kind(0.4, 0.6, 0.3) == {:ok, :scalene}
59
59
  end
60
60
 
61
61
  @tag :pending
62
62
  test "triangles with no size are illegal" do
63
- assert Triangle.kind(0, 0, 0) == { :error, "all side lengths must be positive" }
63
+ assert Triangle.kind(0, 0, 0) == {:error, "all side lengths must be positive"}
64
64
  end
65
65
 
66
66
  @tag :pending
67
67
  test "triangles with negative sides are illegal" do
68
- assert Triangle.kind(3, 4, -5) == { :error, "all side lengths must be positive" }
68
+ assert Triangle.kind(3, 4, -5) == {:error, "all side lengths must be positive"}
69
69
  end
70
70
 
71
71
  @tag :pending
72
72
  test "triangles violating triangle inequality are illegal" do
73
- assert Triangle.kind(1, 1, 3) == { :error, "side lengths violate triangle inequality" }
73
+ assert Triangle.kind(1, 1, 3) == {:error, "side lengths violate triangle inequality"}
74
74
  end
75
75
 
76
76
  @tag :pending
77
77
  test "triangles violating triangle inequality are illegal 2" do
78
- assert Triangle.kind(2, 4, 2) == { :error, "side lengths violate triangle inequality" }
78
+ assert Triangle.kind(2, 4, 2) == {:error, "side lengths violate triangle inequality"}
79
79
  end
80
80
 
81
81
  @tag :pending
82
82
  test "triangles violating triangle inequality are illegal 3" do
83
- assert Triangle.kind(7, 3, 2) == { :error, "side lengths violate triangle inequality" }
83
+ assert Triangle.kind(7, 3, 2) == {:error, "side lengths violate triangle inequality"}
84
84
  end
85
85
  end
@@ -14,10 +14,10 @@ defmodule TwelveDays do
14
14
  {"twelve", "twelfth", "Drummers Drumming"}
15
15
  ]
16
16
 
17
- for { { count, ordinal, gift }, number } <- @days |> Enum.with_index(1) do
17
+ for {{count, ordinal, gift}, number} <- @days |> Enum.with_index(1) do
18
18
  defp count(unquote(number)), do: unquote(count)
19
19
  defp ordinal(unquote(number)), do: unquote(ordinal)
20
- defp gift(unquote(number)), do: "#{count(unquote(number))} #{ unquote(gift) }"
20
+ defp gift(unquote(number)), do: "#{count(unquote(number))} #{unquote(gift)}"
21
21
  end
22
22
 
23
23
  @doc """
@@ -26,11 +26,16 @@ defmodule TwelveDays do
26
26
  """
27
27
  @spec verse(number :: integer) :: String.t()
28
28
  def verse(number) do
29
- "On the #{ordinal(number)} day of Christmas my true love gave to me, #{gifts_for_day(number, [])}."
29
+ "On the #{ordinal(number)} day of Christmas my true love gave to me, #{
30
+ gifts_for_day(number, [])
31
+ }."
30
32
  end
31
33
 
32
34
  defp gifts_for_day(1, []), do: gift(1)
33
- defp gifts_for_day(1, results), do: ["and #{gift(1)}" | results] |> Enum.reverse |> Enum.join(", ")
35
+
36
+ defp gifts_for_day(1, results),
37
+ do: ["and #{gift(1)}" | results] |> Enum.reverse() |> Enum.join(", ")
38
+
34
39
  defp gifts_for_day(number, results), do: gifts_for_day(number - 1, [gift(number) | results])
35
40
 
36
41
  @doc """
@@ -47,7 +52,6 @@ defmodule TwelveDays do
47
52
  @doc """
48
53
  Sing all 12 verses, in order, one verse per line.
49
54
  """
50
- @spec sing():: String.t()
55
+ @spec sing() :: String.t()
51
56
  def sing, do: verses(1, 12)
52
57
  end
53
-
@@ -18,8 +18,7 @@ defmodule TwelveDays do
18
18
  @doc """
19
19
  Sing all 12 verses, in order, one verse per line.
20
20
  """
21
- @spec sing():: String.t()
21
+ @spec sing() :: String.t()
22
22
  def sing do
23
23
  end
24
24
  end
25
-
@@ -2,85 +2,95 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("twelve_days.exs", __DIR__)
3
3
  end
4
4
 
5
- ExUnit.start
6
- ExUnit.configure trace: true, exclude: :pending
5
+ ExUnit.start()
6
+ ExUnit.configure(trace: true, exclude: :pending)
7
7
 
8
8
  defmodule TwelveDaysTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  describe "verse" do
12
- #@tag :pending
12
+ # @tag :pending
13
13
  test "first verse" do
14
- assert TwelveDays.verse(1) == "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree."
14
+ assert TwelveDays.verse(1) ==
15
+ "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree."
15
16
  end
16
17
 
17
18
  @tag :pending
18
19
  test "sixth verse" do
19
- assert TwelveDays.verse(6) == "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
20
+ assert TwelveDays.verse(6) ==
21
+ "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
20
22
  end
21
23
 
22
24
  @tag :pending
23
25
  test "last verse" do
24
- assert TwelveDays.verse(12) == "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."
26
+ assert TwelveDays.verse(12) ==
27
+ "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."
25
28
  end
26
29
  end
27
30
 
28
31
  describe "verses" do
29
32
  @tag :pending
30
33
  test "1-3" do
31
- assert TwelveDays.verses(1, 3) == """
32
- On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
33
- On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
34
- On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
35
- """ |> String.trim
34
+ assert TwelveDays.verses(1, 3) ==
35
+ """
36
+ On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
37
+ On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
38
+ On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
39
+ """
40
+ |> String.trim()
36
41
  end
37
42
 
38
43
  @tag :pending
39
44
  test "4-6" do
40
- assert TwelveDays.verses(4, 6) == """
41
- On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
42
- On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
43
- On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
44
- """ |> String.trim
45
+ assert TwelveDays.verses(4, 6) ==
46
+ """
47
+ On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
48
+ On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
49
+ On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
50
+ """
51
+ |> String.trim()
45
52
  end
46
53
 
47
54
  @tag :pending
48
55
  test "1-12" do
49
- assert TwelveDays.verses(1, 12) == """
50
- On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
51
- On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
52
- On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
53
- On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
54
- On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
55
- On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
56
- On the seventh day of Christmas my true love gave to me, 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.
57
- On the eighth day of Christmas my true love gave to me, 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.
58
- On the ninth day of Christmas my true love gave to me, 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.
59
- On the tenth day of Christmas my true love gave to me, 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.
60
- On the eleventh day of Christmas my true love gave to me, 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.
61
- 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.
62
- """ |> String.trim
56
+ assert TwelveDays.verses(1, 12) ==
57
+ """
58
+ On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
59
+ On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
60
+ On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
61
+ On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
62
+ On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
63
+ On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
64
+ On the seventh day of Christmas my true love gave to me, 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.
65
+ On the eighth day of Christmas my true love gave to me, 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.
66
+ On the ninth day of Christmas my true love gave to me, 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.
67
+ On the tenth day of Christmas my true love gave to me, 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.
68
+ On the eleventh day of Christmas my true love gave to me, 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.
69
+ 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.
70
+ """
71
+ |> String.trim()
63
72
  end
64
73
  end
65
74
 
66
75
  describe "sing" do
67
76
  @tag :pending
68
77
  test "all 12 verses" do
69
- assert TwelveDays.sing == """
70
- On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
71
- On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
72
- On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
73
- On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
74
- On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
75
- On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
76
- On the seventh day of Christmas my true love gave to me, 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.
77
- On the eighth day of Christmas my true love gave to me, 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.
78
- On the ninth day of Christmas my true love gave to me, 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.
79
- On the tenth day of Christmas my true love gave to me, 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.
80
- On the eleventh day of Christmas my true love gave to me, 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.
81
- 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.
82
- """ |> String.trim
78
+ assert TwelveDays.sing() ==
79
+ """
80
+ On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
81
+ On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
82
+ On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
83
+ On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
84
+ On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
85
+ On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
86
+ On the seventh day of Christmas my true love gave to me, 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.
87
+ On the eighth day of Christmas my true love gave to me, 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.
88
+ On the ninth day of Christmas my true love gave to me, 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.
89
+ On the tenth day of Christmas my true love gave to me, 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.
90
+ On the eleventh day of Christmas my true love gave to me, 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.
91
+ 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.
92
+ """
93
+ |> String.trim()
83
94
  end
84
95
  end
85
96
  end
86
-
@@ -3,15 +3,15 @@ defmodule Words do
3
3
 
4
4
  def count(sentence) do
5
5
  sentence
6
- |> String.downcase
7
- |> remove_punctuation
8
- |> to_words
9
- |> summarize
6
+ |> String.downcase()
7
+ |> remove_punctuation
8
+ |> to_words
9
+ |> summarize
10
10
  end
11
11
 
12
12
  defp remove_punctuation(string), do: String.replace(string, @ascii_punctuation, " ")
13
13
 
14
- defp to_words(sentence), do: List.flatten String.split(sentence)
14
+ defp to_words(sentence), do: List.flatten(String.split(sentence))
15
15
 
16
16
  defp summarize(words) do
17
17
  Enum.reduce(words, %{}, &add_count/2)
@@ -4,8 +4,7 @@ defmodule Words do
4
4
 
5
5
  Words are compared case-insensitively.
6
6
  """
7
- @spec count(String.t) :: map
7
+ @spec count(String.t()) :: map
8
8
  def count(sentence) do
9
-
10
9
  end
11
10
  end
@@ -2,25 +2,25 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("word_count.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 WordsTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  test "count one word" do
12
- assert Words.count("word") == %{ "word" => 1 }
12
+ assert Words.count("word") == %{"word" => 1}
13
13
  end
14
14
 
15
15
  @tag :pending
16
16
  test "count one of each" do
17
- expected = %{ "one" => 1 , "of" => 1 , "each" => 1 }
17
+ expected = %{"one" => 1, "of" => 1, "each" => 1}
18
18
  assert Words.count("one of each") == expected
19
19
  end
20
20
 
21
21
  @tag :pending
22
22
  test "count multiple occurrences" do
23
- expected = %{ "one" => 1 , "fish" => 4 , "two" => 1 , "red" => 1 , "blue" => 1 }
23
+ expected = %{"one" => 1, "fish" => 4, "two" => 1, "red" => 1, "blue" => 1}
24
24
  assert Words.count("one fish two fish red fish blue fish") == expected
25
25
  end
26
26
 
@@ -6,7 +6,7 @@ defmodule Wordy do
6
6
  @doc """
7
7
  Calculate the math problem in the sentence.
8
8
  """
9
- @spec answer(String.t) :: integer
9
+ @spec answer(String.t()) :: integer
10
10
  def answer(question) do
11
11
  question
12
12
  |> tokenize
@@ -17,34 +17,33 @@ defmodule Wordy do
17
17
 
18
18
  defp tokenize(sentence) do
19
19
  Regex.scan(~r/(#{all_matchers()})/, sentence)
20
- |> Enum.map(&(Enum.at(&1,0)))
20
+ |> Enum.map(&Enum.at(&1, 0))
21
21
  end
22
22
 
23
23
  defp all_matchers do
24
- Enum.map(@parts, &(&1.matcher)) |> Enum.join("|")
24
+ Enum.map(@parts, & &1.matcher) |> Enum.join("|")
25
25
  end
26
26
 
27
27
  defp parse(tokens) do
28
- for token <- tokens,
29
- part = Enum.find(@parts, &(&1.match?(token))) do
28
+ for token <- tokens, part = Enum.find(@parts, & &1.match?(token)) do
30
29
  part.parse(token)
31
30
  end
32
31
  end
33
32
 
34
33
  defp validate(parsed) do
35
- if Enum.find(parsed, &(is_function &1)) do
34
+ if Enum.find(parsed, &is_function(&1)) do
36
35
  parsed
37
36
  else
38
37
  raise ArgumentError
39
38
  end
40
39
  end
41
40
 
42
- defp calculate([ left | [] ] ) do
41
+ defp calculate([left | []]) do
43
42
  left
44
43
  end
45
44
 
46
- defp calculate([ left, operation, right | t ]) do
47
- calculate([ operation.(left, right) | t ])
45
+ defp calculate([left, operation, right | t]) do
46
+ calculate([operation.(left, right) | t])
48
47
  end
49
48
 
50
49
  defmodule Number do
@@ -53,7 +52,7 @@ defmodule Wordy do
53
52
  end
54
53
 
55
54
  def match?(token) do
56
- String.match?(token,~r/#{matcher()}/)
55
+ String.match?(token, ~r/#{matcher()}/)
57
56
  end
58
57
 
59
58
  def parse(token) do
@@ -67,7 +66,7 @@ defmodule Wordy do
67
66
  end
68
67
 
69
68
  def match?(token) do
70
- String.match?(token,~r/#{matcher()}/)
69
+ String.match?(token, ~r/#{matcher()}/)
71
70
  end
72
71
 
73
72
  def parse(_) do
@@ -85,7 +84,7 @@ defmodule Wordy do
85
84
  end
86
85
 
87
86
  def match?(token) do
88
- String.match?(token,~r/#{matcher()}/)
87
+ String.match?(token, ~r/#{matcher()}/)
89
88
  end
90
89
 
91
90
  def parse(_) do
@@ -103,7 +102,7 @@ defmodule Wordy do
103
102
  end
104
103
 
105
104
  def match?(token) do
106
- String.match?(token,~r/#{matcher()}/)
105
+ String.match?(token, ~r/#{matcher()}/)
107
106
  end
108
107
 
109
108
  def parse(_) do
@@ -121,7 +120,7 @@ defmodule Wordy do
121
120
  end
122
121
 
123
122
  def match?(token) do
124
- String.match?(token,~r/#{matcher()}/)
123
+ String.match?(token, ~r/#{matcher()}/)
125
124
  end
126
125
 
127
126
  def parse(_) do