trackler 2.2.0.2 → 2.2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,65 @@
|
|
|
1
|
+
# Simple Linked List
|
|
2
|
+
|
|
3
|
+
Write a simple linked list implementation that uses Elements and a List.
|
|
4
|
+
|
|
5
|
+
The linked list is a fundamental data structure in computer science,
|
|
6
|
+
often used in the implementation of other data structures. They're
|
|
7
|
+
pervasive in functional programming languages, such as Clojure, Erlang,
|
|
8
|
+
or Haskell, but far less common in imperative languages such as Ruby or
|
|
9
|
+
Python.
|
|
10
|
+
|
|
11
|
+
The simplest kind of linked list is a singly linked list. Each element in the
|
|
12
|
+
list contains data and a "next" field pointing to the next element in the list
|
|
13
|
+
of elements.
|
|
14
|
+
|
|
15
|
+
This variant of linked lists is often used to represent sequences or
|
|
16
|
+
push-down stacks (also called a LIFO stack; Last In, First Out).
|
|
17
|
+
|
|
18
|
+
As a first take, lets create a singly linked list to contain the range (1..10),
|
|
19
|
+
and provide functions to reverse a linked list and convert to and from arrays.
|
|
20
|
+
|
|
21
|
+
When implementing this in a language with built-in linked lists,
|
|
22
|
+
implement your own abstract data type.
|
|
23
|
+
|
|
24
|
+
## Running tests
|
|
25
|
+
|
|
26
|
+
Execute the tests with:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
$ elixir bob_test.exs
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
33
|
+
|
|
34
|
+
### Pending tests
|
|
35
|
+
|
|
36
|
+
In the test suites, all but the first test have been skipped.
|
|
37
|
+
|
|
38
|
+
Once you get a test passing, you can unskip the next one by
|
|
39
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
40
|
+
|
|
41
|
+
For example:
|
|
42
|
+
|
|
43
|
+
```elixir
|
|
44
|
+
# @tag :pending
|
|
45
|
+
test "shouting" do
|
|
46
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
47
|
+
end
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Or, you can enable all the tests by commenting out the
|
|
51
|
+
`ExUnit.configure` line in the test suite.
|
|
52
|
+
|
|
53
|
+
```elixir
|
|
54
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For more detailed information about the Elixir track, please
|
|
58
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
59
|
+
|
|
60
|
+
## Source
|
|
61
|
+
|
|
62
|
+
Inspired by 'Data Structures and Algorithms with Object-Oriented Design Patterns in Ruby', singly linked-lists. [http://www.brpreiss.com/books/opus8/html/page96.html#SECTION004300000000000000000](http://www.brpreiss.com/books/opus8/html/page96.html#SECTION004300000000000000000)
|
|
63
|
+
|
|
64
|
+
## Submitting Incomplete Solutions
|
|
65
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Space Age
|
|
2
|
+
|
|
3
|
+
Given an age in seconds, calculate how old someone would be on:
|
|
4
|
+
|
|
5
|
+
- Earth: orbital period 365.25 Earth days, or 31557600 seconds
|
|
6
|
+
- Mercury: orbital period 0.2408467 Earth years
|
|
7
|
+
- Venus: orbital period 0.61519726 Earth years
|
|
8
|
+
- Mars: orbital period 1.8808158 Earth years
|
|
9
|
+
- Jupiter: orbital period 11.862615 Earth years
|
|
10
|
+
- Saturn: orbital period 29.447498 Earth years
|
|
11
|
+
- Uranus: orbital period 84.016846 Earth years
|
|
12
|
+
- Neptune: orbital period 164.79132 Earth years
|
|
13
|
+
|
|
14
|
+
So if you were told someone were 1,000,000,000 seconds old, you should
|
|
15
|
+
be able to say that they're 31 Earth-years old.
|
|
16
|
+
|
|
17
|
+
If you're wondering why Pluto didn't make the cut, go watch [this
|
|
18
|
+
youtube video](http://www.youtube.com/watch?v=Z_2gbGXzFbs).
|
|
19
|
+
|
|
20
|
+
## Running tests
|
|
21
|
+
|
|
22
|
+
Execute the tests with:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
$ elixir bob_test.exs
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
29
|
+
|
|
30
|
+
### Pending tests
|
|
31
|
+
|
|
32
|
+
In the test suites, all but the first test have been skipped.
|
|
33
|
+
|
|
34
|
+
Once you get a test passing, you can unskip the next one by
|
|
35
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
36
|
+
|
|
37
|
+
For example:
|
|
38
|
+
|
|
39
|
+
```elixir
|
|
40
|
+
# @tag :pending
|
|
41
|
+
test "shouting" do
|
|
42
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
43
|
+
end
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or, you can enable all the tests by commenting out the
|
|
47
|
+
`ExUnit.configure` line in the test suite.
|
|
48
|
+
|
|
49
|
+
```elixir
|
|
50
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For more detailed information about the Elixir track, please
|
|
54
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
55
|
+
|
|
56
|
+
## Source
|
|
57
|
+
|
|
58
|
+
Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=01](http://pine.fm/LearnToProgram/?Chapter=01)
|
|
59
|
+
|
|
60
|
+
## Submitting Incomplete Solutions
|
|
61
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Strain
|
|
2
|
+
|
|
3
|
+
Implement the `keep` and `discard` operation on collections. Given a collection
|
|
4
|
+
and a predicate on the collection's elements, `keep` returns a new collection
|
|
5
|
+
containing those elements where the predicate is true, while `discard` returns
|
|
6
|
+
a new collection containing those elements where the predicate is false.
|
|
7
|
+
|
|
8
|
+
For example, given the collection of numbers:
|
|
9
|
+
|
|
10
|
+
- 1, 2, 3, 4, 5
|
|
11
|
+
|
|
12
|
+
And the predicate:
|
|
13
|
+
|
|
14
|
+
- is the number even?
|
|
15
|
+
|
|
16
|
+
Then your keep operation should produce:
|
|
17
|
+
|
|
18
|
+
- 2, 4
|
|
19
|
+
|
|
20
|
+
While your discard operation should produce:
|
|
21
|
+
|
|
22
|
+
- 1, 3, 5
|
|
23
|
+
|
|
24
|
+
Note that the union of keep and discard is all the elements.
|
|
25
|
+
|
|
26
|
+
The functions may be called `keep` and `discard`, or they may need different
|
|
27
|
+
names in order to not clash with existing functions or concepts in your
|
|
28
|
+
language.
|
|
29
|
+
|
|
30
|
+
## Restrictions
|
|
31
|
+
|
|
32
|
+
Keep your hands off that filter/reject/whatchamacallit functionality
|
|
33
|
+
provided by your standard library! Solve this one yourself using other
|
|
34
|
+
basic tools instead.
|
|
35
|
+
|
|
36
|
+
`apply` will let you pass arguments to a function, as will `fun.(args)`
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Running tests
|
|
40
|
+
|
|
41
|
+
Execute the tests with:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
$ elixir bob_test.exs
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
48
|
+
|
|
49
|
+
### Pending tests
|
|
50
|
+
|
|
51
|
+
In the test suites, all but the first test have been skipped.
|
|
52
|
+
|
|
53
|
+
Once you get a test passing, you can unskip the next one by
|
|
54
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
55
|
+
|
|
56
|
+
For example:
|
|
57
|
+
|
|
58
|
+
```elixir
|
|
59
|
+
# @tag :pending
|
|
60
|
+
test "shouting" do
|
|
61
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
62
|
+
end
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or, you can enable all the tests by commenting out the
|
|
66
|
+
`ExUnit.configure` line in the test suite.
|
|
67
|
+
|
|
68
|
+
```elixir
|
|
69
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
For more detailed information about the Elixir track, please
|
|
73
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
74
|
+
|
|
75
|
+
## Source
|
|
76
|
+
|
|
77
|
+
Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)
|
|
78
|
+
|
|
79
|
+
## Submitting Incomplete Solutions
|
|
80
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Sublist
|
|
2
|
+
|
|
3
|
+
Given two lists determine if the first list is contained within the second
|
|
4
|
+
list, if the second list is contained within the first list, if both lists are
|
|
5
|
+
contained within each other or if none of these are true.
|
|
6
|
+
|
|
7
|
+
Specifically, a list A is a sublist of list B if by dropping 0 or more elements
|
|
8
|
+
from the front of B and 0 or more elements from the back of B you get a list
|
|
9
|
+
that's completely equal to A.
|
|
10
|
+
|
|
11
|
+
Examples:
|
|
12
|
+
|
|
13
|
+
* A = [1, 2, 3], B = [1, 2, 3, 4, 5], A is a sublist of B
|
|
14
|
+
* A = [3, 4, 5], B = [1, 2, 3, 4, 5], A is a sublist of B
|
|
15
|
+
* A = [3, 4], B = [1, 2, 3, 4, 5], A is a sublist of B
|
|
16
|
+
* A = [1, 2, 3], B = [1, 2, 3], A is equal to B
|
|
17
|
+
* A = [1, 2, 3, 4, 5], B = [2, 3, 4], A is a superlist of B
|
|
18
|
+
* A = [1, 2, 4], B = [1, 2, 3, 4, 5], A is not a superlist of, sublist of or equal to B
|
|
19
|
+
|
|
20
|
+
## Running tests
|
|
21
|
+
|
|
22
|
+
Execute the tests with:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
$ elixir bob_test.exs
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
29
|
+
|
|
30
|
+
### Pending tests
|
|
31
|
+
|
|
32
|
+
In the test suites, all but the first test have been skipped.
|
|
33
|
+
|
|
34
|
+
Once you get a test passing, you can unskip the next one by
|
|
35
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
36
|
+
|
|
37
|
+
For example:
|
|
38
|
+
|
|
39
|
+
```elixir
|
|
40
|
+
# @tag :pending
|
|
41
|
+
test "shouting" do
|
|
42
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
43
|
+
end
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or, you can enable all the tests by commenting out the
|
|
47
|
+
`ExUnit.configure` line in the test suite.
|
|
48
|
+
|
|
49
|
+
```elixir
|
|
50
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For more detailed information about the Elixir track, please
|
|
54
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Submitting Incomplete Solutions
|
|
58
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Sum Of Multiples
|
|
2
|
+
|
|
3
|
+
Given a number, find the sum of all the multiples of particular numbers up to
|
|
4
|
+
but not including that number.
|
|
5
|
+
|
|
6
|
+
If we list all the natural numbers up to but not including 20 that are
|
|
7
|
+
multiples of either 3 or 5, we get 3, 5, 6 and 9, 10, 12, 15, and 18.
|
|
8
|
+
|
|
9
|
+
The sum of these multiples is 78.
|
|
10
|
+
|
|
11
|
+
Given a number, find the sum of the multiples of a given set of numbers,
|
|
12
|
+
up to but not including that number.
|
|
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
|
+
A variation on Problem 1 at Project Euler [http://projecteuler.net/problem=1](http://projecteuler.net/problem=1)
|
|
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,110 @@
|
|
|
1
|
+
# Tournament
|
|
2
|
+
|
|
3
|
+
Tally the results of a small football competition.
|
|
4
|
+
|
|
5
|
+
Based on an input file containing which team played against which and what the
|
|
6
|
+
outcome was, create a file with a table like this:
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
Team | MP | W | D | L | P
|
|
10
|
+
Devastating Donkeys | 3 | 2 | 1 | 0 | 7
|
|
11
|
+
Allegoric Alaskans | 3 | 2 | 0 | 1 | 6
|
|
12
|
+
Blithering Badgers | 3 | 1 | 0 | 2 | 3
|
|
13
|
+
Courageous Californians | 3 | 0 | 1 | 2 | 1
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
What do those abbreviations mean?
|
|
17
|
+
|
|
18
|
+
- MP: Matches Played
|
|
19
|
+
- W: Matches Won
|
|
20
|
+
- D: Matches Drawn (Tied)
|
|
21
|
+
- L: Matches Lost
|
|
22
|
+
- P: Points
|
|
23
|
+
|
|
24
|
+
A win earns a team 3 points. A draw earns 1. A loss earns 0.
|
|
25
|
+
|
|
26
|
+
The outcome should be ordered by points, descending. In case of a tie, teams are ordered alphabetically.
|
|
27
|
+
|
|
28
|
+
###
|
|
29
|
+
|
|
30
|
+
Input
|
|
31
|
+
|
|
32
|
+
Your tallying program will receive input that looks like:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Allegoric Alaskans;Blithering Badgers;win
|
|
36
|
+
Devastating Donkeys;Courageous Californians;draw
|
|
37
|
+
Devastating Donkeys;Allegoric Alaskans;win
|
|
38
|
+
Courageous Californians;Blithering Badgers;loss
|
|
39
|
+
Blithering Badgers;Devastating Donkeys;loss
|
|
40
|
+
Allegoric Alaskans;Courageous Californians;win
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The result of the match refers to the first team listed. So this line
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Allegoric Alaskans;Blithering Badgers;win
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Means that the Allegoric Alaskans beat the Blithering Badgers.
|
|
50
|
+
|
|
51
|
+
This line:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Courageous Californians;Blithering Badgers;loss
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Means that the Blithering Badgers beat the Courageous Californians.
|
|
58
|
+
|
|
59
|
+
And this line:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Devastating Donkeys;Courageous Californians;draw
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Means that the Devastating Donkeys and Courageous Californians tied.
|
|
66
|
+
|
|
67
|
+
Formatting the output is easy with `String`'s padding functions. All number
|
|
68
|
+
columns can be left-padded with spaces to a width of 2 characters, while the
|
|
69
|
+
team name column can be right-padded with spaces to a width of 30.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Running tests
|
|
73
|
+
|
|
74
|
+
Execute the tests with:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
$ elixir bob_test.exs
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
81
|
+
|
|
82
|
+
### Pending tests
|
|
83
|
+
|
|
84
|
+
In the test suites, all but the first test have been skipped.
|
|
85
|
+
|
|
86
|
+
Once you get a test passing, you can unskip the next one by
|
|
87
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
88
|
+
|
|
89
|
+
For example:
|
|
90
|
+
|
|
91
|
+
```elixir
|
|
92
|
+
# @tag :pending
|
|
93
|
+
test "shouting" do
|
|
94
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
95
|
+
end
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or, you can enable all the tests by commenting out the
|
|
99
|
+
`ExUnit.configure` line in the test suite.
|
|
100
|
+
|
|
101
|
+
```elixir
|
|
102
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
For more detailed information about the Elixir track, please
|
|
106
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
## Submitting Incomplete Solutions
|
|
110
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Triangle
|
|
2
|
+
|
|
3
|
+
Determine if a triangle is equilateral, isosceles, or scalene.
|
|
4
|
+
|
|
5
|
+
An _equilateral_ triangle has all three sides the same length.<br/>
|
|
6
|
+
An _isosceles_ triangle has at least two sides the same length. (It is sometimes
|
|
7
|
+
specified as having exactly two sides the same length, but for the purposes of
|
|
8
|
+
this exercise we'll say at least two.)<br/>
|
|
9
|
+
A _scalene_ triangle has all sides of different lengths.
|
|
10
|
+
|
|
11
|
+
## Note
|
|
12
|
+
|
|
13
|
+
For a shape to be a triangle at all, all sides have to be of length > 0, and
|
|
14
|
+
the sum of the lengths of any two sides must be greater than or equal to the
|
|
15
|
+
length of the third side. See [Triangle Inequality](https://en.wikipedia.org/wiki/Triangle_inequality).
|
|
16
|
+
|
|
17
|
+
## Dig Deeper
|
|
18
|
+
|
|
19
|
+
The case where the sum of the lengths of two sides _equals_ that of the
|
|
20
|
+
third is known as a _degenerate_ triangle - it has zero area and looks like
|
|
21
|
+
a single line. Feel free to add your own code/tests to check for degenerate triangles.
|
|
22
|
+
## Running tests
|
|
23
|
+
|
|
24
|
+
Execute the tests with:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
$ elixir bob_test.exs
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
(Replace `bob_test.exs` with the name of the test file.)
|
|
31
|
+
|
|
32
|
+
### Pending tests
|
|
33
|
+
|
|
34
|
+
In the test suites, all but the first test have been skipped.
|
|
35
|
+
|
|
36
|
+
Once you get a test passing, you can unskip the next one by
|
|
37
|
+
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
38
|
+
|
|
39
|
+
For example:
|
|
40
|
+
|
|
41
|
+
```elixir
|
|
42
|
+
# @tag :pending
|
|
43
|
+
test "shouting" do
|
|
44
|
+
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
45
|
+
end
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Or, you can enable all the tests by commenting out the
|
|
49
|
+
`ExUnit.configure` line in the test suite.
|
|
50
|
+
|
|
51
|
+
```elixir
|
|
52
|
+
# ExUnit.configure exclude: :pending, trace: true
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For more detailed information about the Elixir track, please
|
|
56
|
+
see the [help page](http://exercism.io/languages/elixir).
|
|
57
|
+
|
|
58
|
+
## Source
|
|
59
|
+
|
|
60
|
+
The Ruby Koans triangle project, parts 1 & 2 [http://rubykoans.com](http://rubykoans.com)
|
|
61
|
+
|
|
62
|
+
## Submitting Incomplete Solutions
|
|
63
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|