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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +2 -0
- data/tracks/clojure/exercises/armstrong-numbers/test/armstrong_numbers_test.clj +1 -1
- data/tracks/elixir/.formatter.exs +3 -0
- data/tracks/elixir/exercises/accumulate/accumulate_test.exs +8 -8
- data/tracks/elixir/exercises/acronym/acronym_test.exs +2 -2
- data/tracks/elixir/exercises/acronym/example.exs +3 -4
- data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +2 -2
- data/tracks/elixir/exercises/all-your-base/example.exs +14 -7
- data/tracks/elixir/exercises/allergies/allergies.exs +2 -4
- data/tracks/elixir/exercises/allergies/allergies_test.exs +17 -11
- data/tracks/elixir/exercises/anagram/anagram.exs +1 -2
- data/tracks/elixir/exercises/anagram/anagram_test.exs +13 -13
- data/tracks/elixir/exercises/anagram/example.exs +2 -1
- data/tracks/elixir/exercises/atbash-cipher/atbash_cipher.exs +2 -2
- data/tracks/elixir/exercises/atbash-cipher/atbash_cipher_test.exs +2 -2
- data/tracks/elixir/exercises/bank-account/bank_account_test.exs +10 -5
- data/tracks/elixir/exercises/beer-song/beer_song.exs +2 -2
- data/tracks/elixir/exercises/beer-song/beer_song_test.exs +225 -225
- data/tracks/elixir/exercises/beer-song/example.exs +5 -3
- data/tracks/elixir/exercises/binary-search-tree/binary_search_tree_test.exs +2 -2
- data/tracks/elixir/exercises/binary-search-tree/example.exs +1 -1
- data/tracks/elixir/exercises/binary-search/binary_search.exs +0 -1
- data/tracks/elixir/exercises/binary-search/binary_search_test.exs +2 -2
- data/tracks/elixir/exercises/binary-search/example.exs +3 -1
- data/tracks/elixir/exercises/binary/binary.exs +1 -1
- data/tracks/elixir/exercises/binary/binary_test.exs +2 -2
- data/tracks/elixir/exercises/binary/example.exs +2 -2
- data/tracks/elixir/exercises/bob/bob.exs +1 -2
- data/tracks/elixir/exercises/bob/bob_test.exs +2 -2
- data/tracks/elixir/exercises/bowling/bowling.exs +2 -3
- data/tracks/elixir/exercises/bowling/bowling_test.exs +54 -275
- data/tracks/elixir/exercises/bowling/example.exs +24 -10
- data/tracks/elixir/exercises/bracket-push/bracket_push.exs +1 -2
- data/tracks/elixir/exercises/bracket-push/bracket_push_test.exs +5 -3
- data/tracks/elixir/exercises/bracket-push/example.exs +8 -3
- data/tracks/elixir/exercises/change/change.exs +1 -2
- data/tracks/elixir/exercises/change/change_test.exs +2 -2
- data/tracks/elixir/exercises/change/example.exs +5 -1
- data/tracks/elixir/exercises/clock/clock_test.exs +8 -8
- data/tracks/elixir/exercises/clock/example.exs +5 -3
- data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture.exs +0 -1
- data/tracks/elixir/exercises/collatz-conjecture/collatz_conjecture_test.exs +3 -3
- data/tracks/elixir/exercises/collatz-conjecture/example.exs +1 -1
- data/tracks/elixir/exercises/connect/connect.exs +1 -2
- data/tracks/elixir/exercises/connect/connect_test.exs +40 -30
- data/tracks/elixir/exercises/connect/example.exs +12 -10
- data/tracks/elixir/exercises/crypto-square/crypto_square.exs +1 -2
- data/tracks/elixir/exercises/crypto-square/crypto_square_test.exs +2 -2
- data/tracks/elixir/exercises/crypto-square/example.exs +6 -5
- data/tracks/elixir/exercises/custom-set/custom_set.exs +1 -1
- data/tracks/elixir/exercises/custom-set/custom_set_test.exs +2 -2
- data/tracks/elixir/exercises/custom-set/example.exs +5 -4
- data/tracks/elixir/exercises/diamond/diamond.exs +1 -2
- data/tracks/elixir/exercises/diamond/diamond_test.exs +20 -18
- data/tracks/elixir/exercises/diamond/example.exs +10 -10
- data/tracks/elixir/exercises/difference-of-squares/difference_of_squares.exs +1 -5
- data/tracks/elixir/exercises/difference-of-squares/difference_of_squares_test.exs +5 -6
- data/tracks/elixir/exercises/difference-of-squares/example.exs +3 -4
- data/tracks/elixir/exercises/diffie-hellman/diffie_hellman.exs +7 -3
- data/tracks/elixir/exercises/diffie-hellman/diffie_hellman_test.exs +43 -23
- data/tracks/elixir/exercises/diffie-hellman/example.exs +10 -6
- data/tracks/elixir/exercises/dominoes/dominoes.exs +0 -1
- data/tracks/elixir/exercises/dominoes/dominoes_test.exs +16 -6
- data/tracks/elixir/exercises/dominoes/example.exs +9 -5
- data/tracks/elixir/exercises/dot-dsl/dot.exs +0 -1
- data/tracks/elixir/exercises/dot-dsl/dot_dsl_test.exs +107 -58
- data/tracks/elixir/exercises/dot-dsl/example.exs +18 -10
- data/tracks/elixir/exercises/etl/etl.exs +0 -1
- data/tracks/elixir/exercises/etl/etl_test.exs +34 -13
- data/tracks/elixir/exercises/etl/example.exs +6 -6
- data/tracks/elixir/exercises/flatten-array/flatten_array.exs +0 -1
- data/tracks/elixir/exercises/flatten-array/flatten_array_test.exs +8 -8
- data/tracks/elixir/exercises/forth/example.exs +5 -5
- data/tracks/elixir/exercises/forth/forth.exs +6 -9
- data/tracks/elixir/exercises/forth/forth_test.exs +107 -64
- data/tracks/elixir/exercises/gigasecond/example.exs +1 -1
- data/tracks/elixir/exercises/gigasecond/gigasecond.exs +2 -2
- data/tracks/elixir/exercises/gigasecond/gigasecond_test.exs +2 -2
- data/tracks/elixir/exercises/grade-school/example.exs +3 -3
- data/tracks/elixir/exercises/grade-school/grade_school_test.exs +26 -22
- data/tracks/elixir/exercises/grade-school/school.exs +3 -6
- data/tracks/elixir/exercises/grains/example.exs +10 -3
- data/tracks/elixir/exercises/grains/grains.exs +0 -2
- data/tracks/elixir/exercises/grains/grains_test.exs +16 -14
- data/tracks/elixir/exercises/grep/example.exs +22 -18
- data/tracks/elixir/exercises/grep/grep.exs +1 -2
- data/tracks/elixir/exercises/grep/grep_test.exs +108 -112
- data/tracks/elixir/exercises/hamming/example.exs +3 -2
- data/tracks/elixir/exercises/hamming/hamming_test.exs +7 -4
- data/tracks/elixir/exercises/hello-world/example.exs +1 -1
- data/tracks/elixir/exercises/hello-world/hello_world.exs +1 -1
- data/tracks/elixir/exercises/hello-world/hello_world_test.exs +2 -2
- data/tracks/elixir/exercises/hexadecimal/example.exs +8 -7
- data/tracks/elixir/exercises/hexadecimal/hexadecimal.exs +0 -1
- data/tracks/elixir/exercises/hexadecimal/hexadecimal_test.exs +3 -3
- data/tracks/elixir/exercises/isbn-verifier/example.exs +1 -1
- data/tracks/elixir/exercises/isbn-verifier/isbn_verifier.exs +1 -2
- data/tracks/elixir/exercises/isbn-verifier/isbn_verifier_test.exs +2 -2
- data/tracks/elixir/exercises/isogram/example.exs +5 -5
- data/tracks/elixir/exercises/isogram/isogram.exs +1 -3
- data/tracks/elixir/exercises/isogram/isogram_test.exs +2 -3
- data/tracks/elixir/exercises/kindergarten-garden/example.exs +15 -3
- data/tracks/elixir/exercises/kindergarten-garden/garden_test.exs +17 -4
- data/tracks/elixir/exercises/largest-series-product/example.exs +10 -9
- data/tracks/elixir/exercises/largest-series-product/largest_series_product.exs +1 -3
- data/tracks/elixir/exercises/largest-series-product/largest_series_product_test.exs +6 -4
- data/tracks/elixir/exercises/leap/example.exs +2 -2
- data/tracks/elixir/exercises/leap/leap.exs +0 -1
- data/tracks/elixir/exercises/leap/leap_test.exs +2 -2
- data/tracks/elixir/exercises/list-ops/example.exs +10 -9
- data/tracks/elixir/exercises/list-ops/list_ops.exs +1 -8
- data/tracks/elixir/exercises/list-ops/list_ops_test.exs +22 -25
- data/tracks/elixir/exercises/luhn/example.exs +16 -17
- data/tracks/elixir/exercises/luhn/luhn.exs +0 -2
- data/tracks/elixir/exercises/luhn/luhn_test.exs +2 -2
- data/tracks/elixir/exercises/markdown/example.exs +40 -14
- data/tracks/elixir/exercises/markdown/markdown.exs +8 -4
- data/tracks/elixir/exercises/markdown/markdown_test.exs +6 -3
- data/tracks/elixir/exercises/matrix/example.exs +6 -6
- data/tracks/elixir/exercises/matrix/matrix.exs +0 -1
- data/tracks/elixir/exercises/matrix/matrix_test.exs +11 -11
- data/tracks/elixir/exercises/meetup/example.exs +20 -13
- data/tracks/elixir/exercises/meetup/meetup.exs +8 -4
- data/tracks/elixir/exercises/meetup/meetup_test.exs +2 -2
- data/tracks/elixir/exercises/minesweeper/minesweeper.exs +1 -3
- data/tracks/elixir/exercises/minesweeper/minesweeper_test.exs +7 -21
- data/tracks/elixir/exercises/nth-prime/example.exs +7 -7
- data/tracks/elixir/exercises/nth-prime/nth_prime.exs +0 -1
- data/tracks/elixir/exercises/nth-prime/nth_prime_test.exs +3 -3
- data/tracks/elixir/exercises/nucleotide-count/example.exs +4 -3
- data/tracks/elixir/exercises/nucleotide-count/nucleotide_count.exs +0 -3
- data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +2 -2
- data/tracks/elixir/exercises/ocr-numbers/example.exs +3 -3
- data/tracks/elixir/exercises/ocr-numbers/ocr_numbers.exs +1 -2
- data/tracks/elixir/exercises/ocr-numbers/ocr_numbers_test.exs +54 -70
- data/tracks/elixir/exercises/palindrome-products/example.exs +3 -6
- data/tracks/elixir/exercises/palindrome-products/palindrome_products.exs +0 -1
- data/tracks/elixir/exercises/palindrome-products/palindrome_products_test.exs +8 -8
- data/tracks/elixir/exercises/pangram/pangram.exs +1 -1
- data/tracks/elixir/exercises/pangram/pangram_test.exs +5 -3
- data/tracks/elixir/exercises/parallel-letter-frequency/example.exs +7 -5
- data/tracks/elixir/exercises/parallel-letter-frequency/frequency.exs +1 -2
- data/tracks/elixir/exercises/parallel-letter-frequency/parallel_letter_frequency_test.exs +3 -4
- data/tracks/elixir/exercises/pascals-triangle/example.exs +2 -1
- data/tracks/elixir/exercises/pascals-triangle/pascals_triangle_test.exs +26 -8
- data/tracks/elixir/exercises/perfect-numbers/example.exs +8 -6
- data/tracks/elixir/exercises/perfect-numbers/perfect_numbers.exs +1 -2
- data/tracks/elixir/exercises/perfect-numbers/perfect_numbers_test.exs +18 -17
- data/tracks/elixir/exercises/phone-number/example.exs +19 -11
- data/tracks/elixir/exercises/phone-number/phone_number.exs +3 -3
- data/tracks/elixir/exercises/phone-number/phone_number_test.exs +2 -2
- data/tracks/elixir/exercises/pig-latin/pig_latin.exs +0 -1
- data/tracks/elixir/exercises/pig-latin/pig_latin_test.exs +3 -3
- data/tracks/elixir/exercises/poker/example.exs +104 -41
- data/tracks/elixir/exercises/poker/poker.exs +0 -1
- data/tracks/elixir/exercises/poker/poker_test.exs +7 -5
- data/tracks/elixir/exercises/prime-factors/example.exs +4 -8
- data/tracks/elixir/exercises/prime-factors/prime_factors.exs +0 -1
- data/tracks/elixir/exercises/prime-factors/prime_factors_test.exs +5 -5
- data/tracks/elixir/exercises/protein-translation/example.exs +14 -12
- data/tracks/elixir/exercises/protein-translation/protein_translation.exs +2 -3
- data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +26 -26
- data/tracks/elixir/exercises/pythagorean-triplet/example.exs +5 -4
- data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet.exs +0 -5
- data/tracks/elixir/exercises/pythagorean-triplet/pythagorean_triplet_test.exs +3 -3
- data/tracks/elixir/exercises/queen-attack/example.exs +9 -7
- data/tracks/elixir/exercises/queen-attack/queen_attack.exs +1 -4
- data/tracks/elixir/exercises/rail-fence-cipher/example.exs +18 -15
- data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher.exs +2 -4
- data/tracks/elixir/exercises/rail-fence-cipher/rail_fence_cipher_test.exs +2 -2
- data/tracks/elixir/exercises/raindrops/example.exs +3 -2
- data/tracks/elixir/exercises/raindrops/raindrops.exs +1 -2
- data/tracks/elixir/exercises/raindrops/raindrops_test.exs +2 -2
- data/tracks/elixir/exercises/rna-transcription/example.exs +1 -1
- data/tracks/elixir/exercises/rna-transcription/rna_transcription.exs +0 -1
- data/tracks/elixir/exercises/rna-transcription/rna_transcription_test.exs +2 -2
- data/tracks/elixir/exercises/robot-simulator/example.exs +33 -19
- data/tracks/elixir/exercises/robot-simulator/robot_simulator.exs +3 -5
- data/tracks/elixir/exercises/robot-simulator/robot_simulator_test.exs +26 -25
- data/tracks/elixir/exercises/roman-numerals/example.exs +14 -13
- data/tracks/elixir/exercises/roman-numerals/roman.exs +1 -1
- data/tracks/elixir/exercises/roman-numerals/roman_numerals_test.exs +2 -2
- data/tracks/elixir/exercises/rotational-cipher/example.exs +12 -8
- data/tracks/elixir/exercises/rotational-cipher/rotational_cipher.exs +0 -1
- data/tracks/elixir/exercises/rotational-cipher/rotational_cipher_test.exs +6 -4
- data/tracks/elixir/exercises/run-length-encoding/example.exs +20 -8
- data/tracks/elixir/exercises/run-length-encoding/rle.exs +2 -4
- data/tracks/elixir/exercises/run-length-encoding/rle_test.exs +6 -4
- data/tracks/elixir/exercises/saddle-points/example.exs +4 -3
- data/tracks/elixir/exercises/saddle-points/saddle_points.exs +0 -3
- data/tracks/elixir/exercises/saddle-points/saddle_points_test.exs +2 -2
- data/tracks/elixir/exercises/say/say.exs +1 -1
- data/tracks/elixir/exercises/say/say_test.exs +5 -3
- data/tracks/elixir/exercises/scale-generator/example.exs +20 -9
- data/tracks/elixir/exercises/scale-generator/scale_generator.exs +2 -2
- data/tracks/elixir/exercises/scale-generator/scale_generator_test.exs +16 -17
- data/tracks/elixir/exercises/scrabble-score/scrabble.exs +1 -2
- data/tracks/elixir/exercises/scrabble-score/scrabble_score_test.exs +2 -2
- data/tracks/elixir/exercises/secret-handshake/example.exs +4 -4
- data/tracks/elixir/exercises/secret-handshake/secret_handshake.exs +0 -1
- data/tracks/elixir/exercises/secret-handshake/secret_handshake_test.exs +3 -3
- data/tracks/elixir/exercises/series/example.exs +2 -2
- data/tracks/elixir/exercises/series/series.exs +0 -1
- data/tracks/elixir/exercises/series/series_test.exs +3 -4
- data/tracks/elixir/exercises/sieve/example.exs +4 -5
- data/tracks/elixir/exercises/sieve/sieve.exs +0 -3
- data/tracks/elixir/exercises/sieve/sieve_test.exs +173 -21
- data/tracks/elixir/exercises/simple-cipher/example.exs +8 -8
- data/tracks/elixir/exercises/simple-cipher/simple_cipher.exs +0 -1
- data/tracks/elixir/exercises/simple-cipher/simple_cipher_test.exs +3 -4
- data/tracks/elixir/exercises/simple-linked-list/example.exs +3 -1
- data/tracks/elixir/exercises/simple-linked-list/linked_list_test.exs +5 -2
- data/tracks/elixir/exercises/space-age/example.exs +5 -6
- data/tracks/elixir/exercises/space-age/space_age.exs +9 -3
- data/tracks/elixir/exercises/space-age/space_age_test.exs +2 -2
- data/tracks/elixir/exercises/spiral-matrix/example.exs +10 -5
- data/tracks/elixir/exercises/spiral-matrix/spiral.exs +0 -1
- data/tracks/elixir/exercises/spiral-matrix/spiral_test.exs +21 -21
- data/tracks/elixir/exercises/strain/example.exs +5 -4
- data/tracks/elixir/exercises/strain/strain.exs +2 -2
- data/tracks/elixir/exercises/strain/strain_test.exs +12 -7
- data/tracks/elixir/exercises/sublist/example.exs +11 -7
- data/tracks/elixir/exercises/sublist/sublist.exs +0 -1
- data/tracks/elixir/exercises/sublist/sublist_test.exs +16 -18
- data/tracks/elixir/exercises/sum-of-multiples/example.exs +3 -4
- data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples.exs +0 -1
- data/tracks/elixir/exercises/sum-of-multiples/sum_of_multiples_test.exs +4 -4
- data/tracks/elixir/exercises/test_helper.exs +4 -4
- data/tracks/elixir/exercises/tournament/example.exs +20 -13
- data/tracks/elixir/exercises/tournament/tournament.exs +0 -1
- data/tracks/elixir/exercises/tournament/tournament_test.exs +37 -30
- data/tracks/elixir/exercises/transpose/example.exs +4 -4
- data/tracks/elixir/exercises/transpose/transpose.exs +1 -1
- data/tracks/elixir/exercises/transpose/transpose_test.exs +89 -156
- data/tracks/elixir/exercises/triangle/example.exs +7 -7
- data/tracks/elixir/exercises/triangle/triangle.exs +1 -2
- data/tracks/elixir/exercises/triangle/triangle_test.exs +17 -17
- data/tracks/elixir/exercises/twelve-days/example.exs +10 -6
- data/tracks/elixir/exercises/twelve-days/twelve_days.exs +1 -2
- data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +55 -45
- data/tracks/elixir/exercises/word-count/example.exs +5 -5
- data/tracks/elixir/exercises/word-count/word_count.exs +1 -2
- data/tracks/elixir/exercises/word-count/word_count_test.exs +5 -5
- data/tracks/elixir/exercises/wordy/example.exs +13 -14
- data/tracks/elixir/exercises/wordy/wordy.exs +1 -4
- data/tracks/elixir/exercises/wordy/wordy_test.exs +2 -2
- data/tracks/elixir/exercises/zipper/example.exs +48 -37
- data/tracks/elixir/exercises/zipper/zipper.exs +20 -14
- data/tracks/elixir/exercises/zipper/zipper_test.exs +19 -20
- data/tracks/go/.travis.yml +1 -1
- data/tracks/go/exercises/paasio/paasio_test.go +76 -0
- data/tracks/ocaml/exercises/acronym/test.ml +3 -5
- data/tracks/ocaml/exercises/all-your-base/test.ml +2 -2
- data/tracks/ocaml/exercises/anagram/test.ml +1 -9
- data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -1
- data/tracks/ocaml/exercises/binary-search/test.ml +1 -1
- data/tracks/ocaml/exercises/bob/test.ml +1 -1
- data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
- data/tracks/ocaml/exercises/connect/test.ml +1 -1
- data/tracks/ocaml/exercises/difference-of-squares/test.ml +1 -1
- data/tracks/ocaml/exercises/dominoes/test.ml +1 -1
- data/tracks/ocaml/exercises/hello-world/test.ml +1 -1
- data/tracks/ocaml/exercises/leap/test.ml +2 -2
- data/tracks/ocaml/exercises/luhn/test.ml +2 -2
- data/tracks/ocaml/exercises/pangram/test.ml +1 -1
- data/tracks/ocaml/exercises/phone-number/test.ml +7 -3
- data/tracks/ocaml/exercises/prime-factors/test.ml +1 -1
- data/tracks/ocaml/exercises/raindrops/test.ml +1 -1
- data/tracks/ocaml/exercises/react/example.ml +1 -1
- data/tracks/ocaml/exercises/roman-numerals/test.ml +3 -1
- data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
- data/tracks/ocaml/exercises/space-age/test.ml +1 -1
- data/tracks/ocaml/exercises/word-count/test.ml +1 -1
- data/tracks/swift/circle.yml +21 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1a008f214471e1eb4b8e7d9b43328c0b81473e9
|
4
|
+
data.tar.gz: c114e360ea3b59997689d638f226e325d2a91893
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4efd9bd6d1f3825e78035ea979e06e0b8b4611662395ffe019c857cb4a76e340511a40e831a9b83ee797a7a24f1811cf31dc6fe3caf68f9f2e91938a3552a4c
|
7
|
+
data.tar.gz: 7539a437045feda970f1df3578b9519172dad01e08a4cf80d851c175a4855438e9f60da1b641ed1279389deef6f1a9ff4fcafd0d4d1e0564fea8b2a77f39001c
|
data/lib/trackler/version.rb
CHANGED
data/tracks/c/config.json
CHANGED
@@ -518,6 +518,7 @@
|
|
518
518
|
"strings",
|
519
519
|
"algorithms"
|
520
520
|
],
|
521
|
+
"unlocked_by": "pascals-triangle",
|
521
522
|
"uuid": "8c0762e6-702e-4733-a0a1-65099e2a46f7"
|
522
523
|
},
|
523
524
|
{
|
@@ -529,6 +530,7 @@
|
|
529
530
|
"stacks",
|
530
531
|
"recursion"
|
531
532
|
],
|
533
|
+
"unlocked_by": "isogram",
|
532
534
|
"uuid": "cd573670-54da-4291-ab78-afd5d77fbeac"
|
533
535
|
}
|
534
536
|
],
|
@@ -15,7 +15,7 @@
|
|
15
15
|
(is (armstrong? 153))))
|
16
16
|
|
17
17
|
(deftest not-armstrong-number-100
|
18
|
-
(testing "Three digit number that is an Armstrong number"
|
18
|
+
(testing "Three digit number that is not an Armstrong number"
|
19
19
|
(is (not (armstrong? 100)))))
|
20
20
|
|
21
21
|
(deftest armstrong-number-9474
|
@@ -2,30 +2,30 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("accumulate.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
defmodule AccumulateTest do
|
9
9
|
use ExUnit.Case
|
10
10
|
|
11
11
|
test "accumulate empty list" do
|
12
|
-
assert Accumulate.accumulate([], fn
|
12
|
+
assert Accumulate.accumulate([], fn n -> n * n end) == []
|
13
13
|
end
|
14
14
|
|
15
15
|
@tag :pending
|
16
16
|
test "accumulate square numbers" do
|
17
|
-
assert Accumulate.accumulate([1, 2, 3], fn
|
17
|
+
assert Accumulate.accumulate([1, 2, 3], fn n -> n * n end) == [1, 4, 9]
|
18
18
|
end
|
19
19
|
|
20
20
|
@tag :pending
|
21
21
|
test "accumulate upcased strings" do
|
22
|
-
fun = fn
|
22
|
+
fun = fn w -> String.upcase(w) end
|
23
23
|
assert Accumulate.accumulate(["hello", "world"], fun) == ["HELLO", "WORLD"]
|
24
24
|
end
|
25
25
|
|
26
26
|
@tag :pending
|
27
27
|
test "accumulate reversed strings" do
|
28
|
-
fun = fn
|
28
|
+
fun = fn w -> String.reverse(w) end
|
29
29
|
words = ~w(the quick brown fox etc)
|
30
30
|
expected = ["eht", "kciuq", "nworb", "xof", "cte"]
|
31
31
|
assert Accumulate.accumulate(words, fun) == expected
|
@@ -34,8 +34,8 @@ defmodule AccumulateTest do
|
|
34
34
|
@tag :pending
|
35
35
|
test "nested accumulate" do
|
36
36
|
chars = ~w(a b c)
|
37
|
-
nums
|
38
|
-
fun = fn
|
37
|
+
nums = ~w(1 2 3)
|
38
|
+
fun = fn c -> Accumulate.accumulate(nums, &(c <> &1)) end
|
39
39
|
expected = [["a1", "a2", "a3"], ["b1", "b2", "b3"], ["c1", "c2", "c3"]]
|
40
40
|
assert Accumulate.accumulate(chars, fun) == expected
|
41
41
|
end
|
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("acronym.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
defmodule AcronymTest do
|
9
9
|
use ExUnit.Case
|
@@ -1,11 +1,10 @@
|
|
1
1
|
defmodule Acronym do
|
2
|
-
|
3
2
|
@spec abbreviate(String.t()) :: String.t()
|
4
3
|
def abbreviate(string) do
|
5
4
|
Regex.scan(~r/[A-Z]+[a-z]*|[a-z]+/, string)
|
6
|
-
|> List.flatten
|
7
|
-
|> Enum.map(fn
|
5
|
+
|> List.flatten()
|
6
|
+
|> Enum.map(fn x -> String.first(x) end)
|
8
7
|
|> Enum.join("")
|
9
|
-
|> String.upcase
|
8
|
+
|> String.upcase()
|
10
9
|
end
|
11
10
|
end
|
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("all-your-base.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
defmodule AllYourBaseTest do
|
9
9
|
use ExUnit.Case
|
@@ -1,5 +1,4 @@
|
|
1
1
|
defmodule AllYourBase do
|
2
|
-
|
3
2
|
@doc """
|
4
3
|
Given a number in base a, represented as a sequence of digits, converts it to base b,
|
5
4
|
or returns nil if either of the bases are less than 2
|
@@ -8,8 +7,9 @@ defmodule AllYourBase do
|
|
8
7
|
@spec convert(list, integer, integer) :: list
|
9
8
|
def convert(digits, base_a, base_b) do
|
10
9
|
cond do
|
11
|
-
base_a > 1 and base_b > 1 and digits !=[] ->
|
10
|
+
base_a > 1 and base_b > 1 and digits != [] ->
|
12
11
|
do_convert(digits, base_a, base_b)
|
12
|
+
|
13
13
|
true ->
|
14
14
|
nil
|
15
15
|
end
|
@@ -17,18 +17,25 @@ defmodule AllYourBase do
|
|
17
17
|
|
18
18
|
defp do_convert(digits, base_a, base_b) do
|
19
19
|
num = convert_to_num(digits, base_a, 0)
|
20
|
+
|
20
21
|
case num do
|
21
|
-
nil ->
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
nil ->
|
23
|
+
nil
|
24
|
+
|
25
|
+
0 ->
|
26
|
+
[0]
|
27
|
+
|
28
|
+
num ->
|
29
|
+
convert_to_digits(num, base_b, [])
|
30
|
+
|> Enum.reverse()
|
25
31
|
end
|
26
32
|
end
|
27
33
|
|
28
34
|
defp convert_to_num([head | tail], base_a, accumulator) do
|
29
35
|
cond do
|
30
36
|
head < base_a and head >= 0 ->
|
31
|
-
|
37
|
+
convert_to_num(tail, base_a, accumulator * base_a + head)
|
38
|
+
|
32
39
|
true ->
|
33
40
|
nil
|
34
41
|
end
|
@@ -2,16 +2,14 @@ defmodule Allergies do
|
|
2
2
|
@doc """
|
3
3
|
List the allergies for which the corresponding flag bit is true.
|
4
4
|
"""
|
5
|
-
@spec list(non_neg_integer) :: [String.t]
|
5
|
+
@spec list(non_neg_integer) :: [String.t()]
|
6
6
|
def list(flags) do
|
7
|
-
|
8
7
|
end
|
9
8
|
|
10
9
|
@doc """
|
11
10
|
Returns whether the corresponding flag bit in 'flags' is set for the item.
|
12
11
|
"""
|
13
|
-
@spec allergic_to?(non_neg_integer, String.t) :: boolean
|
12
|
+
@spec allergic_to?(non_neg_integer, String.t()) :: boolean
|
14
13
|
def allergic_to?(flags, item) do
|
15
|
-
|
16
14
|
end
|
17
15
|
end
|
@@ -2,9 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("allergies.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
|
6
|
-
ExUnit.
|
7
|
-
ExUnit.configure exclude: :pending, trace: true
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
8
7
|
|
9
8
|
defmodule AllergiesTest do
|
10
9
|
use ExUnit.Case
|
@@ -41,12 +40,16 @@ defmodule AllergiesTest do
|
|
41
40
|
|
42
41
|
@tag :pending
|
43
42
|
test "allergic_to_lots_of_stuff" do
|
44
|
-
Allergies.list(248)
|
43
|
+
Allergies.list(248)
|
44
|
+
|> assert_is_a_set_containing(~w[strawberries tomatoes chocolate pollen cats])
|
45
45
|
end
|
46
46
|
|
47
47
|
@tag :pending
|
48
48
|
test "allergic_to_everything" do
|
49
|
-
Allergies.list(255)
|
49
|
+
Allergies.list(255)
|
50
|
+
|> assert_is_a_set_containing(
|
51
|
+
~w[eggs peanuts shellfish strawberries tomatoes chocolate pollen cats]
|
52
|
+
)
|
50
53
|
end
|
51
54
|
|
52
55
|
@tag :pending
|
@@ -68,16 +71,19 @@ defmodule AllergiesTest do
|
|
68
71
|
|
69
72
|
@tag :pending
|
70
73
|
test "ignore_non_allergen_score_parts" do
|
71
|
-
Allergies.list(509)
|
74
|
+
Allergies.list(509)
|
75
|
+
|> assert_is_a_set_containing(~w[eggs shellfish strawberries tomatoes chocolate pollen cats])
|
72
76
|
end
|
73
77
|
|
74
78
|
defp assert_is_a_set_containing(list, to_contain) do
|
75
|
-
set = Enum.into(list, MapSet.new)
|
76
|
-
|
77
|
-
|
79
|
+
set = Enum.into(list, MapSet.new())
|
80
|
+
|
81
|
+
same_contents =
|
82
|
+
to_contain
|
83
|
+
|> Enum.into(MapSet.new())
|
78
84
|
|> MapSet.equal?(set)
|
85
|
+
|
79
86
|
assert same_contents,
|
80
|
-
"Expected a set with: #{inspect
|
87
|
+
"Expected a set with: #{inspect(to_contain)} got #{inspect(set |> MapSet.to_list())}"
|
81
88
|
end
|
82
|
-
|
83
89
|
end
|
@@ -2,75 +2,75 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("anagram.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
defmodule AnagramTest do
|
9
9
|
use ExUnit.Case
|
10
10
|
|
11
11
|
# @tag :pending
|
12
12
|
test "no matches" do
|
13
|
-
matches = Anagram.match
|
13
|
+
matches = Anagram.match("diaper", ["hello", "world", "zombies", "pants"])
|
14
14
|
assert matches == []
|
15
15
|
end
|
16
16
|
|
17
17
|
@tag :pending
|
18
18
|
test "detect simple anagram" do
|
19
|
-
matches = Anagram.match
|
19
|
+
matches = Anagram.match("ant", ["tan", "stand", "at"])
|
20
20
|
assert matches == ["tan"]
|
21
21
|
end
|
22
22
|
|
23
23
|
@tag :pending
|
24
24
|
test "detect multiple anagrams" do
|
25
|
-
matches = Anagram.match
|
25
|
+
matches = Anagram.match("master", ["stream", "pigeon", "maters"])
|
26
26
|
assert matches == ["stream", "maters"]
|
27
27
|
end
|
28
28
|
|
29
29
|
@tag :pending
|
30
30
|
test "do not detect anagram subsets" do
|
31
|
-
matches = Anagram.match
|
31
|
+
matches = Anagram.match("good", ~w(dog goody))
|
32
32
|
assert matches == []
|
33
33
|
end
|
34
34
|
|
35
35
|
@tag :pending
|
36
36
|
test "detect anagram" do
|
37
|
-
matches = Anagram.match
|
37
|
+
matches = Anagram.match("listen", ~w(enlists google inlets banana))
|
38
38
|
assert matches == ["inlets"]
|
39
39
|
end
|
40
40
|
|
41
41
|
@tag :pending
|
42
42
|
test "multiple anagrams" do
|
43
|
-
matches = Anagram.match
|
43
|
+
matches = Anagram.match("allergy", ~w(gallery ballerina regally clergy largely leading))
|
44
44
|
assert matches == ["gallery", "regally", "largely"]
|
45
45
|
end
|
46
46
|
|
47
47
|
@tag :pending
|
48
48
|
test "anagrams must use all letters exactly once" do
|
49
|
-
matches = Anagram.match
|
49
|
+
matches = Anagram.match("patter", ["tapper"])
|
50
50
|
assert matches == []
|
51
51
|
end
|
52
52
|
|
53
53
|
@tag :pending
|
54
54
|
test "detect anagrams with case-insensitive subject" do
|
55
|
-
matches = Anagram.match
|
55
|
+
matches = Anagram.match("Orchestra", ~w(cashregister carthorse radishes))
|
56
56
|
assert matches == ["carthorse"]
|
57
57
|
end
|
58
58
|
|
59
59
|
@tag :pending
|
60
60
|
test "detect anagrams with case-insensitive candidate" do
|
61
|
-
matches = Anagram.match
|
61
|
+
matches = Anagram.match("orchestra", ~w(cashregister Carthorse radishes))
|
62
62
|
assert matches == ["Carthorse"]
|
63
63
|
end
|
64
64
|
|
65
65
|
@tag :pending
|
66
66
|
test "anagrams must not be the source word" do
|
67
|
-
matches = Anagram.match
|
67
|
+
matches = Anagram.match("corn", ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"])
|
68
68
|
assert matches == ["cron"]
|
69
69
|
end
|
70
70
|
|
71
71
|
@tag :pending
|
72
72
|
test "do not detect words based on checksum" do
|
73
|
-
matches = Anagram.match
|
73
|
+
matches = Anagram.match("mass", ["last"])
|
74
74
|
assert matches == []
|
75
75
|
end
|
76
76
|
end
|
@@ -4,10 +4,11 @@ defmodule Anagram do
|
|
4
4
|
|
5
5
|
Comparison is case insensitive.
|
6
6
|
"""
|
7
|
-
@spec match(String.t, [String.t]) :: [String.t]
|
7
|
+
@spec match(String.t(), [String.t()]) :: [String.t()]
|
8
8
|
def match(target, words) do
|
9
9
|
lc_target = String.downcase(target)
|
10
10
|
sorted_target = sort(lc_target)
|
11
|
+
|
11
12
|
Enum.filter(words, fn word ->
|
12
13
|
lc_word = String.downcase(word)
|
13
14
|
# `and` is shortcutting
|
@@ -7,11 +7,11 @@ defmodule Atbash do
|
|
7
7
|
iex> Atbash.encode("completely insecure")
|
8
8
|
"xlnko vgvob rmhvx fiv"
|
9
9
|
"""
|
10
|
-
@spec encode(String.t) :: String.t
|
10
|
+
@spec encode(String.t()) :: String.t()
|
11
11
|
def encode(plaintext) do
|
12
12
|
end
|
13
13
|
|
14
|
-
@spec decode(String.t) :: String.t
|
14
|
+
@spec decode(String.t()) :: String.t()
|
15
15
|
def decode(cipher) do
|
16
16
|
end
|
17
17
|
end
|
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("atbash_cipher.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
defmodule AtbashTest do
|
9
9
|
use ExUnit.Case
|
@@ -2,8 +2,8 @@ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
|
|
2
2
|
Code.load_file("account.exs", __DIR__)
|
3
3
|
end
|
4
4
|
|
5
|
-
ExUnit.start
|
6
|
-
ExUnit.configure
|
5
|
+
ExUnit.start()
|
6
|
+
ExUnit.configure(exclude: :pending, trace: true)
|
7
7
|
|
8
8
|
# The BankAccount module should support four calls:
|
9
9
|
#
|
@@ -26,8 +26,8 @@ defmodule BankAccountTest do
|
|
26
26
|
use ExUnit.Case
|
27
27
|
|
28
28
|
setup do
|
29
|
-
account = BankAccount.open_bank
|
30
|
-
{
|
29
|
+
account = BankAccount.open_bank()
|
30
|
+
{:ok, account: account}
|
31
31
|
end
|
32
32
|
|
33
33
|
# @tag :pending
|
@@ -59,18 +59,23 @@ defmodule BankAccountTest do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
@tag :pending
|
62
|
-
test "incrementing balance from another process then checking it from test process", %{
|
62
|
+
test "incrementing balance from another process then checking it from test process", %{
|
63
|
+
account: account
|
64
|
+
} do
|
63
65
|
assert BankAccount.balance(account) == 0
|
64
66
|
this = self()
|
67
|
+
|
65
68
|
spawn(fn ->
|
66
69
|
BankAccount.update(account, 20)
|
67
70
|
send(this, :continue)
|
68
71
|
end)
|
72
|
+
|
69
73
|
receive do
|
70
74
|
:continue -> :ok
|
71
75
|
after
|
72
76
|
1000 -> flunk("Timeout")
|
73
77
|
end
|
78
|
+
|
74
79
|
assert BankAccount.balance(account) == 20
|
75
80
|
end
|
76
81
|
end
|