trackler 2.0.6.28 → 2.0.6.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/common/exercises/all-your-base/metadata.yml +1 -1
- data/common/exercises/allergies/metadata.yml +1 -1
- data/common/exercises/anagram/metadata.yml +1 -1
- data/common/exercises/beer-song/metadata.yml +1 -1
- data/common/exercises/binary-search-tree/metadata.yml +1 -1
- data/common/exercises/binary-search/metadata.yml +1 -1
- data/common/exercises/binary/metadata.yml +1 -1
- data/common/exercises/change/description.md +3 -3
- data/common/exercises/change/metadata.yml +1 -1
- data/common/exercises/crypto-square/description.md +1 -2
- data/common/exercises/etl/description.md +2 -2
- data/common/exercises/flatten-array/metadata.yml +1 -1
- data/common/exercises/food-chain/description.md +4 -5
- data/common/exercises/food-chain/metadata.yml +1 -1
- data/common/exercises/gigasecond/metadata.yml +1 -1
- data/common/exercises/grade-school/metadata.yml +1 -1
- data/common/exercises/grains/description.md +1 -1
- data/common/exercises/grains/metadata.yml +1 -1
- data/common/exercises/hamming/metadata.yml +1 -1
- data/common/exercises/hello-world/metadata.yml +1 -1
- data/common/exercises/hexadecimal/metadata.yml +1 -1
- data/common/exercises/house/metadata.yml +1 -1
- data/common/exercises/kindergarten-garden/metadata.yml +1 -1
- data/common/exercises/largest-series-product/metadata.yml +1 -1
- data/common/exercises/leap/metadata.yml +1 -1
- data/common/exercises/luhn/description.md +1 -1
- data/common/exercises/luhn/metadata.yml +1 -1
- data/common/exercises/matrix/metadata.yml +1 -1
- data/common/exercises/minesweeper/metadata.yml +1 -1
- data/common/exercises/nth-prime/metadata.yml +1 -1
- data/common/exercises/ocr-numbers/metadata.yml +1 -1
- data/common/exercises/octal/metadata.yml +1 -1
- data/common/exercises/paasio/metadata.yml +1 -1
- data/common/exercises/palindrome-products/description.md +30 -2
- data/common/exercises/palindrome-products/metadata.yml +1 -1
- data/common/exercises/parallel-letter-frequency/metadata.yml +1 -1
- data/common/exercises/pascals-triangle/metadata.yml +1 -1
- data/common/exercises/phone-number/metadata.yml +1 -1
- data/common/exercises/point-mutations/metadata.yml +1 -1
- data/common/exercises/protein-translation/description.md +1 -1
- data/common/exercises/protein-translation/metadata.yml +1 -1
- data/common/exercises/proverb/metadata.yml +1 -1
- data/common/exercises/queen-attack/metadata.yml +1 -1
- data/common/exercises/raindrops/metadata.yml +1 -1
- data/common/exercises/rna-transcription/metadata.yml +1 -1
- data/common/exercises/robot-name/metadata.yml +1 -1
- data/common/exercises/saddle-points/metadata.yml +1 -1
- data/common/exercises/say/metadata.yml +1 -1
- data/common/exercises/scale-generator/description.md +3 -4
- data/common/exercises/scale-generator/metadata.yml +1 -1
- data/common/exercises/scrabble-score/metadata.yml +1 -1
- data/common/exercises/secret-handshake/metadata.yml +1 -1
- data/common/exercises/series/metadata.yml +1 -1
- data/common/exercises/sieve/metadata.yml +1 -1
- data/common/exercises/space-age/metadata.yml +1 -1
- data/common/exercises/sum-of-multiples/description.md +2 -2
- data/common/exercises/sum-of-multiples/metadata.yml +1 -1
- data/common/exercises/transpose/description.md +1 -1
- data/common/exercises/transpose/metadata.yml +1 -1
- data/common/exercises/triangle/metadata.yml +1 -1
- data/common/exercises/trinary/metadata.yml +1 -1
- data/common/exercises/twelve-days/metadata.yml +1 -1
- data/common/exercises/two-bucket/description.md +1 -1
- data/common/exercises/two-bucket/metadata.yml +1 -1
- data/common/exercises/word-count/metadata.yml +1 -1
- data/common/exercises/zebra-puzzle/metadata.yml +1 -1
- data/lib/trackler/version.rb +1 -1
- data/tracks/erlang/.gitignore +2 -0
- data/tracks/erlang/.travis.yml +8 -4
- data/tracks/erlang/Makefile +16 -0
- data/tracks/erlang/README.md +77 -1
- data/tracks/erlang/_test/bootstrap.sh +17 -4
- data/tracks/erlang/_test/check-exercises.escript +64 -24
- data/tracks/erlang/config.json +63 -63
- data/tracks/erlang/docs/INSTALLATION.md +18 -0
- data/tracks/erlang/docs/TESTS.md +1 -3
- data/tracks/erlang/exercises/accumulate/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/accumulate/rebar.conf +30 -0
- data/tracks/erlang/exercises/accumulate/src/accumulate.app.src +9 -0
- data/tracks/erlang/exercises/accumulate/{example.erl → src/example.erl} +3 -2
- data/tracks/erlang/exercises/accumulate/test/accumulate_tests.erl +27 -0
- data/tracks/erlang/exercises/allergies/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/allergies/rebar.conf +30 -0
- data/tracks/erlang/exercises/allergies/src/allergies.app.src +9 -0
- data/tracks/erlang/exercises/allergies/{example.erl → src/example.erl} +9 -10
- data/tracks/erlang/exercises/allergies/{allergies_tests.erl → test/allergies_tests.erl} +17 -20
- data/tracks/erlang/exercises/anagram/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/anagram/rebar.conf +32 -0
- data/tracks/erlang/exercises/anagram/src/anagram.app.src +9 -0
- data/tracks/erlang/exercises/anagram/{example.erl → src/example.erl} +2 -1
- data/tracks/erlang/exercises/anagram/test/anagram_tests.erl +43 -0
- data/tracks/erlang/exercises/atbash-cipher/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/atbash-cipher/rebar.conf +30 -0
- data/tracks/erlang/exercises/atbash-cipher/src/atbash_cipher.app.src +9 -0
- data/tracks/erlang/exercises/atbash-cipher/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/atbash-cipher/{atbash_cipher_tests.erl → test/atbash_cipher_tests.erl} +6 -2
- data/tracks/erlang/exercises/bank-account/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/bank-account/rebar.conf +30 -0
- data/tracks/erlang/exercises/bank-account/src/bank_account.app.src +9 -0
- data/tracks/erlang/exercises/bank-account/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/bank-account/test/bank_account_tests.erl +98 -0
- data/tracks/erlang/exercises/beer-song/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/beer-song/rebar.conf +30 -0
- data/tracks/erlang/exercises/beer-song/src/beer_song.app.src +9 -0
- data/tracks/erlang/exercises/beer-song/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/beer-song/{beer_song_tests.erl → test/beer_song_tests.erl} +9 -9
- data/tracks/erlang/exercises/binary/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/binary/rebar.conf +30 -0
- data/tracks/erlang/exercises/binary/src/binary.app.src +9 -0
- data/tracks/erlang/exercises/binary/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/binary/{binary_string_tests.erl → test/binary_string_tests.erl} +7 -3
- data/tracks/erlang/exercises/bob/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/bob/rebar.conf +30 -0
- data/tracks/erlang/exercises/bob/src/bob.app.src +9 -0
- data/tracks/erlang/exercises/bob/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/bob/{bob_tests.erl → test/bob_tests.erl} +4 -4
- data/tracks/erlang/exercises/circular-buffer/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/circular-buffer/rebar.conf +30 -0
- data/tracks/erlang/exercises/circular-buffer/src/circular_buffer.app.src +9 -0
- data/tracks/erlang/exercises/circular-buffer/{example.erl → src/example.erl} +1 -34
- data/tracks/erlang/exercises/circular-buffer/test/circular_buffer_tests.erl +58 -0
- data/tracks/erlang/exercises/clock/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/clock/rebar.conf +30 -0
- data/tracks/erlang/exercises/clock/src/clock.app.src +9 -0
- data/tracks/erlang/exercises/clock/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/clock/{clock_tests.erl → test/clock_tests.erl} +51 -48
- data/tracks/erlang/exercises/difference-of-squares/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/difference-of-squares/rebar.conf +30 -0
- data/tracks/erlang/exercises/difference-of-squares/src/difference_of_squares.app.src +9 -0
- data/tracks/erlang/exercises/difference-of-squares/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/difference-of-squares/{difference_of_squares_tests.erl → test/difference_of_squares_tests.erl} +7 -3
- data/tracks/erlang/exercises/etl/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/etl/rebar.conf +30 -0
- data/tracks/erlang/exercises/etl/src/etl.app.src +9 -0
- data/tracks/erlang/exercises/etl/{example.erl → src/example.erl} +1 -2
- data/tracks/erlang/exercises/etl/{etl_tests.erl → test/etl_tests.erl} +3 -4
- data/tracks/erlang/exercises/gigasecond/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/gigasecond/rebar.conf +30 -0
- data/tracks/erlang/exercises/gigasecond/{example.erl → src/example.erl} +1 -2
- data/tracks/erlang/exercises/gigasecond/src/gigasecond.app.src +9 -0
- data/tracks/erlang/exercises/gigasecond/test/gigasecond_tests.erl +22 -0
- data/tracks/erlang/exercises/grade-school/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/grade-school/rebar.conf +30 -0
- data/tracks/erlang/exercises/grade-school/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/grade-school/src/grade_school.app.src +9 -0
- data/tracks/erlang/exercises/grade-school/test/grade_school_tests.erl +47 -0
- data/tracks/erlang/exercises/grains/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/grains/rebar.conf +30 -0
- data/tracks/erlang/exercises/grains/{example.erl → src/example.erl} +1 -2
- data/tracks/erlang/exercises/grains/src/grains.app.src +9 -0
- data/tracks/erlang/exercises/grains/test/grains_tests.erl +32 -0
- data/tracks/erlang/exercises/hamming/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/hamming/rebar.conf +30 -0
- data/tracks/erlang/exercises/hamming/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/hamming/src/hamming.app.src +9 -0
- data/tracks/erlang/exercises/hamming/test/hamming_tests.erl +24 -0
- data/tracks/erlang/exercises/hello-world/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/hello-world/rebar.conf +30 -0
- data/tracks/erlang/exercises/hello-world/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/hello-world/src/hello_world.app.src +9 -0
- data/tracks/erlang/exercises/hello-world/test/hello_world_tests.erl +18 -0
- data/tracks/erlang/exercises/largest-series-product/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/largest-series-product/rebar.conf +30 -0
- data/tracks/erlang/exercises/largest-series-product/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/largest-series-product/src/largest_series_product.app.src +9 -0
- data/tracks/erlang/exercises/largest-series-product/test/largest_series_product_tests.erl +57 -0
- data/tracks/erlang/exercises/leap/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/leap/rebar.conf +30 -0
- data/tracks/erlang/exercises/leap/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/leap/src/leap.app.src +9 -0
- data/tracks/erlang/exercises/leap/test/leap_tests.erl +18 -0
- data/tracks/erlang/exercises/luhn/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/luhn/rebar.conf +30 -0
- data/tracks/erlang/exercises/luhn/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/luhn/src/luhn.app.src +9 -0
- data/tracks/erlang/exercises/luhn/test/luhn_tests.erl +18 -0
- data/tracks/erlang/exercises/meetup/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/meetup/rebar.conf +30 -0
- data/tracks/erlang/exercises/meetup/{example.erl → src/example.erl} +1 -2
- data/tracks/erlang/exercises/meetup/src/meetup.app.src +9 -0
- data/tracks/erlang/exercises/meetup/{meetup_tests.erl → test/meetup_tests.erl} +94 -95
- data/tracks/erlang/exercises/nucleotide-count/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/nucleotide-count/rebar.conf +30 -0
- data/tracks/erlang/exercises/nucleotide-count/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/nucleotide-count/src/nucleotide_count.app.src +9 -0
- data/tracks/erlang/exercises/nucleotide-count/test/dna_tests.erl +30 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/rebar.conf +30 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/parallel-letter-frequency/src/parallel_letter_frequency.app.src +9 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/{parallel_letter_frequency_tests.erl → test/parallel_letter_frequency_tests.erl} +6 -2
- data/tracks/erlang/exercises/phone-number/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/phone-number/rebar.conf +30 -0
- data/tracks/erlang/exercises/phone-number/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/phone-number/src/phone_number.app.src +9 -0
- data/tracks/erlang/exercises/phone-number/test/phone_tests.erl +28 -0
- data/tracks/erlang/exercises/rna-transcription/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/rna-transcription/rebar.conf +30 -0
- data/tracks/erlang/exercises/rna-transcription/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/rna-transcription/src/rna_transcription.app.src +9 -0
- data/tracks/erlang/exercises/rna-transcription/test/rna_transcription_tests.erl +24 -0
- data/tracks/erlang/exercises/robot-simulator/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/robot-simulator/rebar.conf +30 -0
- data/tracks/erlang/exercises/robot-simulator/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/robot-simulator/src/robot_simulator.app.src +9 -0
- data/tracks/erlang/exercises/robot-simulator/test/robot_simulator_tests.erl +100 -0
- data/tracks/erlang/exercises/roman-numerals/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/roman-numerals/rebar.conf +30 -0
- data/tracks/erlang/exercises/roman-numerals/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/roman-numerals/src/roman_numerals.app.src +9 -0
- data/tracks/erlang/exercises/roman-numerals/{roman_numerals_tests.erl → test/roman_numerals_tests.erl} +3 -4
- data/tracks/erlang/exercises/scrabble-score/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/scrabble-score/rebar.conf +30 -0
- data/tracks/erlang/exercises/scrabble-score/{example.erl → src/example.erl} +2 -2
- data/tracks/erlang/exercises/scrabble-score/src/scrabble_score.app.src +9 -0
- data/tracks/erlang/exercises/scrabble-score/{scrabble_score_tests.erl → test/scrabble_score_tests.erl} +5 -1
- data/tracks/erlang/exercises/series/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/series/rebar.conf +30 -0
- data/tracks/erlang/exercises/series/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/series/src/series.app.src +9 -0
- data/tracks/erlang/exercises/series/test/series_tests.erl +10 -0
- data/tracks/erlang/exercises/space-age/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/space-age/rebar.conf +30 -0
- data/tracks/erlang/exercises/space-age/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/space-age/src/space_age.app.src +9 -0
- data/tracks/erlang/exercises/space-age/test/space_age_tests.erl +51 -0
- data/tracks/erlang/exercises/strain/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/strain/rebar.conf +30 -0
- data/tracks/erlang/exercises/strain/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/strain/src/strain.app.src +9 -0
- data/tracks/erlang/exercises/strain/test/strain_tests.erl +52 -0
- data/tracks/erlang/exercises/sum-of-multiples/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/sum-of-multiples/rebar.conf +30 -0
- data/tracks/erlang/exercises/sum-of-multiples/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/sum-of-multiples/src/sum_of_multiples.app.src +9 -0
- data/tracks/erlang/exercises/sum-of-multiples/test/sum_of_multiples_tests.erl +39 -0
- data/tracks/erlang/exercises/triangle/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/triangle/rebar.conf +30 -0
- data/tracks/erlang/exercises/triangle/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/triangle/src/triangle.app.src +9 -0
- data/tracks/erlang/exercises/triangle/{triangle_tests.erl → test/triangle_tests.erl} +19 -18
- data/tracks/erlang/exercises/trinary/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/trinary/rebar.conf +30 -0
- data/tracks/erlang/exercises/trinary/{example.erl → src/example.erl} +1 -2
- data/tracks/erlang/exercises/trinary/src/trinary.app.src +9 -0
- data/tracks/erlang/exercises/trinary/test/trinary_tests.erl +36 -0
- data/tracks/erlang/exercises/word-count/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/word-count/rebar.conf +30 -0
- data/tracks/erlang/exercises/word-count/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/word-count/src/word_count.app.src +9 -0
- data/tracks/erlang/exercises/word-count/{word_count_tests.erl → test/word_count_tests.erl} +4 -2
- data/tracks/erlang/exercises/zipper/include/exercism.hrl +6 -0
- data/tracks/erlang/exercises/zipper/rebar.conf +30 -0
- data/tracks/erlang/exercises/zipper/{example.erl → src/example.erl} +1 -1
- data/tracks/erlang/exercises/zipper/src/zipper.app.src +9 -0
- data/tracks/erlang/exercises/zipper/test/zipper_tests.erl +100 -0
- data/tracks/go/config.json +14 -4
- data/tracks/go/exercises/acronym/acronym_test.go +1 -1
- data/tracks/go/exercises/all-your-base/all_your_base_test.go +8 -8
- data/tracks/go/exercises/luhn/luhn_test.go +6 -6
- data/tracks/go/exercises/word-search/word_search_test.go +4 -1
- data/tracks/go/exercises/wordy/example.go +2 -0
- data/tracks/go/exercises/wordy/wordy_test.go +8 -0
- data/tracks/haskell/.travis.yml +3 -57
- data/tracks/haskell/README.md +13 -10
- data/tracks/haskell/bin/test-all-examples +20 -0
- data/tracks/haskell/bin/test-example +73 -0
- data/tracks/haskell/bin/test-stub +43 -0
- data/tracks/haskell/config.json +0 -1
- data/tracks/haskell/exercises/accumulate/examples/fail-reverse/package.yaml +16 -0
- data/tracks/haskell/exercises/accumulate/examples/fail-reverse/src/Accumulate.hs +7 -0
- data/tracks/haskell/exercises/accumulate/examples/success-standard/src/Accumulate.hs +0 -7
- data/tracks/haskell/exercises/atbash-cipher/test/Tests.hs +1 -5
- data/tracks/haskell/exercises/forth/test/Tests.hs +1 -4
- data/tracks/haskell/exercises/leap/examples/error-nosig/package.yaml +16 -0
- data/tracks/haskell/exercises/leap/examples/error-nosig/src/LeapYear.hs +4 -0
- data/tracks/haskell/exercises/nucleotide-count/examples/success-standard/src/DNA.hs +2 -5
- data/tracks/haskell/exercises/nucleotide-count/src/DNA.hs +1 -4
- data/tracks/haskell/exercises/nucleotide-count/test/Tests.hs +3 -22
- data/tracks/haskell/exercises/prime-factors/test/Tests.hs +9 -15
- data/tracks/haskell/exercises/scrabble-score/test/Tests.hs +1 -5
- data/tracks/haskell/exercises/secret-handshake/examples/success-standard/src/SecretHandshake.hs +3 -21
- data/tracks/haskell/exercises/secret-handshake/src/SecretHandshake.hs +1 -0
- data/tracks/haskell/exercises/secret-handshake/test/Tests.hs +20 -23
- data/tracks/haskell/exercises/strain/examples/fail-reverse/package.yaml +16 -0
- data/tracks/haskell/exercises/strain/examples/fail-reverse/src/Strain.hs +9 -0
- data/tracks/haskell/exercises/triangle/test/Tests.hs +6 -1
- data/tracks/julia/config.json +20 -2
- data/tracks/julia/exercises/raindrops/example.jl +16 -0
- data/tracks/julia/exercises/raindrops/raindrops.jl +3 -0
- data/tracks/julia/exercises/raindrops/runtests.jl +72 -0
- data/tracks/julia/exercises/secret-handshake/example.jl +12 -0
- data/tracks/julia/exercises/secret-handshake/runtests.jl +51 -0
- data/tracks/julia/exercises/secret-handshake/secret-handshake.jl +3 -0
- metadata +198 -79
- data/tracks/erlang/exercises/accumulate/accumulate_tests.erl +0 -28
- data/tracks/erlang/exercises/anagram/anagram_tests.erl +0 -39
- data/tracks/erlang/exercises/bank-account/bank_account_tests.erl +0 -95
- data/tracks/erlang/exercises/circular-buffer/circular_buffer_tests.erl +0 -54
- data/tracks/erlang/exercises/clock/clock.erl +0 -14
- data/tracks/erlang/exercises/gigasecond/gigasecond_tests.erl +0 -29
- data/tracks/erlang/exercises/grade-school/grade_school_tests.erl +0 -49
- data/tracks/erlang/exercises/grains/grains_tests.erl +0 -31
- data/tracks/erlang/exercises/hamming/dna_tests.erl +0 -21
- data/tracks/erlang/exercises/hello-world/hello_world_tests.erl +0 -19
- data/tracks/erlang/exercises/largest-series-product/largest_series_product.erl +0 -5
- data/tracks/erlang/exercises/largest-series-product/largest_series_product_tests.erl +0 -54
- data/tracks/erlang/exercises/leap/leap_tests.erl +0 -20
- data/tracks/erlang/exercises/luhn/luhn_tests.erl +0 -19
- data/tracks/erlang/exercises/nucleotide-count/dna_tests.erl +0 -27
- data/tracks/erlang/exercises/phone-number/phone_tests.erl +0 -29
- data/tracks/erlang/exercises/rna-transcription/rna_transcription_tests.erl +0 -24
- data/tracks/erlang/exercises/robot-simulator/robot_simulator_tests.erl +0 -96
- data/tracks/erlang/exercises/roman-numerals/roman_numerals.erl +0 -6
- data/tracks/erlang/exercises/series/series_tests.erl +0 -6
- data/tracks/erlang/exercises/space-age/space_age_tests.erl +0 -48
- data/tracks/erlang/exercises/strain/strain_tests.erl +0 -49
- data/tracks/erlang/exercises/sum-of-multiples/sum_of_multiples_tests.erl +0 -37
- data/tracks/erlang/exercises/trinary/trinary_tests.erl +0 -37
- data/tracks/erlang/exercises/zipper/zipper_tests.erl +0 -103
- data/tracks/haskell/exercises/secret-handshake/.meta/DONT-TEST-STUB +0 -1
- data/tracks/haskell/exercises/secret-handshake/HINTS.md +0 -6
data/tracks/haskell/config.json
CHANGED
@@ -12,11 +12,4 @@ accumulate f = foldr ((:) . f) []
|
|
12
12
|
|
13
13
|
accumulate f xs = [f x | x <- xs]
|
14
14
|
|
15
|
-
-- Commonly submitted inefficient solution (we test for this now):
|
16
|
-
|
17
|
-
accumulate f = accumulate' []
|
18
|
-
where
|
19
|
-
accumulate' acc [] = reverse acc
|
20
|
-
accumulate' acc (x:xs) = accumulate' (f x : acc) xs
|
21
|
-
|
22
15
|
-}
|
@@ -16,7 +16,7 @@ specs = describe "atbash-cipher" $ do
|
|
16
16
|
where
|
17
17
|
test f Case{..} = it description $ f phrase `shouldBe` expected
|
18
18
|
|
19
|
-
-- Test cases adapted from `exercism/x-common/atbash-cipher.json` on
|
19
|
+
-- Test cases adapted from `exercism/x-common/atbash-cipher.json` on 2017-02-01.
|
20
20
|
|
21
21
|
data Case = Case { description :: String
|
22
22
|
, phrase :: String
|
@@ -57,10 +57,6 @@ encodeCases =
|
|
57
57
|
, phrase = "The quick brown fox jumps over the lazy dog."
|
58
58
|
, expected = "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"
|
59
59
|
}
|
60
|
-
, Case { description = "encode ignores non ascii"
|
61
|
-
, phrase = "non ascii éignored"
|
62
|
-
, expected = "mlmzh xrrrt mlivw"
|
63
|
-
}
|
64
60
|
]
|
65
61
|
|
66
62
|
decodeCases :: [Case]
|
@@ -12,7 +12,7 @@ main = hspecWith defaultConfig {configFastFail = True} specs
|
|
12
12
|
specs :: Spec
|
13
13
|
specs = describe "forth" $ do
|
14
14
|
|
15
|
-
-- Test cases adapted from `exercism/x-common/forth` on
|
15
|
+
-- Test cases adapted from `exercism/x-common/forth` on 2017-02-01.
|
16
16
|
|
17
17
|
let runTexts = fmap toList . foldM (flip evalText) empty
|
18
18
|
|
@@ -123,9 +123,6 @@ specs = describe "forth" $ do
|
|
123
123
|
runTexts [ ": swap dup ;"
|
124
124
|
, "1 swap" ] `shouldBe` Right [1, 1]
|
125
125
|
|
126
|
-
it "can consist of arbitrary characters such as Unicode characters" $
|
127
|
-
runTexts [": € 220371 ; €"] `shouldBe` Right [220371]
|
128
|
-
|
129
126
|
it "cannot redefine numbers" $
|
130
127
|
runTexts [": 1 2 ;"] `shouldBe` Left InvalidWord
|
131
128
|
|
@@ -1,9 +1,6 @@
|
|
1
|
-
module DNA (
|
1
|
+
module DNA (nucleotideCounts) where
|
2
2
|
|
3
|
-
import Data.Map.Strict (Map,
|
4
|
-
|
5
|
-
count :: Char -> String -> Either String Int
|
6
|
-
count x xs = (!) <$> nucleotideCounts xs <*> valid x
|
3
|
+
import Data.Map.Strict (Map, fromDistinctAscList, fromListWith, findWithDefault)
|
7
4
|
|
8
5
|
nucleotideCounts :: String -> Either String (Map Char Int)
|
9
6
|
nucleotideCounts xs = fromDistinctAscList <$> mapM count' "ACGT"
|
@@ -1,9 +1,6 @@
|
|
1
|
-
module DNA (
|
1
|
+
module DNA (nucleotideCounts) where
|
2
2
|
|
3
3
|
import Data.Map (Map)
|
4
4
|
|
5
|
-
count :: Char -> String -> Either String Int
|
6
|
-
count = error "You need to implement this function."
|
7
|
-
|
8
5
|
nucleotideCounts :: String -> Either String (Map Char Int)
|
9
6
|
nucleotideCounts = error "You need to implement this function."
|
@@ -5,7 +5,7 @@ import Data.Map (fromList)
|
|
5
5
|
import Test.Hspec (Spec, describe, it, shouldBe, shouldSatisfy)
|
6
6
|
import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)
|
7
7
|
|
8
|
-
import DNA (
|
8
|
+
import DNA (nucleotideCounts)
|
9
9
|
|
10
10
|
main :: IO ()
|
11
11
|
main = hspecWith defaultConfig {configFastFail = True} specs
|
@@ -13,29 +13,10 @@ main = hspecWith defaultConfig {configFastFail = True} specs
|
|
13
13
|
specs :: Spec
|
14
14
|
specs = describe "nucleotide-count" $ do
|
15
15
|
|
16
|
-
--
|
17
|
-
-- for the test cases in `exercism/x-common`.
|
16
|
+
-- Test cases adapted from `exercism/x-common/triangle.json` on 2017-01-31.
|
18
17
|
|
19
|
-
let x `matches` y = x `shouldBe` Right y
|
20
18
|
let x `matchesMap` y = x `shouldBe` (Right . fromList) y
|
21
19
|
|
22
|
-
describe "count" $ do
|
23
|
-
|
24
|
-
it "empty dna strand has no adenosine" $
|
25
|
-
count 'A' "" `matches` 0
|
26
|
-
|
27
|
-
it "repetitive cytidine gets counted" $
|
28
|
-
count 'C' "CCCCC" `matches` 5
|
29
|
-
|
30
|
-
it "counts only thymidine" $
|
31
|
-
count 'T' "GGGGGTAACCCGG" `matches` 1
|
32
|
-
|
33
|
-
it "validates nucleotides" $
|
34
|
-
count 'X' "GACT" `shouldSatisfy` isLeft
|
35
|
-
|
36
|
-
it "validates strand" $
|
37
|
-
count 'G' "GACYT" `shouldSatisfy` isLeft
|
38
|
-
|
39
20
|
describe "nucleotideCounts" $ do
|
40
21
|
|
41
22
|
it "empty dna strand has no nucleotides" $
|
@@ -58,4 +39,4 @@ specs = describe "nucleotide-count" $ do
|
|
58
39
|
, ('T', 21) ]
|
59
40
|
|
60
41
|
it "validates strand" $
|
61
|
-
nucleotideCounts "
|
42
|
+
nucleotideCounts "AGXXACT" `shouldSatisfy` isLeft
|
@@ -14,22 +14,16 @@ specs = describe "prime-factors" $
|
|
14
14
|
describe "primeFactors" $ for_ cases test
|
15
15
|
where
|
16
16
|
|
17
|
-
test (n, expected) = it
|
17
|
+
test (description, n, expected) = it description assertion
|
18
18
|
where
|
19
|
-
explanation = show n
|
20
19
|
assertion = primeFactors n `shouldBe` expected
|
21
20
|
|
22
|
-
--
|
23
|
-
-- for the test cases in `exercism/x-common`.
|
21
|
+
-- Test cases adapted from `exercism/x-common/prime-factors` on 2017-02-01.
|
24
22
|
|
25
|
-
cases = [ (
|
26
|
-
, (
|
27
|
-
, (
|
28
|
-
, (
|
29
|
-
, (
|
30
|
-
, (
|
31
|
-
, (
|
32
|
-
, ( 27, [3, 3, 3] )
|
33
|
-
, ( 625, [5, 5, 5, 5] )
|
34
|
-
, ( 901255, [5, 17, 23, 461] )
|
35
|
-
, (93819012551, [11, 9539, 894119] ) ]
|
23
|
+
cases = [ ("no factors", 1, [] )
|
24
|
+
, ("prime number", 2, [2] )
|
25
|
+
, ("square of a prime", 9, [3, 3] )
|
26
|
+
, ("cube of a prime", 8, [2, 2, 2] )
|
27
|
+
, ("product of primes and non-primes", 12, [2, 2, 3] )
|
28
|
+
, ("product of primes", 901255, [5, 17, 23, 461] )
|
29
|
+
, ("factors include a large prime", 93819012551, [11, 9539, 894119] ) ]
|
@@ -23,7 +23,7 @@ specs = describe "scrabble-score" $ do
|
|
23
23
|
where
|
24
24
|
assertion = scoreWord input `shouldBe` fromIntegral expected
|
25
25
|
|
26
|
-
-- Test cases adapted from `exercism/x-common/scrabble-score.json` on 2017-01
|
26
|
+
-- Test cases adapted from `exercism/x-common/scrabble-score.json` on 2017-02-01.
|
27
27
|
|
28
28
|
data Case = Case { description :: String
|
29
29
|
, input :: String
|
@@ -67,10 +67,6 @@ cases = [ Case { description = "lowercase letter"
|
|
67
67
|
, input = "pinata"
|
68
68
|
, expected = 8
|
69
69
|
}
|
70
|
-
, Case { description = "non-english letter is not scored"
|
71
|
-
, input = "piñata"
|
72
|
-
, expected = 7
|
73
|
-
}
|
74
70
|
, Case { description = "empty input"
|
75
71
|
, input = ""
|
76
72
|
, expected = 0
|
data/tracks/haskell/exercises/secret-handshake/examples/success-standard/src/SecretHandshake.hs
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module SecretHandshake (handshake) where
|
2
2
|
|
3
|
-
import Numeric (readInt)
|
4
3
|
import Data.Bits (testBit)
|
5
4
|
|
6
5
|
data Action = Wink
|
@@ -10,7 +9,7 @@ data Action = Wink
|
|
10
9
|
| Reverse
|
11
10
|
deriving (Show, Eq, Enum, Bounded)
|
12
11
|
|
13
|
-
handshake ::
|
12
|
+
handshake :: Int -> [String]
|
14
13
|
handshake = foldr f [] . toActions
|
15
14
|
where f Reverse acc = reverse acc
|
16
15
|
f action acc = toString action:acc
|
@@ -21,22 +20,5 @@ handshake = foldr f [] . toActions
|
|
21
20
|
Jump -> "jump"
|
22
21
|
Reverse -> undefined
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
instance Handshake Int where
|
28
|
-
toActions n = [act | act <- Reverse:[Wink .. Jump], n `testBit` fromEnum act]
|
29
|
-
|
30
|
-
class BinParsable a where
|
31
|
-
listToInt :: [a] -> Int
|
32
|
-
|
33
|
-
instance BinParsable Char where
|
34
|
-
listToInt s = case readInt 2 isBin parseBin s of
|
35
|
-
[(n, "")] -> n
|
36
|
-
_ -> 0
|
37
|
-
where isBin c = c == '0' || c == '1'
|
38
|
-
parseBin = fromEnum . ('1'==)
|
39
|
-
|
40
|
-
|
41
|
-
instance BinParsable a => Handshake [a] where
|
42
|
-
toActions = toActions . listToInt
|
23
|
+
toActions :: Int -> [Action]
|
24
|
+
toActions n = [act | act <- Reverse:[Wink .. Jump], n `testBit` fromEnum act]
|
@@ -9,43 +9,40 @@ main = hspecWith defaultConfig {configFastFail = True} specs
|
|
9
9
|
specs :: Spec
|
10
10
|
specs = describe "secret-handshake" $ do
|
11
11
|
|
12
|
-
--
|
13
|
-
-- for the test cases in `exercism/x-common`.
|
12
|
+
-- Test cases adapted from `exercism/x-common/secret-handshake` on 2017-01-31.
|
14
13
|
|
15
|
-
it "
|
14
|
+
it "wink for 1" $
|
16
15
|
handshake (1 :: Int) `shouldBe` ["wink"]
|
17
|
-
handshake "1" `shouldBe` ["wink"]
|
18
16
|
|
19
|
-
it "
|
17
|
+
it "double blink for 10" $
|
20
18
|
handshake (2 :: Int) `shouldBe` ["double blink"]
|
21
|
-
handshake "10" `shouldBe` ["double blink"]
|
22
19
|
|
23
|
-
it "
|
20
|
+
it "close your eyes for 100" $
|
24
21
|
handshake (4 :: Int) `shouldBe` ["close your eyes"]
|
25
|
-
handshake "100" `shouldBe` ["close your eyes"]
|
26
22
|
|
27
|
-
it "
|
23
|
+
it "jump for 1000" $
|
28
24
|
handshake (8 :: Int) `shouldBe` ["jump"]
|
29
|
-
handshake "1000" `shouldBe` ["jump"]
|
30
25
|
|
31
|
-
it "
|
26
|
+
it "combine two actions" $
|
32
27
|
handshake (3 :: Int) `shouldBe` ["wink", "double blink"]
|
33
|
-
handshake "11" `shouldBe` ["wink", "double blink"]
|
34
28
|
|
35
|
-
it "
|
29
|
+
it "reverse two actions" $
|
36
30
|
handshake (19 :: Int) `shouldBe` ["double blink", "wink"]
|
37
|
-
handshake "10011" `shouldBe` ["double blink", "wink"]
|
38
31
|
|
39
|
-
it "
|
32
|
+
it "reversing one action gives the same action" $
|
33
|
+
handshake (24 :: Int) `shouldBe` ["jump"]
|
34
|
+
|
35
|
+
it "reversing no actions still gives no actions" $
|
36
|
+
handshake (16 :: Int) `shouldBe` []
|
37
|
+
|
38
|
+
it "all possible actions" $
|
39
|
+
handshake (15 :: Int) `shouldBe` ["wink", "double blink", "close your eyes", "jump"]
|
40
|
+
|
41
|
+
it "reverse all possible actions" $
|
40
42
|
handshake (31 :: Int) `shouldBe` ["jump", "close your eyes", "double blink", "wink"]
|
41
|
-
handshake "11111" `shouldBe` ["jump", "close your eyes", "double blink", "wink"]
|
42
43
|
|
43
|
-
it "zero" $
|
44
|
+
it "do nothing for zero" $
|
44
45
|
handshake (0 :: Int) `shouldBe` []
|
45
|
-
handshake "0" `shouldBe` []
|
46
|
-
|
47
|
-
it "gibberish" $
|
48
|
-
handshake "piggies" `shouldBe` []
|
49
46
|
|
50
|
-
it "
|
51
|
-
handshake
|
47
|
+
it "do nothing if lower 5 bits not set" $
|
48
|
+
handshake (32 :: Int) `shouldBe` []
|
@@ -25,7 +25,8 @@ specs = describe "triangle" $
|
|
25
25
|
where
|
26
26
|
assertion = triangleType a b c `shouldBe` expected
|
27
27
|
|
28
|
-
-- Test cases
|
28
|
+
-- Test cases created from old version of `x-common` tests on 2017-01-31,
|
29
|
+
-- diverging from `exercism/x-common/triangle`.
|
29
30
|
|
30
31
|
cases = [ ( "equilateral triangle has all sides equal"
|
31
32
|
, (2, 2, 2)
|
@@ -55,6 +56,10 @@ specs = describe "triangle" $
|
|
55
56
|
, (3, 4, 5)
|
56
57
|
, Scalene
|
57
58
|
)
|
59
|
+
, ( "2a == b+c looks like equilateral, but isn't always"
|
60
|
+
, (5, 4, 6)
|
61
|
+
, Scalene
|
62
|
+
)
|
58
63
|
, ( "larger scalene triangle"
|
59
64
|
, (10, 11, 12)
|
60
65
|
, Scalene
|
data/tracks/julia/config.json
CHANGED
@@ -53,8 +53,17 @@
|
|
53
53
|
"difficulty": 1,
|
54
54
|
"topics": [
|
55
55
|
"control-flow (conditionals)",
|
56
|
-
|
57
|
-
|
56
|
+
"integers",
|
57
|
+
"mathematics"
|
58
|
+
]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
"slug": "raindrops",
|
62
|
+
"difficulty": 1,
|
63
|
+
"topics": [
|
64
|
+
"control-flow (loops)",
|
65
|
+
"arrays",
|
66
|
+
"strings"
|
58
67
|
]
|
59
68
|
},
|
60
69
|
{
|
@@ -96,6 +105,15 @@
|
|
96
105
|
"integers",
|
97
106
|
"mathematics"
|
98
107
|
]
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"slug": "secret-handshake",
|
111
|
+
"difficulty": 2,
|
112
|
+
"topics": [
|
113
|
+
"arrays",
|
114
|
+
"filtering",
|
115
|
+
"mathematics"
|
116
|
+
]
|
99
117
|
}
|
100
118
|
],
|
101
119
|
"deprecated": [
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# If the number has 3 as a factor, output 'Pling'.
|
2
|
+
# If the number has 5 as a factor, output 'Plang'.
|
3
|
+
# If the number has 7 as a factor, output 'Plong'.
|
4
|
+
# If the number does not have 3, 5, or 7 as a factor, just pass the number's digits straight through.
|
5
|
+
|
6
|
+
function raindrops(number::Int)
|
7
|
+
drops = []
|
8
|
+
number % 3 == 0 && push!(drops, "Pling")
|
9
|
+
number % 5 == 0 && push!(drops, "Plang")
|
10
|
+
number % 7 == 0 && push!(drops, "Plong")
|
11
|
+
if size(drops, 1) == 0
|
12
|
+
repr(number)
|
13
|
+
else
|
14
|
+
join(drops)
|
15
|
+
end
|
16
|
+
end
|