trackler 2.2.0.2 → 2.2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fixtures/deprecation-fixtures/tracks/repo-nope/config.json +2 -0
- data/fixtures/deprecation-fixtures/tracks/repo-yepp/config.json +3 -0
- data/lib/trackler/track.rb +1 -1
- data/lib/trackler/version.rb +1 -1
- data/tracks/csharp/config/exercise_readme.go.tmpl +16 -0
- data/tracks/csharp/exercises/accumulate/README.md +44 -0
- data/tracks/csharp/exercises/acronym/README.md +21 -0
- data/tracks/csharp/exercises/all-your-base/README.md +41 -0
- data/tracks/csharp/exercises/allergies/README.md +46 -0
- data/tracks/csharp/exercises/alphametics/README.md +48 -0
- data/tracks/csharp/exercises/anagram/README.md +19 -0
- data/tracks/csharp/exercises/atbash-cipher/README.md +40 -0
- data/tracks/csharp/exercises/bank-account/README.md +41 -0
- data/tracks/csharp/exercises/beer-song/README.md +336 -0
- data/tracks/csharp/exercises/binary-search-tree/README.md +66 -0
- data/tracks/csharp/exercises/binary-search/README.md +47 -0
- data/tracks/csharp/exercises/bob/README.md +24 -0
- data/tracks/csharp/exercises/book-store/README.md +80 -0
- data/tracks/csharp/exercises/bowling/README.md +59 -0
- data/tracks/csharp/exercises/bracket-push/README.md +16 -0
- data/tracks/csharp/exercises/change/README.md +29 -0
- data/tracks/csharp/exercises/circular-buffer/README.md +56 -0
- data/tracks/csharp/exercises/clock/README.md +25 -0
- data/tracks/csharp/exercises/connect/README.md +40 -0
- data/tracks/csharp/exercises/crypto-square/README.md +80 -0
- data/tracks/csharp/exercises/custom-set/README.md +23 -0
- data/tracks/csharp/exercises/diamond/README.md +75 -0
- data/tracks/csharp/exercises/difference-of-squares/README.md +30 -0
- data/tracks/csharp/exercises/diffie-hellman/README.md +55 -0
- data/tracks/csharp/exercises/dominoes/README.md +24 -0
- data/tracks/csharp/exercises/dot-dsl/README.md +37 -0
- data/tracks/csharp/exercises/error-handling/README.md +19 -0
- data/tracks/csharp/exercises/etl/README.md +57 -0
- data/tracks/csharp/exercises/flatten-array/README.md +24 -0
- data/tracks/csharp/exercises/food-chain/README.md +80 -0
- data/tracks/csharp/exercises/forth/README.md +39 -0
- data/tracks/csharp/exercises/gigasecond/README.md +17 -0
- data/tracks/csharp/exercises/go-counting/README.md +43 -0
- data/tracks/csharp/exercises/grade-school/README.md +48 -0
- data/tracks/csharp/exercises/grains/README.md +40 -0
- data/tracks/csharp/exercises/grep/README.md +77 -0
- data/tracks/csharp/exercises/hamming/README.md +48 -0
- data/tracks/csharp/exercises/hangman/README.md +32 -0
- data/tracks/csharp/exercises/hello-world/README.md +27 -0
- data/tracks/csharp/exercises/house/README.md +123 -0
- data/tracks/csharp/exercises/isogram/README.md +25 -0
- data/tracks/csharp/exercises/kindergarten-garden/README.md +72 -0
- data/tracks/csharp/exercises/largest-series-product/README.md +26 -0
- data/tracks/csharp/exercises/leap/README.md +39 -0
- data/tracks/csharp/exercises/ledger/README.md +24 -0
- data/tracks/csharp/exercises/linked-list/README.md +40 -0
- data/tracks/csharp/exercises/list-ops/README.md +19 -0
- data/tracks/csharp/exercises/luhn/README.md +77 -0
- data/tracks/csharp/exercises/markdown/README.md +28 -0
- data/tracks/csharp/exercises/matrix/README.md +51 -0
- data/tracks/csharp/exercises/meetup/README.md +36 -0
- data/tracks/csharp/exercises/minesweeper/README.md +36 -0
- data/tracks/csharp/exercises/nth-prime/README.md +29 -0
- data/tracks/csharp/exercises/nucleotide-count/README.md +43 -0
- data/tracks/csharp/exercises/ocr-numbers/README.md +91 -0
- data/tracks/csharp/exercises/palindrome-products/README.md +51 -0
- data/tracks/csharp/exercises/pangram/README.md +21 -0
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +17 -0
- data/tracks/csharp/exercises/pascals-triangle/README.md +27 -0
- data/tracks/csharp/exercises/perfect-numbers/README.md +30 -0
- data/tracks/csharp/exercises/phone-number/README.md +40 -0
- data/tracks/csharp/exercises/pig-latin/README.md +30 -0
- data/tracks/csharp/exercises/poker/README.md +18 -0
- data/tracks/csharp/exercises/pov/README.md +52 -0
- data/tracks/csharp/exercises/prime-factors/README.md +42 -0
- data/tracks/csharp/exercises/protein-translation/README.md +55 -0
- data/tracks/csharp/exercises/proverb/README.md +28 -0
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +30 -0
- data/tracks/csharp/exercises/queen-attack/README.md +39 -0
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +66 -0
- data/tracks/csharp/exercises/raindrops/README.md +30 -0
- data/tracks/csharp/exercises/react/README.md +29 -0
- data/tracks/csharp/exercises/rectangles/README.md +73 -0
- data/tracks/csharp/exercises/rna-transcription/README.md +31 -0
- data/tracks/csharp/exercises/robot-name/README.md +28 -0
- data/tracks/csharp/exercises/robot-simulator/README.md +40 -0
- data/tracks/csharp/exercises/roman-numerals/README.md +59 -0
- data/tracks/csharp/exercises/rotational-cipher/README.md +42 -0
- data/tracks/csharp/exercises/run-length-encoding/README.md +36 -0
- data/tracks/csharp/exercises/saddle-points/README.md +44 -0
- data/tracks/csharp/exercises/say/README.md +75 -0
- data/tracks/csharp/exercises/scale-generator/README.md +66 -0
- data/tracks/csharp/exercises/scrabble-score/README.md +50 -0
- data/tracks/csharp/exercises/secret-handshake/README.md +41 -0
- data/tracks/csharp/exercises/series/README.md +33 -0
- data/tracks/csharp/exercises/sgf-parsing/README.md +78 -0
- data/tracks/csharp/exercises/sieve/README.md +40 -0
- data/tracks/csharp/exercises/simple-cipher/README.md +96 -0
- data/tracks/csharp/exercises/simple-linked-list/README.md +38 -0
- data/tracks/csharp/exercises/space-age/README.md +30 -0
- data/tracks/csharp/exercises/strain/README.md +46 -0
- data/tracks/csharp/exercises/sublist/README.md +32 -0
- data/tracks/csharp/exercises/sum-of-multiples/README.md +28 -0
- data/tracks/csharp/exercises/tournament/README.md +74 -0
- data/tracks/csharp/exercises/transpose/README.md +71 -0
- data/tracks/csharp/exercises/tree-building/README.md +36 -0
- data/tracks/csharp/exercises/triangle/README.md +32 -0
- data/tracks/csharp/exercises/twelve-days/README.md +45 -0
- data/tracks/csharp/exercises/two-bucket/README.md +42 -0
- data/tracks/csharp/exercises/variable-length-quantity/README.md +50 -0
- data/tracks/csharp/exercises/word-count/README.md +25 -0
- data/tracks/csharp/exercises/word-search/README.md +43 -0
- data/tracks/csharp/exercises/wordy/README.md +73 -0
- data/tracks/csharp/exercises/zebra-puzzle/README.md +43 -0
- data/tracks/csharp/exercises/zipper/README.md +41 -0
- data/tracks/dart/config/exercise_readme.go.tmpl +16 -0
- data/tracks/dart/exercises/bob/README.md +18 -0
- data/tracks/dart/exercises/difference-of-squares/README.md +19 -0
- data/tracks/dart/exercises/gigasecond/README.md +11 -0
- data/tracks/dart/exercises/hamming/README.md +42 -0
- data/tracks/dart/exercises/hello-world/README.md +21 -0
- data/tracks/dart/exercises/leap/README.md +33 -0
- data/tracks/dart/exercises/rna-transcription/README.md +25 -0
- data/tracks/delphi/config.json +25 -32
- data/tracks/elixir/config.json +255 -3
- data/tracks/elixir/config/exercise_readme.go.tmpl +16 -0
- data/tracks/elixir/exercises/accumulate/README.md +72 -0
- data/tracks/elixir/exercises/acronym/README.md +52 -0
- data/tracks/elixir/exercises/all-your-base/README.md +72 -0
- data/tracks/elixir/exercises/allergies/README.md +74 -0
- data/tracks/elixir/exercises/anagram/README.md +50 -0
- data/tracks/elixir/exercises/atbash-cipher/README.md +71 -0
- data/tracks/elixir/exercises/bank-account/README.md +67 -0
- data/tracks/elixir/exercises/beer-song/README.md +364 -0
- data/tracks/elixir/exercises/binary-search/README.md +78 -0
- data/tracks/elixir/exercises/binary/README.md +72 -0
- data/tracks/elixir/exercises/bob/README.md +55 -0
- data/tracks/elixir/exercises/bowling/README.md +90 -0
- data/tracks/elixir/exercises/bowling/bowling_test.exs +91 -18
- data/tracks/elixir/exercises/bowling/example.exs +4 -4
- data/tracks/elixir/exercises/bracket-push/README.md +47 -0
- data/tracks/elixir/exercises/change/README.md +60 -0
- data/tracks/elixir/exercises/clock/README.md +50 -0
- data/tracks/elixir/exercises/collatz-conjecture/README.md +70 -0
- data/tracks/elixir/exercises/connect/README.md +71 -0
- data/tracks/elixir/exercises/crypto-square/README.md +111 -0
- data/tracks/elixir/exercises/custom-set/README.md +48 -0
- data/tracks/elixir/exercises/diamond/README.md +96 -0
- data/tracks/elixir/exercises/difference-of-squares/README.md +56 -0
- data/tracks/elixir/exercises/diffie-hellman/README.md +93 -0
- data/tracks/elixir/exercises/dominoes/README.md +55 -0
- data/tracks/elixir/exercises/dot-dsl/README.md +65 -0
- data/tracks/elixir/exercises/etl/README.md +88 -0
- data/tracks/elixir/exercises/flatten-array/README.md +55 -0
- data/tracks/elixir/exercises/forth/README.md +66 -0
- data/tracks/elixir/exercises/gigasecond/README.md +48 -0
- data/tracks/elixir/exercises/grade-school/README.md +79 -0
- data/tracks/elixir/exercises/grains/README.md +71 -0
- data/tracks/elixir/exercises/grep/README.md +108 -0
- data/tracks/elixir/exercises/hamming/README.md +79 -0
- data/tracks/elixir/exercises/hello-world/README.md +58 -0
- data/tracks/elixir/exercises/hexadecimal/README.md +51 -0
- data/tracks/elixir/exercises/isogram/README.md +56 -0
- data/tracks/elixir/exercises/kindergarten-garden/README.md +103 -0
- data/tracks/elixir/exercises/largest-series-product/README.md +57 -0
- data/tracks/elixir/exercises/leap/README.md +70 -0
- data/tracks/elixir/exercises/list-ops/README.md +47 -0
- data/tracks/elixir/exercises/luhn/README.md +108 -0
- data/tracks/elixir/exercises/markdown/README.md +55 -0
- data/tracks/elixir/exercises/matrix/README.md +82 -0
- data/tracks/elixir/exercises/meetup/README.md +67 -0
- data/tracks/elixir/exercises/minesweeper/README.md +67 -0
- data/tracks/elixir/exercises/nth-prime/README.md +52 -0
- data/tracks/elixir/exercises/nucleotide-count/README.md +70 -0
- data/tracks/elixir/exercises/ocr-numbers/README.md +122 -0
- data/tracks/elixir/exercises/palindrome-products/README.md +77 -0
- data/tracks/elixir/exercises/pangram/README.md +52 -0
- data/tracks/elixir/exercises/parallel-letter-frequency/README.md +48 -0
- data/tracks/elixir/exercises/pascals-triangle/README.md +58 -0
- data/tracks/elixir/exercises/perfect-numbers/README.md +61 -0
- data/tracks/elixir/exercises/phone-number/README.md +71 -0
- data/tracks/elixir/exercises/pig-latin/README.md +61 -0
- data/tracks/elixir/exercises/poker/README.md +49 -0
- data/tracks/elixir/exercises/prime-factors/README.md +73 -0
- data/tracks/elixir/exercises/protein-translation/README.md +86 -0
- data/tracks/elixir/exercises/pythagorean-triplet/README.md +61 -0
- data/tracks/elixir/exercises/queen-attack/README.md +70 -0
- data/tracks/elixir/exercises/rail-fence-cipher/README.md +97 -0
- data/tracks/elixir/exercises/raindrops/README.md +61 -0
- data/tracks/elixir/exercises/rna-transcription/README.md +62 -0
- data/tracks/elixir/exercises/robot-simulator/README.md +71 -0
- data/tracks/elixir/exercises/roman-numerals/README.md +86 -0
- data/tracks/elixir/exercises/rotational-cipher/README.md +73 -0
- data/tracks/elixir/exercises/run-length-encoding/README.md +67 -0
- data/tracks/elixir/exercises/saddle-points/README.md +70 -0
- data/tracks/elixir/exercises/say/README.md +106 -0
- data/tracks/elixir/exercises/scale-generator/README.md +97 -0
- data/tracks/elixir/exercises/scrabble-score/README.md +81 -0
- data/tracks/elixir/exercises/secret-handshake/README.md +94 -0
- data/tracks/elixir/exercises/series/README.md +64 -0
- data/tracks/elixir/exercises/sieve/README.md +71 -0
- data/tracks/elixir/exercises/simple-cipher/README.md +127 -0
- data/tracks/elixir/exercises/simple-linked-list/README.md +65 -0
- data/tracks/elixir/exercises/space-age/README.md +61 -0
- data/tracks/elixir/exercises/strain/README.md +80 -0
- data/tracks/elixir/exercises/sublist/README.md +58 -0
- data/tracks/elixir/exercises/sum-of-multiples/README.md +55 -0
- data/tracks/elixir/exercises/tournament/README.md +110 -0
- data/tracks/elixir/exercises/triangle/README.md +63 -0
- data/tracks/elixir/exercises/twelve-days/README.md +72 -0
- data/tracks/elixir/exercises/word-count/README.md +56 -0
- data/tracks/elixir/exercises/wordy/README.md +100 -0
- data/tracks/elixir/exercises/zipper/README.md +68 -0
- data/tracks/fsharp/config/exercise_readme.go.tmpl +16 -0
- data/tracks/fsharp/exercises/accumulate/README.md +40 -0
- data/tracks/fsharp/exercises/acronym/README.md +15 -0
- data/tracks/fsharp/exercises/all-your-base/README.md +35 -0
- data/tracks/fsharp/exercises/allergies/README.md +37 -0
- data/tracks/fsharp/exercises/alphametics/README.md +41 -0
- data/tracks/fsharp/exercises/anagram/README.md +13 -0
- data/tracks/fsharp/exercises/atbash-cipher/README.md +34 -0
- data/tracks/fsharp/exercises/bank-account/README.md +30 -0
- data/tracks/fsharp/exercises/beer-song/README.md +331 -0
- data/tracks/fsharp/exercises/binary-search-tree/README.md +60 -0
- data/tracks/fsharp/exercises/binary-search/README.md +41 -0
- data/tracks/fsharp/exercises/bob/README.md +18 -0
- data/tracks/fsharp/exercises/book-store/README.md +74 -0
- data/tracks/fsharp/exercises/bowling/README.md +53 -0
- data/tracks/fsharp/exercises/bracket-push/README.md +10 -0
- data/tracks/fsharp/exercises/change/README.md +23 -0
- data/tracks/fsharp/exercises/circular-buffer/README.md +50 -0
- data/tracks/fsharp/exercises/clock/README.md +13 -0
- data/tracks/fsharp/exercises/connect/README.md +34 -0
- data/tracks/fsharp/exercises/crypto-square/README.md +74 -0
- data/tracks/fsharp/exercises/custom-set/README.md +11 -0
- data/tracks/fsharp/exercises/diamond/README.md +62 -0
- data/tracks/fsharp/exercises/difference-of-squares/README.md +25 -0
- data/tracks/fsharp/exercises/diffie-hellman/README.md +49 -0
- data/tracks/fsharp/exercises/dominoes/README.md +18 -0
- data/tracks/fsharp/exercises/dot-dsl/README.md +28 -0
- data/tracks/fsharp/exercises/error-handling/README.md +13 -0
- data/tracks/fsharp/exercises/etl/README.md +51 -0
- data/tracks/fsharp/exercises/food-chain/README.md +74 -0
- data/tracks/fsharp/exercises/forth/README.md +29 -0
- data/tracks/fsharp/exercises/gigasecond/README.md +15 -0
- data/tracks/fsharp/exercises/go-counting/README.md +37 -0
- data/tracks/fsharp/exercises/grade-school/README.md +47 -0
- data/tracks/fsharp/exercises/grains/README.md +39 -0
- data/tracks/fsharp/exercises/grep/README.md +71 -0
- data/tracks/fsharp/exercises/hamming/README.md +42 -0
- data/tracks/fsharp/exercises/hangman/README.md +21 -0
- data/tracks/fsharp/exercises/hello-world/README.md +21 -0
- data/tracks/fsharp/exercises/house/README.md +117 -0
- data/tracks/fsharp/exercises/isogram/README.md +19 -0
- data/tracks/fsharp/exercises/kindergarten-garden/README.md +66 -0
- data/tracks/fsharp/exercises/largest-series-product/README.md +20 -0
- data/tracks/fsharp/exercises/leap/README.md +33 -0
- data/tracks/fsharp/exercises/ledger/README.md +18 -0
- data/tracks/fsharp/exercises/lens-person/README.md +15 -0
- data/tracks/fsharp/exercises/linked-list/README.md +50 -0
- data/tracks/fsharp/exercises/list-ops/README.md +10 -0
- data/tracks/fsharp/exercises/luhn/README.md +71 -0
- data/tracks/fsharp/exercises/markdown/README.md +18 -0
- data/tracks/fsharp/exercises/matrix/README.md +45 -0
- data/tracks/fsharp/exercises/meetup/README.md +30 -0
- data/tracks/fsharp/exercises/minesweeper/README.md +30 -0
- data/tracks/fsharp/exercises/nth-prime/README.md +21 -0
- data/tracks/fsharp/exercises/nucleotide-count/README.md +33 -0
- data/tracks/fsharp/exercises/ocr-numbers/README.md +85 -0
- data/tracks/fsharp/exercises/palindrome-products/README.md +44 -0
- data/tracks/fsharp/exercises/pangram/README.md +15 -0
- data/tracks/fsharp/exercises/parallel-letter-frequency/README.md +15 -0
- data/tracks/fsharp/exercises/pascals-triangle/README.md +21 -0
- data/tracks/fsharp/exercises/perfect-numbers/README.md +24 -0
- data/tracks/fsharp/exercises/phone-number/README.md +34 -0
- data/tracks/fsharp/exercises/pig-latin/README.md +24 -0
- data/tracks/fsharp/exercises/poker/README.md +15 -0
- data/tracks/fsharp/exercises/pov/README.md +46 -0
- data/tracks/fsharp/exercises/prime-factors/README.md +36 -0
- data/tracks/fsharp/exercises/protein-translation/README.md +49 -0
- data/tracks/fsharp/exercises/proverb/README.md +22 -0
- data/tracks/fsharp/exercises/pythagorean-triplet/README.md +24 -0
- data/tracks/fsharp/exercises/queen-attack/README.md +33 -0
- data/tracks/fsharp/exercises/rail-fence-cipher/README.md +60 -0
- data/tracks/fsharp/exercises/raindrops/README.md +27 -0
- data/tracks/fsharp/exercises/react/README.md +19 -0
- data/tracks/fsharp/exercises/rectangles/README.md +67 -0
- data/tracks/fsharp/exercises/rna-transcription/README.md +29 -0
- data/tracks/fsharp/exercises/robot-name/README.md +22 -0
- data/tracks/fsharp/exercises/robot-simulator/README.md +34 -0
- data/tracks/fsharp/exercises/roman-numerals/README.md +49 -0
- data/tracks/fsharp/exercises/run-length-encoding/README.md +30 -0
- data/tracks/fsharp/exercises/saddle-points/README.md +33 -0
- data/tracks/fsharp/exercises/say/README.md +69 -0
- data/tracks/fsharp/exercises/scale-generator/README.md +60 -0
- data/tracks/fsharp/exercises/scrabble-score/README.md +44 -0
- data/tracks/fsharp/exercises/secret-handshake/README.md +35 -0
- data/tracks/fsharp/exercises/series/README.md +27 -0
- data/tracks/fsharp/exercises/sgf-parsing/README.md +68 -0
- data/tracks/fsharp/exercises/sieve/README.md +34 -0
- data/tracks/fsharp/exercises/simple-cipher/README.md +90 -0
- data/tracks/fsharp/exercises/simple-linked-list/README.md +28 -0
- data/tracks/fsharp/exercises/space-age/README.md +28 -0
- data/tracks/fsharp/exercises/strain/README.md +40 -0
- data/tracks/fsharp/exercises/sublist/README.md +21 -0
- data/tracks/fsharp/exercises/sum-of-multiples/README.md +18 -0
- data/tracks/fsharp/exercises/tournament/README.md +68 -0
- data/tracks/fsharp/exercises/transpose/README.md +65 -0
- data/tracks/fsharp/exercises/tree-building/README.md +30 -0
- data/tracks/fsharp/exercises/triangle/README.md +26 -0
- data/tracks/fsharp/exercises/twelve-days/README.md +39 -0
- data/tracks/fsharp/exercises/two-bucket/README.md +36 -0
- data/tracks/fsharp/exercises/variable-length-quantity/README.md +39 -0
- data/tracks/fsharp/exercises/word-count/README.md +19 -0
- data/tracks/fsharp/exercises/word-search/README.md +30 -0
- data/tracks/fsharp/exercises/wordy/README.md +68 -0
- data/tracks/fsharp/exercises/zebra-puzzle/README.md +32 -0
- data/tracks/fsharp/exercises/zipper/README.md +31 -0
- data/tracks/haskell/README.md +2 -2
- data/tracks/javascript/config.json +232 -4
- data/tracks/kotlin/config.json +8 -1
- data/tracks/kotlin/exercises/rotational-cipher/build.gradle +28 -0
- data/tracks/kotlin/exercises/rotational-cipher/src/example/kotlin/RotationalCipher.kt +18 -0
- data/tracks/kotlin/exercises/rotational-cipher/src/main/kotlin/.keep +0 -0
- data/tracks/kotlin/exercises/rotational-cipher/src/test/kotlin/RotationalCipherTest.kt +81 -0
- data/tracks/kotlin/exercises/settings.gradle +1 -0
- data/tracks/powershell/config/exercise_readme.go.tmpl +16 -0
- data/tracks/powershell/exercises/hamming/README.md +42 -0
- data/tracks/powershell/exercises/hello-world/README.md +21 -0
- data/tracks/purescript/README.md +4 -4
- data/tracks/scala/config.json +266 -6
- data/tracks/scala/config/exercise_readme.go.tmpl +16 -0
- data/tracks/scala/exercises/accumulate/README.md +46 -0
- data/tracks/scala/exercises/acronym/README.md +26 -0
- data/tracks/scala/exercises/all-your-base/README.md +46 -0
- data/tracks/scala/exercises/allergies/README.md +48 -0
- data/tracks/scala/exercises/alphametics/README.md +46 -0
- data/tracks/scala/exercises/anagram/README.md +24 -0
- data/tracks/scala/exercises/atbash-cipher/README.md +45 -0
- data/tracks/scala/exercises/bank-account/README.md +54 -0
- data/tracks/scala/exercises/beer-song/README.md +338 -0
- data/tracks/scala/exercises/binary-search-tree/README.md +71 -0
- data/tracks/scala/exercises/binary-search/README.md +52 -0
- data/tracks/scala/exercises/binary/README.md +46 -0
- data/tracks/scala/exercises/bob/README.md +29 -0
- data/tracks/scala/exercises/book-store/README.md +85 -0
- data/tracks/scala/exercises/bowling/README.md +64 -0
- data/tracks/scala/exercises/bracket-push/README.md +21 -0
- data/tracks/scala/exercises/change/README.md +34 -0
- data/tracks/scala/exercises/clock/README.md +24 -0
- data/tracks/scala/exercises/connect/README.md +53 -0
- data/tracks/scala/exercises/crypto-square/README.md +85 -0
- data/tracks/scala/exercises/custom-set/README.md +22 -0
- data/tracks/scala/exercises/difference-of-squares/README.md +30 -0
- data/tracks/scala/exercises/dominoes/README.md +29 -0
- data/tracks/scala/exercises/etl/README.md +62 -0
- data/tracks/scala/exercises/food-chain/README.md +81 -0
- data/tracks/scala/exercises/forth/README.md +40 -0
- data/tracks/scala/exercises/gigasecond/README.md +26 -0
- data/tracks/scala/exercises/grade-school/README.md +53 -0
- data/tracks/scala/exercises/grains/README.md +45 -0
- data/tracks/scala/exercises/hamming/README.md +112 -0
- data/tracks/scala/exercises/hello-world/README.md +38 -0
- data/tracks/scala/exercises/hexadecimal/README.md +25 -0
- data/tracks/scala/exercises/house/README.md +124 -0
- data/tracks/scala/exercises/isogram/README.md +30 -0
- data/tracks/scala/exercises/kindergarten-garden/README.md +77 -0
- data/tracks/scala/exercises/largest-series-product/README.md +31 -0
- data/tracks/scala/exercises/leap/README.md +50 -0
- data/tracks/scala/exercises/lens-person/README.md +11 -7
- data/tracks/scala/exercises/linked-list/README.md +45 -0
- data/tracks/scala/exercises/luhn/README.md +82 -0
- data/tracks/scala/exercises/matrix/README.md +56 -0
- data/tracks/scala/exercises/meetup/README.md +41 -0
- data/tracks/scala/exercises/minesweeper/README.md +41 -0
- data/tracks/scala/exercises/nth-prime/README.md +26 -0
- data/tracks/scala/exercises/nucleotide-count/README.md +107 -0
- data/tracks/scala/exercises/ocr-numbers/README.md +96 -0
- data/tracks/scala/exercises/octal/README.md +60 -0
- data/tracks/scala/exercises/palindrome-products/README.md +51 -0
- data/tracks/scala/exercises/pangram/README.md +26 -0
- data/tracks/scala/exercises/parallel-letter-frequency/README.md +50 -0
- data/tracks/scala/exercises/pascals-triangle/README.md +32 -0
- data/tracks/scala/exercises/perfect-numbers/README.md +35 -0
- data/tracks/scala/exercises/phone-number/README.md +56 -0
- data/tracks/scala/exercises/pig-latin/README.md +35 -0
- data/tracks/scala/exercises/prime-factors/README.md +47 -0
- data/tracks/scala/exercises/protein-translation/README.md +60 -0
- data/tracks/scala/exercises/pythagorean-triplet/README.md +35 -0
- data/tracks/scala/exercises/queen-attack/README.md +44 -0
- data/tracks/scala/exercises/rail-fence-cipher/README.md +71 -0
- data/tracks/scala/exercises/raindrops/README.md +35 -0
- data/tracks/scala/exercises/rna-transcription/README.md +36 -0
- data/tracks/scala/exercises/robot-name/README.md +40 -0
- data/tracks/scala/exercises/robot-simulator/README.md +45 -0
- data/tracks/scala/exercises/roman-numerals/README.md +72 -0
- data/tracks/scala/exercises/run-length-encoding/README.md +41 -0
- data/tracks/scala/exercises/saddle-points/README.md +44 -0
- data/tracks/scala/exercises/say/README.md +80 -0
- data/tracks/scala/exercises/scrabble-score/README.md +55 -0
- data/tracks/scala/exercises/secret-handshake/README.md +46 -0
- data/tracks/scala/exercises/series/README.md +38 -0
- data/tracks/scala/exercises/sgf-parsing/README.md +79 -0
- data/tracks/scala/exercises/sieve/README.md +45 -0
- data/tracks/scala/exercises/simple-cipher/README.md +101 -0
- data/tracks/scala/exercises/simple-linked-list/README.md +39 -0
- data/tracks/scala/exercises/space-age/README.md +35 -0
- data/tracks/scala/exercises/spiral-matrix/README.md +41 -0
- data/tracks/scala/exercises/strain/README.md +51 -0
- data/tracks/scala/exercises/sublist/README.md +32 -0
- data/tracks/scala/exercises/sum-of-multiples/README.md +29 -0
- data/tracks/scala/exercises/triangle/README.md +37 -0
- data/tracks/scala/exercises/trinary/README.md +39 -0
- data/tracks/scala/exercises/variable-length-quantity/README.md +54 -0
- data/tracks/scala/exercises/word-count/README.md +30 -0
- data/tracks/scala/exercises/wordy/README.md +74 -0
- data/tracks/scala/exercises/zebra-puzzle/README.md +43 -0
- data/tracks/scala/exercises/zipper/README.md +42 -0
- metadata +401 -1
@@ -0,0 +1,55 @@
|
|
1
|
+
# Bob
|
2
|
+
|
3
|
+
Bob is a lackadaisical teenager. In conversation, his responses are very limited.
|
4
|
+
|
5
|
+
Bob answers 'Sure.' if you ask him a question.
|
6
|
+
|
7
|
+
He answers 'Whoa, chill out!' if you yell at him.
|
8
|
+
|
9
|
+
He says 'Fine. Be that way!' if you address him without actually saying
|
10
|
+
anything.
|
11
|
+
|
12
|
+
He answers 'Whatever.' to anything else.
|
13
|
+
|
14
|
+
## Running tests
|
15
|
+
|
16
|
+
Execute the tests with:
|
17
|
+
|
18
|
+
```bash
|
19
|
+
$ elixir bob_test.exs
|
20
|
+
```
|
21
|
+
|
22
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
23
|
+
|
24
|
+
### Pending tests
|
25
|
+
|
26
|
+
In the test suites, all but the first test have been skipped.
|
27
|
+
|
28
|
+
Once you get a test passing, you can unskip the next one by
|
29
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
30
|
+
|
31
|
+
For example:
|
32
|
+
|
33
|
+
```elixir
|
34
|
+
# @tag :pending
|
35
|
+
test "shouting" do
|
36
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
Or, you can enable all the tests by commenting out the
|
41
|
+
`ExUnit.configure` line in the test suite.
|
42
|
+
|
43
|
+
```elixir
|
44
|
+
# ExUnit.configure exclude: :pending, trace: true
|
45
|
+
```
|
46
|
+
|
47
|
+
For more detailed information about the Elixir track, please
|
48
|
+
see the [help page](http://exercism.io/languages/elixir).
|
49
|
+
|
50
|
+
## Source
|
51
|
+
|
52
|
+
Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
|
53
|
+
|
54
|
+
## Submitting Incomplete Solutions
|
55
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Bowling
|
2
|
+
|
3
|
+
Score a bowling game.
|
4
|
+
|
5
|
+
Bowling is game where players roll a heavy ball to knock down pins
|
6
|
+
arranged in a triangle. Write code to keep track of the score
|
7
|
+
of a game of bowling.
|
8
|
+
|
9
|
+
## Scoring Bowling
|
10
|
+
|
11
|
+
The game consists of 10 frames. A frame is composed of one or two ball throws with 10 pins standing at frame initialization. There are three cases for the tabulation of a frame.
|
12
|
+
|
13
|
+
* An open frame is where a score of less than 10 is recorded for the frame. In this case the score for the frame is the number of pins knocked down.
|
14
|
+
|
15
|
+
* A spare is where all ten pins are knocked down after the second throw. The total value of a spare is 10 plus the number of pins knocked down in their next throw.
|
16
|
+
|
17
|
+
* A strike is where all ten pins are knocked down after the first throw. The total value of a strike is 10 plus the number of pins knocked down in their next two throws. If a strike is immediately followed by a second strike, then we can not total the value of first strike until they throw the ball one more time.
|
18
|
+
|
19
|
+
Here is a three frame example:
|
20
|
+
|
21
|
+
| Frame 1 | Frame 2 | Frame 3 |
|
22
|
+
| :-------------: |:-------------:| :---------------------:|
|
23
|
+
| X (strike) | 5/ (spare) | 9 0 (open frame) |
|
24
|
+
|
25
|
+
Frame 1 is (10 + 5 + 5) = 20
|
26
|
+
|
27
|
+
Frame 2 is (5 + 5 + 9) = 19
|
28
|
+
|
29
|
+
Frame 3 is (9 + 0) = 9
|
30
|
+
|
31
|
+
This means the current running total is 48.
|
32
|
+
|
33
|
+
The tenth frame in the game is a special case. If someone throws a strike or a spare then they get a fill ball. Fill balls exist to calculate the total of the 10th frame. Scoring a strike or spare on the fill ball does not give the player more fill balls. The total value of the 10th frame is the total number of pins knocked down.
|
34
|
+
|
35
|
+
For a tenth frame of X1/ (strike and a spare), the total value is 20.
|
36
|
+
|
37
|
+
For a tenth frame of XXX (three strikes), the total value is 30.
|
38
|
+
|
39
|
+
## Requirements
|
40
|
+
|
41
|
+
Write code to keep track of the score of a game of bowling. It should
|
42
|
+
support two operations:
|
43
|
+
|
44
|
+
* `roll(pins : int)` is called each time the player rolls a ball. The
|
45
|
+
argument is the number of pins knocked down.
|
46
|
+
* `score() : int` is called only at the very end of the game. It
|
47
|
+
returns the total score for that game.
|
48
|
+
|
49
|
+
## Running tests
|
50
|
+
|
51
|
+
Execute the tests with:
|
52
|
+
|
53
|
+
```bash
|
54
|
+
$ elixir bob_test.exs
|
55
|
+
```
|
56
|
+
|
57
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
58
|
+
|
59
|
+
### Pending tests
|
60
|
+
|
61
|
+
In the test suites, all but the first test have been skipped.
|
62
|
+
|
63
|
+
Once you get a test passing, you can unskip the next one by
|
64
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
65
|
+
|
66
|
+
For example:
|
67
|
+
|
68
|
+
```elixir
|
69
|
+
# @tag :pending
|
70
|
+
test "shouting" do
|
71
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
72
|
+
end
|
73
|
+
```
|
74
|
+
|
75
|
+
Or, you can enable all the tests by commenting out the
|
76
|
+
`ExUnit.configure` line in the test suite.
|
77
|
+
|
78
|
+
```elixir
|
79
|
+
# ExUnit.configure exclude: :pending, trace: true
|
80
|
+
```
|
81
|
+
|
82
|
+
For more detailed information about the Elixir track, please
|
83
|
+
see the [help page](http://exercism.io/languages/elixir).
|
84
|
+
|
85
|
+
## Source
|
86
|
+
|
87
|
+
The Bowling Game Kata at but UncleBob [http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata)
|
88
|
+
|
89
|
+
## Submitting Incomplete Solutions
|
90
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -12,7 +12,7 @@ defmodule BowlingTest do
|
|
12
12
|
Enum.reduce(rolls, game, fn(roll, game) -> Bowling.roll(game, roll) end)
|
13
13
|
end
|
14
14
|
|
15
|
-
test "
|
15
|
+
test "should be able to score a game with all zeros" do
|
16
16
|
game = Bowling.start
|
17
17
|
rolls = [0, 0,
|
18
18
|
0, 0,
|
@@ -29,7 +29,7 @@ defmodule BowlingTest do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
@tag :pending
|
32
|
-
test "
|
32
|
+
test "should be able to score a game with no strikes or spares" do
|
33
33
|
game = Bowling.start
|
34
34
|
rolls = [3, 6,
|
35
35
|
3, 6,
|
@@ -46,7 +46,7 @@ defmodule BowlingTest do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
@tag :pending
|
49
|
-
test "spare followed by
|
49
|
+
test "a spare followed by zeros is worth ten points" do
|
50
50
|
game = Bowling.start
|
51
51
|
rolls = [6, 4,
|
52
52
|
0, 0,
|
@@ -63,7 +63,7 @@ defmodule BowlingTest do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
@tag :pending
|
66
|
-
test "points scored in the roll after
|
66
|
+
test "points scored in the roll after a spare are counted twice" do
|
67
67
|
game = Bowling.start
|
68
68
|
rolls = [6, 4,
|
69
69
|
3, 0,
|
@@ -115,7 +115,7 @@ defmodule BowlingTest do
|
|
115
115
|
end
|
116
116
|
|
117
117
|
@tag :pending
|
118
|
-
test "a strike earns ten points in frame with a single roll" do
|
118
|
+
test "a strike earns ten points in a frame with a single roll" do
|
119
119
|
game = Bowling.start
|
120
120
|
rolls = [10,
|
121
121
|
0, 0,
|
@@ -258,26 +258,26 @@ defmodule BowlingTest do
|
|
258
258
|
end
|
259
259
|
|
260
260
|
@tag :pending
|
261
|
-
test "rolls
|
261
|
+
test "rolls cannot score negative points" do
|
262
262
|
game = Bowling.start
|
263
|
-
assert Bowling.roll(game, -1) == {:error, "
|
263
|
+
assert Bowling.roll(game, -1) == {:error, "Negative roll is invalid"}
|
264
264
|
end
|
265
265
|
|
266
266
|
@tag :pending
|
267
|
-
test "a roll
|
267
|
+
test "a roll cannot score more than 10 points" do
|
268
268
|
game = Bowling.start
|
269
|
-
assert Bowling.roll(game, 11) == {:error, "
|
269
|
+
assert Bowling.roll(game, 11) == {:error, "Pin count exceeds pins on the lane"}
|
270
270
|
end
|
271
271
|
|
272
272
|
@tag :pending
|
273
|
-
test "two rolls in a frame
|
273
|
+
test "two rolls in a frame cannot score more than 10 points" do
|
274
274
|
game = Bowling.start
|
275
275
|
game = Bowling.roll(game, 5)
|
276
276
|
assert Bowling.roll(game, 6) == {:error, "Pin count exceeds pins on the lane"}
|
277
277
|
end
|
278
278
|
|
279
279
|
@tag :pending
|
280
|
-
test "
|
280
|
+
test "bonus roll after a strike in the last frame cannot score more than 10 points" do
|
281
281
|
game = Bowling.start
|
282
282
|
rolls = [0, 0,
|
283
283
|
0, 0,
|
@@ -288,26 +288,100 @@ defmodule BowlingTest do
|
|
288
288
|
0, 0,
|
289
289
|
0, 0,
|
290
290
|
0, 0,
|
291
|
+
10]
|
292
|
+
game = roll_reduce(game, rolls)
|
293
|
+
assert Bowling.roll(game, 11) == {:error, "Pin count exceeds pins on the lane"}
|
294
|
+
end
|
295
|
+
|
296
|
+
@tag :pending
|
297
|
+
test "two bonus rolls after a strike in the last frame cannot score more than 10 points" do
|
298
|
+
game = Bowling.start
|
299
|
+
rolls = [0, 0,
|
300
|
+
0, 0,
|
301
|
+
0, 0,
|
302
|
+
0, 0,
|
303
|
+
0, 0,
|
304
|
+
0, 0,
|
305
|
+
0, 0,
|
306
|
+
0, 0,
|
307
|
+
0, 0,
|
308
|
+
10,
|
291
309
|
5]
|
292
310
|
game = roll_reduce(game, rolls)
|
293
311
|
assert Bowling.roll(game, 6) == {:error, "Pin count exceeds pins on the lane"}
|
294
312
|
end
|
295
313
|
|
296
314
|
@tag :pending
|
297
|
-
test "
|
315
|
+
test "two bonus rolls after a strike in the last frame can score more than 10 points if one is a strike" do
|
316
|
+
game = Bowling.start
|
317
|
+
rolls = [0, 0,
|
318
|
+
0, 0,
|
319
|
+
0, 0,
|
320
|
+
0, 0,
|
321
|
+
0, 0,
|
322
|
+
0, 0,
|
323
|
+
0, 0,
|
324
|
+
0, 0,
|
325
|
+
0, 0,
|
326
|
+
10,
|
327
|
+
10,
|
328
|
+
6]
|
329
|
+
game = roll_reduce(game, rolls)
|
330
|
+
assert Bowling.score(game) == 26
|
331
|
+
end
|
332
|
+
|
333
|
+
@tag :pending
|
334
|
+
test "the second bonus rolls after a strike in the last frame cannot be a strike if the first one is not a strike" do
|
335
|
+
game = Bowling.start
|
336
|
+
rolls = [0, 0,
|
337
|
+
0, 0,
|
338
|
+
0, 0,
|
339
|
+
0, 0,
|
340
|
+
0, 0,
|
341
|
+
0, 0,
|
342
|
+
0, 0,
|
343
|
+
0, 0,
|
344
|
+
0, 0,
|
345
|
+
10,
|
346
|
+
6]
|
347
|
+
game = roll_reduce(game, rolls)
|
348
|
+
assert Bowling.roll(game, 10) == {:error, "Pin count exceeds pins on the lane"}
|
349
|
+
end
|
350
|
+
|
351
|
+
@tag :pending
|
352
|
+
test "second bonus roll after a strike in the last frame cannot score more than 10 points" do
|
353
|
+
game = Bowling.start
|
354
|
+
rolls = [0, 0,
|
355
|
+
0, 0,
|
356
|
+
0, 0,
|
357
|
+
0, 0,
|
358
|
+
0, 0,
|
359
|
+
0, 0,
|
360
|
+
0, 0,
|
361
|
+
0, 0,
|
362
|
+
0, 0,
|
363
|
+
10,
|
364
|
+
10]
|
365
|
+
game = roll_reduce(game, rolls)
|
366
|
+
assert Bowling.roll(game, 11) == {:error, "Pin count exceeds pins on the lane"}
|
367
|
+
end
|
368
|
+
|
369
|
+
@tag :pending
|
370
|
+
test "an unstarted game cannot be scored" do
|
298
371
|
game = Bowling.start
|
299
372
|
assert Bowling.score(game) == {:error, "Score cannot be taken until the end of the game"}
|
300
373
|
end
|
301
374
|
|
302
375
|
@tag :pending
|
303
|
-
test "
|
376
|
+
test "an incomplete game cannot be scored" do
|
304
377
|
game = Bowling.start
|
305
|
-
|
378
|
+
rolls = [0, 0]
|
379
|
+
game = roll_reduce(game, rolls)
|
306
380
|
assert Bowling.score(game) == {:error, "Score cannot be taken until the end of the game"}
|
307
381
|
end
|
308
382
|
|
309
383
|
@tag :pending
|
310
|
-
test "
|
384
|
+
test "cannot roll if game already has ten frames" do
|
311
385
|
game = Bowling.start
|
312
386
|
rolls = [0, 0,
|
313
387
|
0, 0,
|
@@ -318,10 +392,9 @@ defmodule BowlingTest do
|
|
318
392
|
0, 0,
|
319
393
|
0, 0,
|
320
394
|
0, 0,
|
321
|
-
0, 0
|
322
|
-
0]
|
395
|
+
0, 0]
|
323
396
|
game = roll_reduce(game, rolls)
|
324
|
-
assert Bowling.
|
397
|
+
assert Bowling.roll(game, 0) == {:error, "Cannot roll after game is over"}
|
325
398
|
end
|
326
399
|
|
327
400
|
@tag :pending
|
@@ -10,16 +10,18 @@ defmodule Bowling do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def roll(_, score) when score < 0 do
|
13
|
-
{:error, "
|
13
|
+
{:error, "Negative roll is invalid"}
|
14
14
|
end
|
15
15
|
|
16
16
|
def roll(_, score) when score > 10 do
|
17
|
-
{:error, "
|
17
|
+
{:error, "Pin count exceeds pins on the lane"}
|
18
18
|
end
|
19
19
|
|
20
20
|
def roll(game, score) do
|
21
21
|
updates = update_score(game.roll_in_frame, game, score)
|
22
22
|
cond do
|
23
|
+
too_many_frames?(updates) ->
|
24
|
+
{:error, "Cannot roll after game is over"}
|
23
25
|
valid_updates?(updates) ->
|
24
26
|
updates
|
25
27
|
true ->
|
@@ -58,8 +60,6 @@ defmodule Bowling do
|
|
58
60
|
{:error, "Score cannot be taken until the end of the game"}
|
59
61
|
bonus_roll_remaining?(game) ->
|
60
62
|
{:error, "Score cannot be taken until the end of the game"}
|
61
|
-
too_many_frames?(game) ->
|
62
|
-
{:error, "Invalid game: too many frames"}
|
63
63
|
true ->
|
64
64
|
parse_scores(game.scores)
|
65
65
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Bracket Push
|
2
|
+
|
3
|
+
Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
|
4
|
+
verify that all the pairs are matched and nested correctly.
|
5
|
+
|
6
|
+
## Running tests
|
7
|
+
|
8
|
+
Execute the tests with:
|
9
|
+
|
10
|
+
```bash
|
11
|
+
$ elixir bob_test.exs
|
12
|
+
```
|
13
|
+
|
14
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
15
|
+
|
16
|
+
### Pending tests
|
17
|
+
|
18
|
+
In the test suites, all but the first test have been skipped.
|
19
|
+
|
20
|
+
Once you get a test passing, you can unskip the next one by
|
21
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
22
|
+
|
23
|
+
For example:
|
24
|
+
|
25
|
+
```elixir
|
26
|
+
# @tag :pending
|
27
|
+
test "shouting" do
|
28
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
Or, you can enable all the tests by commenting out the
|
33
|
+
`ExUnit.configure` line in the test suite.
|
34
|
+
|
35
|
+
```elixir
|
36
|
+
# ExUnit.configure exclude: :pending, trace: true
|
37
|
+
```
|
38
|
+
|
39
|
+
For more detailed information about the Elixir track, please
|
40
|
+
see the [help page](http://exercism.io/languages/elixir).
|
41
|
+
|
42
|
+
## Source
|
43
|
+
|
44
|
+
Ginna Baker
|
45
|
+
|
46
|
+
## Submitting Incomplete Solutions
|
47
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Change
|
2
|
+
|
3
|
+
Correctly determine the fewest number of coins to be given to a customer such
|
4
|
+
that the sum of the coins' value would equal the correct amount of change.
|
5
|
+
|
6
|
+
## For example
|
7
|
+
|
8
|
+
- An input of 15 with [1, 5, 10, 25, 100] should return one nickel (5)
|
9
|
+
and one dime (10) or [0, 1, 1, 0, 0]
|
10
|
+
- An input of 40 with [1, 5, 10, 25, 100] should return one nickel (5)
|
11
|
+
and one dime (10) and one quarter (25) or [0, 1, 1, 1, 0]
|
12
|
+
|
13
|
+
## Edge cases
|
14
|
+
|
15
|
+
- Does your algorithm work for any given set of coins?
|
16
|
+
- Can you ask for negative change?
|
17
|
+
- Can you ask for a change value smaller than the smallest coin value?
|
18
|
+
|
19
|
+
## Running tests
|
20
|
+
|
21
|
+
Execute the tests with:
|
22
|
+
|
23
|
+
```bash
|
24
|
+
$ elixir bob_test.exs
|
25
|
+
```
|
26
|
+
|
27
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
28
|
+
|
29
|
+
### Pending tests
|
30
|
+
|
31
|
+
In the test suites, all but the first test have been skipped.
|
32
|
+
|
33
|
+
Once you get a test passing, you can unskip the next one by
|
34
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
35
|
+
|
36
|
+
For example:
|
37
|
+
|
38
|
+
```elixir
|
39
|
+
# @tag :pending
|
40
|
+
test "shouting" do
|
41
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
Or, you can enable all the tests by commenting out the
|
46
|
+
`ExUnit.configure` line in the test suite.
|
47
|
+
|
48
|
+
```elixir
|
49
|
+
# ExUnit.configure exclude: :pending, trace: true
|
50
|
+
```
|
51
|
+
|
52
|
+
For more detailed information about the Elixir track, please
|
53
|
+
see the [help page](http://exercism.io/languages/elixir).
|
54
|
+
|
55
|
+
## Source
|
56
|
+
|
57
|
+
Software Craftsmanship - Kata-logue [http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata](http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata)
|
58
|
+
|
59
|
+
## Submitting Incomplete Solutions
|
60
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|