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
@@ -2,15 +2,15 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("matrix.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 MatrixTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  @input "1 2 3\n4 5 6\n7 8 9"
12
12
 
13
- #@tag :pending
13
+ # @tag :pending
14
14
  test "reading from and writing to string" do
15
15
  matrix = Matrix.from_string(@input)
16
16
  assert Matrix.to_string(matrix) == @input
@@ -21,10 +21,10 @@ defmodule MatrixTest do
21
21
  matrix = Matrix.from_string(@input)
22
22
 
23
23
  assert Matrix.rows(matrix) == [
24
- [1, 2, 3],
25
- [4, 5, 6],
26
- [7, 8, 9]
27
- ]
24
+ [1, 2, 3],
25
+ [4, 5, 6],
26
+ [7, 8, 9]
27
+ ]
28
28
  end
29
29
 
30
30
  @tag :pending
@@ -41,10 +41,10 @@ defmodule MatrixTest do
41
41
  matrix = Matrix.from_string(@input)
42
42
 
43
43
  assert Matrix.columns(matrix) == [
44
- [1, 4, 7],
45
- [2, 5, 8],
46
- [3, 6, 9]
47
- ]
44
+ [1, 4, 7],
45
+ [2, 5, 8],
46
+ [3, 6, 9]
47
+ ]
48
48
  end
49
49
 
50
50
  @tag :pending
@@ -4,8 +4,13 @@ defmodule Meetup do
4
4
  """
5
5
 
6
6
  @type weekday ::
7
- :monday | :tuesday | :wednesday
8
- | :thursday | :friday | :saturday | :sunday
7
+ :monday
8
+ | :tuesday
9
+ | :wednesday
10
+ | :thursday
11
+ | :friday
12
+ | :saturday
13
+ | :sunday
9
14
 
10
15
  @type schedule :: :first | :second | :third | :fourth | :last | :teenth
11
16
 
@@ -15,37 +20,39 @@ defmodule Meetup do
15
20
  The schedule is in which week (1..4, last or "teenth") the meetup date should
16
21
  fall.
17
22
  """
18
- @spec meetup(pos_integer, pos_integer, weekday, schedule) :: :calendar.date
23
+ @spec meetup(pos_integer, pos_integer, weekday, schedule) :: :calendar.date()
19
24
  def meetup(year, month, weekday, :last) do
20
25
  start_day = :calendar.last_day_of_the_month(year, month) - 6
21
26
  meetup_nth(year, month, start_day, weekday)
22
27
  end
28
+
23
29
  def meetup(year, month, weekday, schedule) do
24
30
  meetup_nth(year, month, schedule_start(schedule), weekday)
25
31
  end
26
32
 
27
33
  defp meetup_nth(year, month, start_day, weekday) do
28
34
  w = weekday_num(weekday)
35
+
29
36
  case w - :calendar.day_of_the_week(year, month, start_day) do
30
- n when n < 0 -> {year, month, start_day + n + 7}
31
- n -> {year, month, start_day + n}
37
+ n when n < 0 -> {year, month, start_day + n + 7}
38
+ n -> {year, month, start_day + n}
32
39
  end
33
40
  end
34
41
 
35
42
  # Aliases for the day of week numbers from Erlang.
36
43
  #
37
44
  # Case matching is used because that's very fast in Elixir/Erlang.
38
- defp weekday_num(:monday), do: 1
39
- defp weekday_num(:tuesday), do: 2
45
+ defp weekday_num(:monday), do: 1
46
+ defp weekday_num(:tuesday), do: 2
40
47
  defp weekday_num(:wednesday), do: 3
41
- defp weekday_num(:thursday), do: 4
42
- defp weekday_num(:friday), do: 5
43
- defp weekday_num(:saturday), do: 6
44
- defp weekday_num(:sunday), do: 7
48
+ defp weekday_num(:thursday), do: 4
49
+ defp weekday_num(:friday), do: 5
50
+ defp weekday_num(:saturday), do: 6
51
+ defp weekday_num(:sunday), do: 7
45
52
 
46
- defp schedule_start(:first), do: 1
53
+ defp schedule_start(:first), do: 1
47
54
  defp schedule_start(:second), do: 8
48
- defp schedule_start(:third), do: 15
55
+ defp schedule_start(:third), do: 15
49
56
  defp schedule_start(:fourth), do: 22
50
57
  defp schedule_start(:teenth), do: 13
51
58
  end
@@ -4,8 +4,13 @@ defmodule Meetup do
4
4
  """
5
5
 
6
6
  @type weekday ::
7
- :monday | :tuesday | :wednesday
8
- | :thursday | :friday | :saturday | :sunday
7
+ :monday
8
+ | :tuesday
9
+ | :wednesday
10
+ | :thursday
11
+ | :friday
12
+ | :saturday
13
+ | :sunday
9
14
 
10
15
  @type schedule :: :first | :second | :third | :fourth | :last | :teenth
11
16
 
@@ -15,8 +20,7 @@ defmodule Meetup do
15
20
  The schedule is in which week (1..4, last or "teenth") the meetup date should
16
21
  fall.
17
22
  """
18
- @spec meetup(pos_integer, pos_integer, weekday, schedule) :: :calendar.date
23
+ @spec meetup(pos_integer, pos_integer, weekday, schedule) :: :calendar.date()
19
24
  def meetup(year, month, weekday, schedule) do
20
-
21
25
  end
22
26
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("meetup.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 MeetupTest do
9
9
  use ExUnit.Case
@@ -1,11 +1,9 @@
1
1
  defmodule Minesweeper do
2
-
3
2
  @doc """
4
3
  Annotate empty spots next to mines with the number of mines next to them.
5
4
  """
6
- @spec annotate([String.t]) :: [String.t]
5
+ @spec annotate([String.t()]) :: [String.t()]
7
6
 
8
7
  def annotate(board) do
9
-
10
8
  end
11
9
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("minesweeper.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 MinesweeperTest do
9
9
  use ExUnit.Case
@@ -18,25 +18,19 @@ defmodule MinesweeperTest do
18
18
 
19
19
  @tag :pending
20
20
  test "empty board" do
21
- b = [" ",
22
- " ",
23
- " "]
21
+ b = [" ", " ", " "]
24
22
  assert Minesweeper.annotate(clean(b)) == b
25
23
  end
26
24
 
27
25
  @tag :pending
28
26
  test "board full of mines" do
29
- b = ["***",
30
- "***",
31
- "***"]
27
+ b = ["***", "***", "***"]
32
28
  assert Minesweeper.annotate(clean(b)) == b
33
29
  end
34
30
 
35
31
  @tag :pending
36
32
  test "surrounded" do
37
- b = ["***",
38
- "*8*",
39
- "***"]
33
+ b = ["***", "*8*", "***"]
40
34
  assert Minesweeper.annotate(clean(b)) == b
41
35
  end
42
36
 
@@ -48,21 +42,13 @@ defmodule MinesweeperTest do
48
42
 
49
43
  @tag :pending
50
44
  test "vertical line" do
51
- b = ["1",
52
- "*",
53
- "2",
54
- "*",
55
- "1"]
45
+ b = ["1", "*", "2", "*", "1"]
56
46
  assert Minesweeper.annotate(clean(b)) == b
57
47
  end
58
48
 
59
49
  @tag :pending
60
50
  test "cross" do
61
- b = [" 2*2 ",
62
- "25*52",
63
- "*****",
64
- "25*52",
65
- " 2*2 "]
51
+ b = [" 2*2 ", "25*52", "*****", "25*52", " 2*2 "]
66
52
  assert Minesweeper.annotate(clean(b)) == b
67
53
  end
68
54
  end
@@ -1,16 +1,16 @@
1
1
  defmodule Prime do
2
-
3
2
  @doc """
4
3
  Generates the nth prime.
5
4
  """
6
5
  @spec nth(non_neg_integer) :: non_neg_integer
7
6
  def nth(count) do
8
- if count < 1, do: raise ArgumentError
7
+ if count < 1, do: raise(ArgumentError)
9
8
  nth(count, 1000)
10
9
  end
11
10
 
12
11
  defp nth(count, max) do
13
12
  primes = primes_to(max)
13
+
14
14
  cond do
15
15
  Enum.count(primes) < count -> nth(count, max * 4)
16
16
  true -> Enum.at(primes, count - 1)
@@ -18,13 +18,13 @@ defmodule Prime do
18
18
  end
19
19
 
20
20
  defp primes_to(limit) do
21
- Enum.reduce(2..limit, [], fn(number, primes) ->
22
- if is_prime?(number, primes), do: [number|primes], else: primes end)
23
- |> Enum.reverse
21
+ Enum.reduce(2..limit, [], fn number, primes ->
22
+ if is_prime?(number, primes), do: [number | primes], else: primes
23
+ end)
24
+ |> Enum.reverse()
24
25
  end
25
26
 
26
27
  defp is_prime?(number, primes) do
27
28
  Enum.all?(primes, &(rem(number, &1) != 0))
28
29
  end
29
-
30
- end
30
+ end
@@ -1,5 +1,4 @@
1
1
  defmodule Prime do
2
-
3
2
  @doc """
4
3
  Generates the nth prime.
5
4
  """
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("nth_prime.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 NthPrimeTest do
9
9
  use ExUnit.Case
@@ -30,6 +30,6 @@ defmodule NthPrimeTest do
30
30
 
31
31
  @tag :pending
32
32
  test "weird case" do
33
- catch_error Prime.nth(0)
33
+ catch_error(Prime.nth(0))
34
34
  end
35
35
  end
@@ -13,10 +13,11 @@ defmodule NucleotideCount do
13
13
  1
14
14
  """
15
15
 
16
- def count(strand, nucleotide) when nucleotide in(@nucleotides) do
17
- Enum.count strand, &(&1 == nucleotide)
16
+ def count(strand, nucleotide) when nucleotide in @nucleotides do
17
+ Enum.count(strand, &(&1 == nucleotide))
18
18
  end
19
- def count(_strand, _nucleotide), do: raise ArgumentError
19
+
20
+ def count(_strand, _nucleotide), do: raise(ArgumentError)
20
21
 
21
22
  @doc """
22
23
  Returns a summary of counts by nucleotide.
@@ -14,10 +14,8 @@ defmodule NucleotideCount do
14
14
  """
15
15
  @spec count([char], char) :: non_neg_integer
16
16
  def count(strand, nucleotide) do
17
-
18
17
  end
19
18
 
20
-
21
19
  @doc """
22
20
  Returns a summary of counts by nucleotide.
23
21
 
@@ -28,6 +26,5 @@ defmodule NucleotideCount do
28
26
  """
29
27
  @spec histogram([char]) :: map
30
28
  def histogram(strand) do
31
-
32
29
  end
33
30
  end
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("nucleotide_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 NucleotideCountTest do
9
9
  use ExUnit.Case
@@ -1,10 +1,9 @@
1
1
  defmodule OCRNumbers do
2
-
3
2
  @doc """
4
3
  Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or
5
4
  whether it is garbled.
6
5
  """
7
- @spec convert([String.t]) :: String.t
6
+ @spec convert([String.t()]) :: String.t()
8
7
  def convert(input) do
9
8
  Enum.chunk(input, 4)
10
9
  |> Enum.map(fn row_set -> _convert(row_set, "") end)
@@ -21,9 +20,10 @@ defmodule OCRNumbers do
21
20
  def _convert(_, {:error, _} = error), do: error
22
21
  def _convert(input, _) when length(input) != 4, do: {:error, 'invalid line count'}
23
22
  def _convert(["", "", "", ""], output), do: output
23
+
24
24
  def _convert(input, output) do
25
25
  split_strings = Enum.map(input, fn a -> String.split_at(a, 3) end)
26
- this_character = Enum.map(split_strings, fn ({a, _}) -> a end)
26
+ this_character = Enum.map(split_strings, fn {a, _} -> a end)
27
27
  other_characters = Enum.map(split_strings, fn {_, a} -> a end)
28
28
  lengths = Enum.map(this_character, fn a -> String.length(a) end)
29
29
 
@@ -1,10 +1,9 @@
1
1
  defmodule OCRNumbers do
2
-
3
2
  @doc """
4
3
  Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or
5
4
  whether it is garbled.
6
5
  """
7
- @spec convert([String.t]) :: String.t
6
+ @spec convert([String.t()]) :: String.t()
8
7
  def convert(input) do
9
8
  end
10
9
  end
@@ -2,238 +2,223 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
2
  Code.load_file("ocr_numbers.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 OCRNumbersTest do
9
9
  use ExUnit.Case
10
10
 
11
11
  # @tag :pending
12
12
  test "Recognizes 0" do
13
- number = OCRNumbers.convert(
14
- [
13
+ number =
14
+ OCRNumbers.convert([
15
15
  " _ ",
16
16
  "| |",
17
17
  "|_|",
18
18
  " "
19
- ]
20
- )
19
+ ])
20
+
21
21
  assert number == {:ok, "0"}
22
22
  end
23
23
 
24
24
  @tag :pending
25
25
  test "Recognizes 1" do
26
- number = OCRNumbers.convert(
27
- [
26
+ number =
27
+ OCRNumbers.convert([
28
28
  " ",
29
29
  " |",
30
30
  " |",
31
31
  " "
32
- ]
33
- )
32
+ ])
34
33
 
35
34
  assert number == {:ok, "1"}
36
35
  end
37
36
 
38
37
  @tag :pending
39
38
  test "Unreadable but correctly sized inputs return ?" do
40
- number = OCRNumbers.convert(
41
- [
39
+ number =
40
+ OCRNumbers.convert([
42
41
  " ",
43
42
  " _",
44
43
  " |",
45
44
  " "
46
- ]
47
- )
45
+ ])
48
46
 
49
47
  assert number == {:ok, "?"}
50
48
  end
51
49
 
52
50
  @tag :pending
53
51
  test "Input with a number of lines that is not a multiple of four raises an error" do
54
- number = OCRNumbers.convert(
55
- [
52
+ number =
53
+ OCRNumbers.convert([
56
54
  " _ ",
57
55
  "| |",
58
56
  " "
59
- ]
60
- )
57
+ ])
61
58
 
62
59
  assert number == {:error, 'invalid line count'}
63
60
  end
64
61
 
65
62
  @tag :pending
66
63
  test "Input with a number of columns that is not a multiple of three raises an error" do
67
- number = OCRNumbers.convert(
68
- [
64
+ number =
65
+ OCRNumbers.convert([
69
66
  " ",
70
67
  " |",
71
68
  " |",
72
69
  " "
73
- ]
74
- )
70
+ ])
75
71
 
76
72
  assert number == {:error, 'invalid column count'}
77
73
  end
78
74
 
79
75
  @tag :pending
80
76
  test "Recognizes 110101100" do
81
- number = OCRNumbers.convert(
82
- [
77
+ number =
78
+ OCRNumbers.convert([
83
79
  " _ _ _ _ ",
84
80
  " | || | || | | || || |",
85
81
  " | ||_| ||_| | ||_||_|",
86
82
  " "
87
- ]
88
- )
83
+ ])
89
84
 
90
85
  assert number == {:ok, "110101100"}
91
86
  end
92
87
 
93
88
  @tag :pending
94
89
  test "Garbled numbers in a string are replaced with ?" do
95
- number = OCRNumbers.convert(
96
- [
90
+ number =
91
+ OCRNumbers.convert([
97
92
  " _ _ _ ",
98
93
  " | || | || | || || |",
99
94
  " | | _| ||_| | ||_||_|",
100
95
  " "
101
- ]
102
- )
96
+ ])
103
97
 
104
98
  assert number == {:ok, "11?10?1?0"}
105
99
  end
106
100
 
107
101
  @tag :pending
108
102
  test "Recognizes 2" do
109
- number = OCRNumbers.convert(
110
- [
103
+ number =
104
+ OCRNumbers.convert([
111
105
  " _ ",
112
106
  " _|",
113
107
  "|_ ",
114
108
  " "
115
- ]
116
- )
109
+ ])
117
110
 
118
111
  assert number == {:ok, "2"}
119
112
  end
120
113
 
121
114
  @tag :pending
122
115
  test "Recognizes 3" do
123
- number = OCRNumbers.convert(
124
- [
116
+ number =
117
+ OCRNumbers.convert([
125
118
  " _ ",
126
119
  " _|",
127
120
  " _|",
128
121
  " "
129
- ]
130
- )
122
+ ])
131
123
 
132
124
  assert number == {:ok, "3"}
133
125
  end
134
126
 
135
127
  @tag :pending
136
128
  test "Recognizes 4" do
137
- number = OCRNumbers.convert(
138
- [
129
+ number =
130
+ OCRNumbers.convert([
139
131
  " ",
140
132
  "|_|",
141
133
  " |",
142
134
  " "
143
- ]
144
- )
135
+ ])
145
136
 
146
137
  assert number == {:ok, "4"}
147
138
  end
148
139
 
149
140
  @tag :pending
150
141
  test "Recognizes 5" do
151
- number = OCRNumbers.convert(
152
- [
142
+ number =
143
+ OCRNumbers.convert([
153
144
  " _ ",
154
145
  "|_ ",
155
146
  " _|",
156
147
  " "
157
- ]
158
- )
148
+ ])
159
149
 
160
150
  assert number == {:ok, "5"}
161
151
  end
162
152
 
163
153
  @tag :pending
164
154
  test "Recognizes 6" do
165
- number = OCRNumbers.convert(
166
- [
155
+ number =
156
+ OCRNumbers.convert([
167
157
  " _ ",
168
158
  "|_ ",
169
159
  "|_|",
170
160
  " "
171
- ]
172
- )
161
+ ])
173
162
 
174
163
  assert number == {:ok, "6"}
175
164
  end
176
165
 
177
166
  @tag :pending
178
167
  test "Regonizes 7" do
179
- number = OCRNumbers.convert(
180
- [
168
+ number =
169
+ OCRNumbers.convert([
181
170
  " _ ",
182
171
  " |",
183
172
  " |",
184
173
  " "
185
- ]
186
- )
174
+ ])
187
175
 
188
176
  assert number == {:ok, "7"}
189
177
  end
190
178
 
191
179
  @tag :pending
192
180
  test "Recognizes 8" do
193
- number = OCRNumbers.convert(
194
- [
181
+ number =
182
+ OCRNumbers.convert([
195
183
  " _ ",
196
184
  "|_|",
197
185
  "|_|",
198
186
  " "
199
- ]
200
- )
187
+ ])
201
188
 
202
189
  assert number == {:ok, "8"}
203
190
  end
204
191
 
205
192
  @tag :pending
206
193
  test "Recognizes 9" do
207
- number = OCRNumbers.convert(
208
- [
194
+ number =
195
+ OCRNumbers.convert([
209
196
  " _ ",
210
197
  "|_|",
211
198
  " _|",
212
199
  " "
213
- ]
214
- )
200
+ ])
215
201
 
216
202
  assert number == {:ok, "9"}
217
203
  end
218
204
 
219
205
  @tag :pending
220
206
  test "Recognizes string of decimal numbers" do
221
- number = OCRNumbers.convert(
222
- [
207
+ number =
208
+ OCRNumbers.convert([
223
209
  " _ _ _ _ _ _ _ _ ",
224
210
  " | _| _||_||_ |_ ||_||_|| |",
225
211
  " ||_ _| | _||_| ||_| _||_|",
226
212
  " "
227
- ]
228
- )
213
+ ])
229
214
 
230
215
  assert number == {:ok, "1234567890"}
231
216
  end
232
217
 
233
218
  @tag :pending
234
219
  test "Numbers separated by empty lines are recognized. Lines are joined by commas." do
235
- number = OCRNumbers.convert(
236
- [
220
+ number =
221
+ OCRNumbers.convert([
237
222
  " _ _ ",
238
223
  " | _| _|",
239
224
  " ||_ _|",
@@ -246,8 +231,7 @@ defmodule OCRNumbersTest do
246
231
  " ||_||_|",
247
232
  " ||_| _|",
248
233
  " "
249
- ]
250
- )
234
+ ])
251
235
 
252
236
  assert number == {:ok, "123,456,789"}
253
237
  end