trackler 2.2.1.4 → 2.2.1.5
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/lib/trackler/version.rb +1 -1
- data/tracks/bash/config.json +10 -0
- data/tracks/bash/exercises/error-handling/error_handling_test.sh +31 -0
- data/tracks/bash/exercises/error-handling/example.sh +9 -0
- data/tracks/ceylon/config/maintainers.json +25 -0
- data/tracks/chapel/README.md +1 -1
- data/tracks/chapel/config/exercise_readme.go.tmpl +16 -0
- data/tracks/chapel/config/maintainers.json +5 -0
- data/tracks/chapel/config.json +0 -5
- data/tracks/coffeescript/config/exercise_readme.go.tmpl +16 -0
- data/tracks/coffeescript/config.json +84 -26
- data/tracks/coffeescript/exercises/accumulate/README.md +43 -0
- data/tracks/coffeescript/exercises/anagram/README.md +21 -0
- data/tracks/coffeescript/exercises/atbash-cipher/README.md +42 -0
- data/tracks/coffeescript/exercises/beer-song/README.md +335 -0
- data/tracks/coffeescript/exercises/binary/README.md +43 -0
- data/tracks/coffeescript/exercises/binary-search-tree/README.md +68 -0
- data/tracks/coffeescript/exercises/bob/README.md +26 -0
- data/tracks/coffeescript/exercises/clock/README.md +21 -0
- data/tracks/coffeescript/exercises/hello-world/README.md +29 -0
- data/tracks/coffeescript/exercises/hexadecimal/README.md +22 -0
- data/tracks/coffeescript/exercises/linked-list/README.md +42 -0
- data/tracks/coffeescript/exercises/luhn/README.md +79 -0
- data/tracks/coffeescript/exercises/nth-prime/README.md +23 -0
- data/tracks/coffeescript/exercises/nucleotide-count/README.md +41 -0
- data/tracks/coffeescript/exercises/palindrome-products/README.md +48 -0
- data/tracks/coffeescript/exercises/pascals-triangle/README.md +29 -0
- data/tracks/coffeescript/exercises/queen-attack/README.md +41 -0
- data/tracks/coffeescript/exercises/triangle/README.md +34 -0
- data/tracks/coffeescript/exercises/trinary/README.md +36 -0
- data/tracks/coffeescript/exercises/word-count/README.md +27 -0
- data/tracks/coffeescript/exercises/wordy/README.md +71 -0
- data/tracks/coldfusion/config/exercise_readme.go.tmpl +16 -0
- data/tracks/coldfusion/config.json +4 -6
- data/tracks/coldfusion/exercises/leap/README.md +33 -0
- data/tracks/coq/README.md +19 -32
- data/tracks/coq/config/exercise_readme.go.tmpl +16 -0
- data/tracks/coq/config.json +9 -5
- data/tracks/coq/exercises/hello-world/README.md +45 -0
- data/tracks/coq/exercises/rna-transcription/README.md +49 -0
- data/tracks/coq/exercises/tautology/README.md +33 -0
- data/tracks/cpp/config/exercise_readme.go.tmpl +16 -0
- data/tracks/cpp/config.json +144 -41
- data/tracks/cpp/exercises/allergies/README.md +69 -0
- data/tracks/cpp/exercises/anagram/README.md +45 -0
- data/tracks/cpp/exercises/atbash-cipher/README.md +66 -0
- data/tracks/cpp/exercises/beer-song/README.md +359 -0
- data/tracks/cpp/exercises/binary/README.md +67 -0
- data/tracks/cpp/exercises/bob/README.md +50 -0
- data/tracks/cpp/exercises/clock/README.md +45 -0
- data/tracks/cpp/exercises/crypto-square/README.md +106 -0
- data/tracks/cpp/exercises/difference-of-squares/README.md +51 -0
- data/tracks/cpp/exercises/etl/README.md +83 -0
- data/tracks/cpp/exercises/food-chain/README.md +102 -0
- data/tracks/cpp/exercises/gigasecond/README.md +43 -0
- data/tracks/cpp/exercises/grade-school/README.md +74 -0
- data/tracks/cpp/exercises/grains/README.md +66 -0
- data/tracks/cpp/exercises/hamming/README.md +74 -0
- data/tracks/cpp/exercises/hello-world/README.md +53 -0
- data/tracks/cpp/exercises/hexadecimal/README.md +46 -0
- data/tracks/cpp/exercises/leap/README.md +65 -0
- data/tracks/cpp/exercises/meetup/README.md +62 -0
- data/tracks/cpp/exercises/nth-prime/README.md +47 -0
- data/tracks/cpp/exercises/nucleotide-count/README.md +65 -0
- data/tracks/cpp/exercises/phone-number/README.md +66 -0
- data/tracks/cpp/exercises/prime-factors/README.md +68 -0
- data/tracks/cpp/exercises/queen-attack/README.md +65 -0
- data/tracks/cpp/exercises/raindrops/README.md +56 -0
- data/tracks/cpp/exercises/rna-transcription/README.md +57 -0
- data/tracks/cpp/exercises/robot-name/README.md +54 -0
- data/tracks/cpp/exercises/roman-numerals/README.md +81 -0
- data/tracks/cpp/exercises/say/README.md +101 -0
- data/tracks/cpp/exercises/scrabble-score/README.md +76 -0
- data/tracks/cpp/exercises/series/README.md +59 -0
- data/tracks/cpp/exercises/sieve/README.md +66 -0
- data/tracks/cpp/exercises/space-age/README.md +56 -0
- data/tracks/cpp/exercises/sum-of-multiples/README.md +50 -0
- data/tracks/cpp/exercises/triangle/README.md +58 -0
- data/tracks/cpp/exercises/trinary/README.md +60 -0
- data/tracks/cpp/exercises/word-count/README.md +51 -0
- data/tracks/crystal/config.json +69 -3
- data/tracks/d/config/exercise_readme.go.tmpl +16 -0
- data/tracks/d/config.json +54 -3
- data/tracks/d/exercises/bob/README.md +49 -0
- data/tracks/d/exercises/circular-buffer/README.md +81 -0
- data/tracks/d/exercises/crypto-square/README.md +105 -0
- data/tracks/d/exercises/difference-of-squares/README.md +50 -0
- data/tracks/d/exercises/etl/README.md +82 -0
- data/tracks/d/exercises/gigasecond/README.md +42 -0
- data/tracks/d/exercises/hamming/README.md +73 -0
- data/tracks/d/exercises/hello-world/README.md +52 -0
- data/tracks/d/exercises/leap/README.md +64 -0
- data/tracks/d/exercises/nucleotide-count/README.md +64 -0
- data/tracks/d/exercises/pangram/README.md +46 -0
- data/tracks/d/exercises/raindrops/README.md +55 -0
- data/tracks/d/exercises/react/README.md +50 -0
- data/tracks/d/exercises/rna-transcription/README.md +56 -0
- data/tracks/d/exercises/robot-name/README.md +53 -0
- data/tracks/d/exercises/roman-numerals/README.md +80 -0
- data/tracks/d/exercises/series/README.md +58 -0
- data/tracks/d/exercises/triangle/README.md +57 -0
- data/tracks/delphi/config/maintainers.json +25 -0
- data/tracks/ecmascript/config/maintainers.json +35 -0
- data/tracks/elisp/config/exercise_readme.go.tmpl +16 -0
- data/tracks/elisp/config.json +79 -22
- data/tracks/elisp/exercises/allergies/README.md +37 -0
- data/tracks/elisp/exercises/anagram/README.md +13 -0
- data/tracks/elisp/exercises/atbash-cipher/README.md +34 -0
- data/tracks/elisp/exercises/binary/README.md +35 -0
- data/tracks/elisp/exercises/bob/README.md +18 -0
- data/tracks/elisp/exercises/difference-of-squares/README.md +19 -0
- data/tracks/elisp/exercises/etl/README.md +51 -0
- data/tracks/elisp/exercises/gigasecond/README.md +11 -0
- data/tracks/elisp/exercises/grains/README.md +34 -0
- data/tracks/elisp/exercises/hamming/README.md +42 -0
- data/tracks/elisp/exercises/hello-world/README.md +21 -0
- data/tracks/elisp/exercises/leap/README.md +33 -0
- data/tracks/elisp/exercises/nucleotide-count/README.md +33 -0
- data/tracks/elisp/exercises/perfect-numbers/README.md +24 -0
- data/tracks/elisp/exercises/phone-number/README.md +34 -0
- data/tracks/elisp/exercises/raindrops/README.md +24 -0
- data/tracks/elisp/exercises/rna-transcription/README.md +25 -0
- data/tracks/elisp/exercises/robot-name/README.md +22 -0
- data/tracks/elisp/exercises/roman-numerals/README.md +49 -0
- data/tracks/elisp/exercises/word-count/README.md +19 -0
- data/tracks/elixir/config/maintainers.json +35 -0
- data/tracks/elm/config/exercise_readme.go.tmpl +16 -0
- data/tracks/elm/config.json +96 -5
- data/tracks/elm/exercises/accumulate/README.md +65 -0
- data/tracks/elm/exercises/allergies/README.md +67 -0
- data/tracks/elm/exercises/anagram/README.md +43 -0
- data/tracks/elm/exercises/atbash-cipher/README.md +64 -0
- data/tracks/elm/exercises/bob/README.md +48 -0
- data/tracks/elm/exercises/difference-of-squares/README.md +49 -0
- data/tracks/elm/exercises/etl/README.md +81 -0
- data/tracks/elm/exercises/gigasecond/README.md +41 -0
- data/tracks/elm/exercises/grade-school/README.md +72 -0
- data/tracks/elm/exercises/grains/README.md +64 -0
- data/tracks/elm/exercises/hamming/README.md +72 -0
- data/tracks/elm/exercises/hello-world/README.md +51 -0
- data/tracks/elm/exercises/largest-series-product/README.md +50 -0
- data/tracks/elm/exercises/leap/README.md +63 -0
- data/tracks/elm/exercises/list-ops/README.md +40 -0
- data/tracks/elm/exercises/nucleotide-count/README.md +63 -0
- data/tracks/elm/exercises/pangram/README.md +45 -0
- data/tracks/elm/exercises/phone-number/README.md +64 -0
- data/tracks/elm/exercises/raindrops/README.md +54 -0
- data/tracks/elm/exercises/rna-transcription/README.md +55 -0
- data/tracks/elm/exercises/robot-simulator/README.md +64 -0
- data/tracks/elm/exercises/roman-numerals/README.md +79 -0
- data/tracks/elm/exercises/run-length-encoding/README.md +60 -0
- data/tracks/elm/exercises/say/README.md +99 -0
- data/tracks/elm/exercises/scrabble-score/README.md +74 -0
- data/tracks/elm/exercises/series/README.md +57 -0
- data/tracks/elm/exercises/space-age/README.md +54 -0
- data/tracks/elm/exercises/strain/README.md +70 -0
- data/tracks/elm/exercises/sublist/README.md +51 -0
- data/tracks/elm/exercises/sum-of-multiples/README.md +48 -0
- data/tracks/elm/exercises/triangle/README.md +56 -0
- data/tracks/elm/exercises/word-count/README.md +49 -0
- data/tracks/fortran/config/exercise_readme.go.tmpl +16 -0
- data/tracks/fortran/config.json +21 -5
- data/tracks/fortran/exercises/bob/README.md +18 -0
- data/tracks/fortran/exercises/difference-of-squares/README.md +19 -0
- data/tracks/fortran/exercises/hamming/README.md +42 -0
- data/tracks/fortran/exercises/hello-world/README.md +21 -0
- data/tracks/fortran/exercises/pangram/README.md +15 -0
- data/tracks/fortran/exercises/raindrops/README.md +24 -0
- data/tracks/fortran/exercises/rna-transcription/README.md +25 -0
- data/tracks/go/config/maintainers.json +85 -0
- data/tracks/go/config.json +2 -2
- data/tracks/groovy/config/exercise_readme.go.tmpl +16 -0
- data/tracks/groovy/exercises/difference-of-squares/README.md +33 -0
- data/tracks/groovy/exercises/gigasecond/README.md +25 -0
- data/tracks/groovy/exercises/grains/README.md +48 -0
- data/tracks/groovy/exercises/hamming/README.md +56 -0
- data/tracks/groovy/exercises/hello-world/README.md +35 -0
- data/tracks/groovy/exercises/leap/README.md +47 -0
- data/tracks/groovy/exercises/nth-prime/README.md +29 -0
- data/tracks/groovy/exercises/phone-number/README.md +48 -0
- data/tracks/groovy/exercises/raindrops/README.md +38 -0
- data/tracks/groovy/exercises/rna-transcription/README.md +39 -0
- data/tracks/groovy/exercises/robot-name/README.md +36 -0
- data/tracks/groovy/exercises/roman-numerals/README.md +63 -0
- data/tracks/groovy/exercises/word-count/README.md +33 -0
- data/tracks/haxe/config/exercise_readme.go.tmpl +16 -0
- data/tracks/haxe/config.json +0 -2
- data/tracks/haxe/exercises/bob/README.md +18 -0
- data/tracks/haxe/exercises/hello-world/README.md +21 -0
- data/tracks/idris/config/exercise_readme.go.tmpl +16 -0
- data/tracks/idris/config.json +9 -3
- data/tracks/idris/exercises/hamming/README.md +42 -0
- data/tracks/idris/exercises/hello-world/README.md +21 -0
- data/tracks/idris/exercises/leap/README.md +33 -0
- data/tracks/java/config/maintainers.json +45 -0
- data/tracks/java/exercises/hello-world/TUTORIAL.md +1 -1
- data/tracks/javascript/config/maintainers.json +85 -0
- data/tracks/julia/config/exercise_readme.go.tmpl +16 -0
- data/tracks/julia/config.json +81 -5
- data/tracks/julia/exercises/anagram/README.md +13 -0
- data/tracks/julia/exercises/atbash-cipher/README.md +34 -0
- data/tracks/julia/exercises/bob/README.md +18 -0
- data/tracks/julia/exercises/complex-numbers/README.md +24 -0
- data/tracks/julia/exercises/custom-set/README.md +16 -0
- data/tracks/julia/exercises/difference-of-squares/README.md +19 -0
- data/tracks/julia/exercises/etl/README.md +51 -0
- data/tracks/julia/exercises/gigasecond/README.md +11 -0
- data/tracks/julia/exercises/hamming/README.md +42 -0
- data/tracks/julia/exercises/hello-world/README.md +21 -0
- data/tracks/julia/exercises/isogram/README.md +19 -0
- data/tracks/julia/exercises/leap/README.md +33 -0
- data/tracks/julia/exercises/luhn/README.md +71 -0
- data/tracks/julia/exercises/nucleotide-count/README.md +33 -0
- data/tracks/julia/exercises/pangram/README.md +15 -0
- data/tracks/julia/exercises/pascals-triangle/README.md +21 -0
- data/tracks/julia/exercises/raindrops/README.md +24 -0
- data/tracks/julia/exercises/rna-transcription/README.md +25 -0
- data/tracks/julia/exercises/robot-name/README.md +41 -0
- data/tracks/julia/exercises/roman-numerals/README.md +49 -0
- data/tracks/julia/exercises/rotational-cipher/README.md +59 -0
- data/tracks/julia/exercises/scrabble-score/README.md +44 -0
- data/tracks/julia/exercises/secret-handshake/README.md +35 -0
- data/tracks/julia/exercises/sieve/README.md +34 -0
- data/tracks/julia/exercises/transpose/README.md +65 -0
- data/tracks/julia/exercises/trinary/README.md +28 -0
- data/tracks/julia/exercises/word-count/README.md +19 -0
- data/tracks/lfe/config/exercise_readme.go.tmpl +16 -0
- data/tracks/lfe/config.json +125 -33
- data/tracks/lfe/exercises/accumulate/README.md +51 -0
- data/tracks/lfe/exercises/allergies/README.md +53 -0
- data/tracks/lfe/exercises/anagram/README.md +29 -0
- data/tracks/lfe/exercises/atbash-cipher/README.md +50 -0
- data/tracks/lfe/exercises/bank-account/README.md +46 -0
- data/tracks/lfe/exercises/beer-song/README.md +343 -0
- data/tracks/lfe/exercises/binary/README.md +51 -0
- data/tracks/lfe/exercises/bob/README.md +34 -0
- data/tracks/lfe/exercises/circular-buffer/README.md +66 -0
- data/tracks/lfe/exercises/clock/README.md +29 -0
- data/tracks/lfe/exercises/difference-of-squares/README.md +35 -0
- data/tracks/lfe/exercises/etl/README.md +67 -0
- data/tracks/lfe/exercises/gigasecond/README.md +27 -0
- data/tracks/lfe/exercises/grade-school/README.md +58 -0
- data/tracks/lfe/exercises/grains/README.md +50 -0
- data/tracks/lfe/exercises/hamming/README.md +58 -0
- data/tracks/lfe/exercises/largest-series-product/README.md +36 -0
- data/tracks/lfe/exercises/leap/README.md +49 -0
- data/tracks/lfe/exercises/luhn/README.md +87 -0
- data/tracks/lfe/exercises/meetup/README.md +46 -0
- data/tracks/lfe/exercises/nucleotide-count/README.md +49 -0
- data/tracks/lfe/exercises/parallel-letter-frequency/README.md +27 -0
- data/tracks/lfe/exercises/phone-number/README.md +50 -0
- data/tracks/lfe/exercises/rna-transcription/README.md +41 -0
- data/tracks/lfe/exercises/robot-simulator/README.md +50 -0
- data/tracks/lfe/exercises/series/README.md +43 -0
- data/tracks/lfe/exercises/space-age/README.md +40 -0
- data/tracks/lfe/exercises/strain/README.md +56 -0
- data/tracks/lfe/exercises/sum-of-multiples/README.md +34 -0
- data/tracks/lfe/exercises/trinary/README.md +44 -0
- data/tracks/lfe/exercises/word-count/README.md +35 -0
- data/tracks/lua/config/maintainers.json +35 -0
- data/tracks/lua/config.json +225 -3
- data/tracks/nasm/config/exercise_readme.go.tmpl +16 -0
- data/tracks/nasm/config.json +0 -5
- data/tracks/nim/config/exercise_readme.go.tmpl +16 -0
- data/tracks/nim/config.json +56 -19
- data/tracks/nim/exercises/anagram/README.md +13 -0
- data/tracks/nim/exercises/binary/README.md +35 -0
- data/tracks/nim/exercises/bob/README.md +18 -0
- data/tracks/nim/exercises/difference-of-squares/README.md +19 -0
- data/tracks/nim/exercises/hamming/README.md +42 -0
- data/tracks/nim/exercises/hello-world/README.md +21 -0
- data/tracks/nim/exercises/leap/README.md +33 -0
- data/tracks/nim/exercises/nucleotide-count/README.md +33 -0
- data/tracks/nim/exercises/queen-attack/README.md +33 -0
- data/tracks/nim/exercises/raindrops/README.md +24 -0
- data/tracks/nim/exercises/react/README.md +19 -0
- data/tracks/nim/exercises/rna-transcription/README.md +25 -0
- data/tracks/nim/exercises/triangle/README.md +26 -0
- data/tracks/nim/exercises/word-count/README.md +19 -0
- data/tracks/objective-c/config/exercise_readme.go.tmpl +16 -0
- data/tracks/objective-c/config/maintainers.json +35 -0
- data/tracks/objective-c/config.json +168 -47
- data/tracks/objective-c/exercises/acronym/README.md +32 -0
- data/tracks/objective-c/exercises/all-your-base/README.md +52 -0
- data/tracks/objective-c/exercises/allergies/README.md +54 -0
- data/tracks/objective-c/exercises/anagram/README.md +30 -0
- data/tracks/objective-c/exercises/atbash-cipher/README.md +51 -0
- data/tracks/objective-c/exercises/beer-song/README.md +344 -0
- data/tracks/objective-c/exercises/binary-search/README.md +58 -0
- data/tracks/objective-c/exercises/bob/README.md +35 -0
- data/tracks/objective-c/exercises/bracket-push/README.md +27 -0
- data/tracks/objective-c/exercises/clock/README.md +30 -0
- data/tracks/objective-c/exercises/crypto-square/README.md +91 -0
- data/tracks/objective-c/exercises/difference-of-squares/README.md +36 -0
- data/tracks/objective-c/exercises/etl/README.md +68 -0
- data/tracks/objective-c/exercises/flatten-array/README.md +35 -0
- data/tracks/objective-c/exercises/gigasecond/README.md +28 -0
- data/tracks/objective-c/exercises/grade-school/README.md +59 -0
- data/tracks/objective-c/exercises/hamming/README.md +59 -0
- data/tracks/objective-c/exercises/hello-world/README.md +38 -0
- data/tracks/objective-c/exercises/isogram/README.md +36 -0
- data/tracks/objective-c/exercises/largest-series-product/README.md +37 -0
- data/tracks/objective-c/exercises/leap/README.md +50 -0
- data/tracks/objective-c/exercises/luhn/README.md +88 -0
- data/tracks/objective-c/exercises/meetup/README.md +47 -0
- data/tracks/objective-c/exercises/nucleotide-count/README.md +50 -0
- data/tracks/objective-c/exercises/pangram/README.md +32 -0
- data/tracks/objective-c/exercises/pascals-triangle/README.md +38 -0
- data/tracks/objective-c/exercises/perfect-numbers/README.md +41 -0
- data/tracks/objective-c/exercises/phone-number/README.md +51 -0
- data/tracks/objective-c/exercises/raindrops/README.md +41 -0
- data/tracks/objective-c/exercises/rna-transcription/README.md +42 -0
- data/tracks/objective-c/exercises/robot-name/README.md +39 -0
- data/tracks/objective-c/exercises/roman-numerals/README.md +66 -0
- data/tracks/objective-c/exercises/run-length-encoding/README.md +47 -0
- data/tracks/objective-c/exercises/scrabble-score/README.md +61 -0
- data/tracks/objective-c/exercises/secret-handshake/README.md +52 -0
- data/tracks/objective-c/exercises/sieve/README.md +51 -0
- data/tracks/objective-c/exercises/space-age/README.md +41 -0
- data/tracks/objective-c/exercises/sublist/README.md +38 -0
- data/tracks/objective-c/exercises/sum-of-multiples/README.md +35 -0
- data/tracks/objective-c/exercises/transpose/README.md +82 -0
- data/tracks/objective-c/exercises/triangle/README.md +43 -0
- data/tracks/objective-c/exercises/word-count/README.md +36 -0
- data/tracks/plsql/config/exercise_readme.go.tmpl +16 -0
- data/tracks/plsql/config.json +0 -2
- data/tracks/plsql/exercises/binary/README.md +55 -0
- data/tracks/plsql/exercises/difference-of-squares/README.md +39 -0
- data/tracks/plsql/exercises/gigasecond/README.md +31 -0
- data/tracks/plsql/exercises/grains/README.md +54 -0
- data/tracks/plsql/exercises/hamming/README.md +62 -0
- data/tracks/plsql/exercises/leap/README.md +53 -0
- data/tracks/plsql/exercises/nth-prime/README.md +35 -0
- data/tracks/plsql/exercises/raindrops/README.md +44 -0
- data/tracks/plsql/exercises/rna-transcription/README.md +45 -0
- data/tracks/plsql/exercises/roman-numerals/README.md +69 -0
- data/tracks/powershell/config.json +8 -5
- data/tracks/prolog/config/exercise_readme.go.tmpl +16 -0
- data/tracks/prolog/config.json +33 -5
- data/tracks/prolog/exercises/anagram/README.md +13 -0
- data/tracks/prolog/exercises/binary/README.md +35 -0
- data/tracks/prolog/exercises/grains/README.md +34 -0
- data/tracks/prolog/exercises/hamming/README.md +42 -0
- data/tracks/prolog/exercises/hello-world/README.md +21 -0
- data/tracks/prolog/exercises/leap/README.md +33 -0
- data/tracks/prolog/exercises/nucleotide-count/README.md +33 -0
- data/tracks/prolog/exercises/rna-transcription/README.md +25 -0
- data/tracks/prolog/exercises/space-age/README.md +24 -0
- data/tracks/prolog/exercises/sum-of-multiples/README.md +18 -0
- data/tracks/prolog/exercises/triangle/README.md +26 -0
- data/tracks/python/requirements-travis.txt +1 -1
- data/tracks/r/config/maintainers.json +35 -0
- data/tracks/r/config.json +1 -1
- data/tracks/racket/README.md +1 -1
- data/tracks/racket/config/exercise_readme.go.tmpl +16 -0
- data/tracks/racket/config.json +93 -25
- data/tracks/racket/exercises/accumulate/README.md +60 -0
- data/tracks/racket/exercises/acronym/README.md +40 -0
- data/tracks/racket/exercises/allergies/README.md +62 -0
- data/tracks/racket/exercises/anagram/README.md +38 -0
- data/tracks/racket/exercises/bob/README.md +43 -0
- data/tracks/racket/exercises/difference-of-squares/README.md +44 -0
- data/tracks/racket/exercises/etl/README.md +76 -0
- data/tracks/racket/exercises/gigasecond/README.md +36 -0
- data/tracks/racket/exercises/grains/README.md +59 -0
- data/tracks/racket/exercises/grep/README.md +96 -0
- data/tracks/racket/exercises/hamming/README.md +67 -0
- data/tracks/racket/exercises/hello-world/README.md +46 -0
- data/tracks/racket/exercises/leap/README.md +58 -0
- data/tracks/racket/exercises/list-ops/README.md +35 -0
- data/tracks/racket/exercises/nucleotide-count/README.md +58 -0
- data/tracks/racket/exercises/perfect-numbers/README.md +49 -0
- data/tracks/racket/exercises/phone-number/README.md +59 -0
- data/tracks/racket/exercises/raindrops/README.md +49 -0
- data/tracks/racket/exercises/rna-transcription/README.md +50 -0
- data/tracks/racket/exercises/roman-numerals/README.md +74 -0
- data/tracks/racket/exercises/say/README.md +94 -0
- data/tracks/racket/exercises/scrabble-score/README.md +69 -0
- data/tracks/racket/exercises/word-count/README.md +44 -0
- data/tracks/ruby/exercises/binary-search-tree/.meta/solutions/binary_search_tree.rb +4 -2
- data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +13 -4
- data/tracks/scala/config/maintainers.json +29 -0
- data/tracks/scala/exercises/atbash-cipher/example.scala +4 -1
- data/tracks/scala/exercises/atbash-cipher/src/test/scala/AtbashCipherTest.scala +64 -0
- data/tracks/scala/exercises/roman-numerals/example.scala +2 -2
- data/tracks/scala/exercises/roman-numerals/src/test/scala/RomanNumeralsTest.scala +40 -39
- data/tracks/scala/testgen/src/main/scala/AtbashCipherTestGenerator.scala +16 -0
- data/tracks/scala/testgen/src/main/scala/RomanNumeralsTestGenerator.scala +15 -0
- data/tracks/scheme/config/exercise_readme.go.tmpl +16 -0
- data/tracks/scheme/config.json +42 -3
- data/tracks/scheme/exercises/anagram/README.md +13 -0
- data/tracks/scheme/exercises/bob/README.md +18 -0
- data/tracks/scheme/exercises/difference-of-squares/README.md +19 -0
- data/tracks/scheme/exercises/grains/README.md +34 -0
- data/tracks/scheme/exercises/hamming/README.md +42 -0
- data/tracks/scheme/exercises/hello-world/README.md +21 -0
- data/tracks/scheme/exercises/leap/README.md +33 -0
- data/tracks/scheme/exercises/list-ops/README.md +10 -0
- data/tracks/scheme/exercises/nucleotide-count/README.md +33 -0
- data/tracks/scheme/exercises/phone-number/README.md +34 -0
- data/tracks/scheme/exercises/raindrops/README.md +24 -0
- data/tracks/scheme/exercises/rna-transcription/README.md +25 -0
- data/tracks/scheme/exercises/robot-name/README.md +22 -0
- data/tracks/scheme/exercises/scrabble-score/README.md +44 -0
- data/tracks/sml/config/maintainers.json +25 -0
- data/tracks/typescript/config/exercise_readme.go.tmpl +16 -0
- data/tracks/typescript/config/maintainers.json +25 -0
- data/tracks/typescript/config.json +0 -2
- data/tracks/typescript/exercises/anagram/README.md +39 -0
- data/tracks/typescript/exercises/beer-song/README.md +353 -0
- data/tracks/typescript/exercises/bob/README.md +44 -0
- data/tracks/typescript/exercises/difference-of-squares/README.md +45 -0
- data/tracks/typescript/exercises/etl/README.md +77 -0
- data/tracks/typescript/exercises/food-chain/README.md +96 -0
- data/tracks/typescript/exercises/gigasecond/README.md +37 -0
- data/tracks/typescript/exercises/grade-school/README.md +68 -0
- data/tracks/typescript/exercises/hamming/README.md +68 -0
- data/tracks/typescript/exercises/hello-world/README.md +47 -0
- data/tracks/typescript/exercises/leap/README.md +59 -0
- data/tracks/typescript/exercises/pangram/README.md +41 -0
- data/tracks/typescript/exercises/phone-number/README.md +60 -0
- data/tracks/typescript/exercises/raindrops/README.md +50 -0
- data/tracks/typescript/exercises/rna-transcription/README.md +51 -0
- data/tracks/typescript/exercises/robot-name/README.md +48 -0
- data/tracks/typescript/exercises/say/README.md +95 -0
- data/tracks/typescript/exercises/scrabble-score/README.md +70 -0
- data/tracks/typescript/exercises/space-age/README.md +50 -0
- data/tracks/typescript/exercises/word-count/README.md +45 -0
- data/tracks/typescript/exercises/wordy/README.md +89 -0
- data/tracks/vbnet/config/exercise_readme.go.tmpl +16 -0
- data/tracks/vbnet/config.json +28 -12
- data/tracks/vbnet/exercises/accumulate/README.md +41 -0
- data/tracks/vbnet/exercises/allergies/README.md +43 -0
- data/tracks/vbnet/exercises/anagram/README.md +19 -0
- data/tracks/vbnet/exercises/atbash-cipher/README.md +40 -0
- data/tracks/vbnet/exercises/binary/README.md +41 -0
- data/tracks/vbnet/exercises/bob/README.md +24 -0
- data/tracks/vbnet/exercises/crypto-square/README.md +80 -0
- metadata +401 -4
- data/tracks/scala/exercises/atbash-cipher/src/main/scala/Atbash.scala +0 -3
- data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +0 -48
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Roman Numerals
|
|
2
|
+
|
|
3
|
+
Write a function to convert from normal numbers to Roman Numerals.
|
|
4
|
+
|
|
5
|
+
The Romans were a clever bunch. They conquered most of Europe and ruled
|
|
6
|
+
it for hundreds of years. They invented concrete and straight roads and
|
|
7
|
+
even bikinis. One thing they never discovered though was the number
|
|
8
|
+
zero. This made writing and dating extensive histories of their exploits
|
|
9
|
+
slightly more challenging, but the system of numbers they came up with
|
|
10
|
+
is still in use today. For example the BBC uses Roman numerals to date
|
|
11
|
+
their programmes.
|
|
12
|
+
|
|
13
|
+
The Romans wrote numbers using letters - I, V, X, L, C, D, M. (notice
|
|
14
|
+
these letters have lots of straight lines and are hence easy to hack
|
|
15
|
+
into stone tablets).
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
1 => I
|
|
19
|
+
10 => X
|
|
20
|
+
7 => VII
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
There is no need to be able to convert numbers larger than about 3000.
|
|
24
|
+
(The Romans themselves didn't tend to go any higher)
|
|
25
|
+
|
|
26
|
+
Wikipedia says: Modern Roman numerals ... are written by expressing each
|
|
27
|
+
digit separately starting with the left most digit and skipping any
|
|
28
|
+
digit with a value of zero.
|
|
29
|
+
|
|
30
|
+
To see this in practice, consider the example of 1990.
|
|
31
|
+
|
|
32
|
+
In Roman numerals 1990 is MCMXC:
|
|
33
|
+
|
|
34
|
+
1000=M
|
|
35
|
+
900=CM
|
|
36
|
+
90=XC
|
|
37
|
+
|
|
38
|
+
2008 is written as MMVIII:
|
|
39
|
+
|
|
40
|
+
2000=MM
|
|
41
|
+
8=VIII
|
|
42
|
+
|
|
43
|
+
See also: http://www.novaroma.org/via_romana/numbers.html
|
|
44
|
+
|
|
45
|
+
* * * *
|
|
46
|
+
|
|
47
|
+
For installation and learning resources, refer to the
|
|
48
|
+
[exercism Racket page](http://exercism.io/languages/racket).
|
|
49
|
+
|
|
50
|
+
You can run the provided tests through DrRacket, or via the command line.
|
|
51
|
+
|
|
52
|
+
To run the test through DrRacket, simply open the test file and click the 'Run' button in the upper right.
|
|
53
|
+
|
|
54
|
+
To run the test from the command line, simply run the test from the exercise directory. For example, if the test suite is called `hello-world-test.rkt`, you can run the following command:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
raco test hello-world-test.rkt
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
which will display the following:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
raco test: (submod "hello-world-test.rkt" test)
|
|
64
|
+
2 success(es) 0 failure(s) 0 error(s) 2 test(s) run
|
|
65
|
+
0
|
|
66
|
+
2 tests passed
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Source
|
|
70
|
+
|
|
71
|
+
The Roman Numeral Kata [http://codingdojo.org/cgi-bin/index.pl?KataRomanNumerals](http://codingdojo.org/cgi-bin/index.pl?KataRomanNumerals)
|
|
72
|
+
|
|
73
|
+
## Submitting Incomplete Solutions
|
|
74
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Say
|
|
2
|
+
|
|
3
|
+
Given a number from 0 to 999,999,999,999, spell out that number in English.
|
|
4
|
+
|
|
5
|
+
## Step 1
|
|
6
|
+
|
|
7
|
+
Handle the basic case of 0 through 99.
|
|
8
|
+
|
|
9
|
+
If the input to the program is `22`, then the output should be
|
|
10
|
+
`'twenty-two'`.
|
|
11
|
+
|
|
12
|
+
Your program should complain loudly if given a number outside the
|
|
13
|
+
blessed range.
|
|
14
|
+
|
|
15
|
+
Some good test cases for this program are:
|
|
16
|
+
|
|
17
|
+
- 0
|
|
18
|
+
- 14
|
|
19
|
+
- 50
|
|
20
|
+
- 98
|
|
21
|
+
- -1
|
|
22
|
+
- 100
|
|
23
|
+
|
|
24
|
+
### Extension
|
|
25
|
+
|
|
26
|
+
If you're on a Mac, shell out to Mac OS X's `say` program to talk out
|
|
27
|
+
loud.
|
|
28
|
+
|
|
29
|
+
## Step 2
|
|
30
|
+
|
|
31
|
+
Implement breaking a number up into chunks of thousands.
|
|
32
|
+
|
|
33
|
+
So `1234567890` should yield a list like 1, 234, 567, and 890, while the
|
|
34
|
+
far simpler `1000` should yield just 1 and 0.
|
|
35
|
+
|
|
36
|
+
The program must also report any values that are out of range.
|
|
37
|
+
|
|
38
|
+
## Step 3
|
|
39
|
+
|
|
40
|
+
Now handle inserting the appropriate scale word between those chunks.
|
|
41
|
+
|
|
42
|
+
So `1234567890` should yield `'1 billion 234 million 567 thousand 890'`
|
|
43
|
+
|
|
44
|
+
The program must also report any values that are out of range. It's
|
|
45
|
+
fine to stop at "trillion".
|
|
46
|
+
|
|
47
|
+
## Step 4
|
|
48
|
+
|
|
49
|
+
Put it all together to get nothing but plain English.
|
|
50
|
+
|
|
51
|
+
`12345` should give `twelve thousand three hundred forty-five`.
|
|
52
|
+
|
|
53
|
+
The program must also report any values that are out of range.
|
|
54
|
+
|
|
55
|
+
### Extensions
|
|
56
|
+
|
|
57
|
+
Use _and_ (correctly) when spelling out the number in English:
|
|
58
|
+
|
|
59
|
+
- 14 becomes "fourteen".
|
|
60
|
+
- 100 becomes "one hundred".
|
|
61
|
+
- 120 becomes "one hundred and twenty".
|
|
62
|
+
- 1002 becomes "one thousand and two".
|
|
63
|
+
- 1323 becomes "one thousand three hundred and twenty-three".
|
|
64
|
+
|
|
65
|
+
* * * *
|
|
66
|
+
|
|
67
|
+
For installation and learning resources, refer to the
|
|
68
|
+
[exercism Racket page](http://exercism.io/languages/racket).
|
|
69
|
+
|
|
70
|
+
You can run the provided tests through DrRacket, or via the command line.
|
|
71
|
+
|
|
72
|
+
To run the test through DrRacket, simply open the test file and click the 'Run' button in the upper right.
|
|
73
|
+
|
|
74
|
+
To run the test from the command line, simply run the test from the exercise directory. For example, if the test suite is called `hello-world-test.rkt`, you can run the following command:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
raco test hello-world-test.rkt
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
which will display the following:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
raco test: (submod "hello-world-test.rkt" test)
|
|
84
|
+
2 success(es) 0 failure(s) 0 error(s) 2 test(s) run
|
|
85
|
+
0
|
|
86
|
+
2 tests passed
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Source
|
|
90
|
+
|
|
91
|
+
A variation on JavaRanch CattleDrive, exercise 4a [http://www.javaranch.com/say.jsp](http://www.javaranch.com/say.jsp)
|
|
92
|
+
|
|
93
|
+
## Submitting Incomplete Solutions
|
|
94
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Scrabble Score
|
|
2
|
+
|
|
3
|
+
Given a word, compute the scrabble score for that word.
|
|
4
|
+
|
|
5
|
+
## Letter Values
|
|
6
|
+
|
|
7
|
+
You'll need these:
|
|
8
|
+
|
|
9
|
+
```plain
|
|
10
|
+
Letter Value
|
|
11
|
+
A, E, I, O, U, L, N, R, S, T 1
|
|
12
|
+
D, G 2
|
|
13
|
+
B, C, M, P 3
|
|
14
|
+
F, H, V, W, Y 4
|
|
15
|
+
K 5
|
|
16
|
+
J, X 8
|
|
17
|
+
Q, Z 10
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Examples
|
|
21
|
+
"cabbage" should be scored as worth 14 points:
|
|
22
|
+
|
|
23
|
+
- 3 points for C
|
|
24
|
+
- 1 point for A, twice
|
|
25
|
+
- 3 points for B, twice
|
|
26
|
+
- 2 points for G
|
|
27
|
+
- 1 point for E
|
|
28
|
+
|
|
29
|
+
And to total:
|
|
30
|
+
|
|
31
|
+
- `3 + 2*1 + 2*3 + 2 + 1`
|
|
32
|
+
- = `3 + 2 + 6 + 3`
|
|
33
|
+
- = `5 + 9`
|
|
34
|
+
- = 14
|
|
35
|
+
|
|
36
|
+
## Extensions
|
|
37
|
+
- You can play a double or a triple letter.
|
|
38
|
+
- You can play a double or a triple word.
|
|
39
|
+
|
|
40
|
+
* * * *
|
|
41
|
+
|
|
42
|
+
For installation and learning resources, refer to the
|
|
43
|
+
[exercism Racket page](http://exercism.io/languages/racket).
|
|
44
|
+
|
|
45
|
+
You can run the provided tests through DrRacket, or via the command line.
|
|
46
|
+
|
|
47
|
+
To run the test through DrRacket, simply open the test file and click the 'Run' button in the upper right.
|
|
48
|
+
|
|
49
|
+
To run the test from the command line, simply run the test from the exercise directory. For example, if the test suite is called `hello-world-test.rkt`, you can run the following command:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
raco test hello-world-test.rkt
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
which will display the following:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
raco test: (submod "hello-world-test.rkt" test)
|
|
59
|
+
2 success(es) 0 failure(s) 0 error(s) 2 test(s) run
|
|
60
|
+
0
|
|
61
|
+
2 tests passed
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Source
|
|
65
|
+
|
|
66
|
+
Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
|
|
67
|
+
|
|
68
|
+
## Submitting Incomplete Solutions
|
|
69
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Word Count
|
|
2
|
+
|
|
3
|
+
Given a phrase, count the occurrences of each word in that phrase.
|
|
4
|
+
|
|
5
|
+
For example for the input `"olly olly in come free"`
|
|
6
|
+
|
|
7
|
+
```plain
|
|
8
|
+
olly: 2
|
|
9
|
+
in: 1
|
|
10
|
+
come: 1
|
|
11
|
+
free: 1
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
* * * *
|
|
16
|
+
|
|
17
|
+
For installation and learning resources, refer to the
|
|
18
|
+
[exercism Racket page](http://exercism.io/languages/racket).
|
|
19
|
+
|
|
20
|
+
You can run the provided tests through DrRacket, or via the command line.
|
|
21
|
+
|
|
22
|
+
To run the test through DrRacket, simply open the test file and click the 'Run' button in the upper right.
|
|
23
|
+
|
|
24
|
+
To run the test from the command line, simply run the test from the exercise directory. For example, if the test suite is called `hello-world-test.rkt`, you can run the following command:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
raco test hello-world-test.rkt
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
which will display the following:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
raco test: (submod "hello-world-test.rkt" test)
|
|
34
|
+
2 success(es) 0 failure(s) 0 error(s) 2 test(s) run
|
|
35
|
+
0
|
|
36
|
+
2 tests passed
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Source
|
|
40
|
+
|
|
41
|
+
This is a classic toy problem, but we were reminded of it by seeing it in the Go Tour.
|
|
42
|
+
|
|
43
|
+
## Submitting Incomplete Solutions
|
|
44
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -99,16 +99,25 @@ class BstTest < Minitest::Test
|
|
|
99
99
|
assert_raises(StopIteration) { each_enumerator.next }
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
-
# Problems in exercism evolve over time,
|
|
103
|
-
#
|
|
102
|
+
# Problems in exercism evolve over time, as we find better ways to ask
|
|
103
|
+
# questions.
|
|
104
104
|
# The version number refers to the version of the problem you solved,
|
|
105
105
|
# not your solution.
|
|
106
106
|
#
|
|
107
|
-
# Define a constant named VERSION inside of
|
|
107
|
+
# Define a constant named VERSION inside of the top level BookKeeping
|
|
108
|
+
# module, which may be placed near the end of your file.
|
|
109
|
+
#
|
|
110
|
+
# In your file, it will look like this:
|
|
111
|
+
#
|
|
112
|
+
# module BookKeeping
|
|
113
|
+
# VERSION = 1 # Where the version number matches the one in the test.
|
|
114
|
+
# end
|
|
115
|
+
#
|
|
108
116
|
# If you are curious, read more about constants on RubyDoc:
|
|
109
117
|
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
|
118
|
+
|
|
110
119
|
def test_bookkeeping
|
|
111
120
|
skip
|
|
112
|
-
assert_equal 1,
|
|
121
|
+
assert_equal 1, BookKeeping::VERSION
|
|
113
122
|
end
|
|
114
123
|
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"maintainers": [
|
|
3
|
+
{
|
|
4
|
+
"github_username": "ErikSchierboom",
|
|
5
|
+
"show_on_website": false,
|
|
6
|
+
"alumnus": false,
|
|
7
|
+
"name": null,
|
|
8
|
+
"bio": null,
|
|
9
|
+
"link_text": null,
|
|
10
|
+
"link_url": null,
|
|
11
|
+
"avatar_url": null
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"github_username": "sgrif",
|
|
15
|
+
"alumnus": true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"github_username": "ricemery",
|
|
19
|
+
"show_on_website": false,
|
|
20
|
+
"alumnus": false,
|
|
21
|
+
"name": null,
|
|
22
|
+
"bio": null,
|
|
23
|
+
"link_text": null,
|
|
24
|
+
"link_url": null,
|
|
25
|
+
"avatar_url": null
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
|
29
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
object
|
|
1
|
+
object AtbashCipher {
|
|
2
2
|
private def substitute(c: Char) =
|
|
3
3
|
if (c.isDigit) c.toString
|
|
4
4
|
else if (c.isLetter) ('a' + ('z' - c.toLower)).toChar.toString
|
|
@@ -6,4 +6,7 @@ object Atbash {
|
|
|
6
6
|
|
|
7
7
|
def encode(s: String): String =
|
|
8
8
|
s.foldLeft("")((acc, c) => acc + substitute(c)).grouped(5).mkString(" ")
|
|
9
|
+
|
|
10
|
+
def decode(s: String): String =
|
|
11
|
+
s.foldLeft("")((acc, c) => acc + substitute(c))
|
|
9
12
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
|
2
|
+
|
|
3
|
+
/** @version 1.0.0 */
|
|
4
|
+
class AtbashCipherTest extends FunSuite with Matchers {
|
|
5
|
+
|
|
6
|
+
test("encode yes") {
|
|
7
|
+
AtbashCipher.encode("yes") should be ("bvh")
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
test("encode no") {
|
|
11
|
+
pending
|
|
12
|
+
AtbashCipher.encode("no") should be ("ml")
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
test("encode OMG") {
|
|
16
|
+
pending
|
|
17
|
+
AtbashCipher.encode("OMG") should be ("lnt")
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
test("encode spaces") {
|
|
21
|
+
pending
|
|
22
|
+
AtbashCipher.encode("O M G") should be ("lnt")
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
test("encode mindblowingly") {
|
|
26
|
+
pending
|
|
27
|
+
AtbashCipher.encode("mindblowingly") should be ("nrmwy oldrm tob")
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
test("encode numbers") {
|
|
31
|
+
pending
|
|
32
|
+
AtbashCipher.encode("Testing,1 2 3, testing.") should be ("gvhgr mt123 gvhgr mt")
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
test("encode deep thought") {
|
|
36
|
+
pending
|
|
37
|
+
AtbashCipher.encode("Truth is fiction.") should be ("gifgs rhurx grlm")
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
test("encode all the letters") {
|
|
41
|
+
pending
|
|
42
|
+
AtbashCipher.encode("The quick brown fox jumps over the lazy dog.") should be ("gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
test("decode exercism") {
|
|
46
|
+
pending
|
|
47
|
+
AtbashCipher.decode("vcvix rhn") should be ("exercism")
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
test("decode a sentence") {
|
|
51
|
+
pending
|
|
52
|
+
AtbashCipher.decode("zmlyh gzxov rhlug vmzhg vkkrm thglm v") should be ("anobstacleisoftenasteppingstone")
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
test("decode numbers") {
|
|
56
|
+
pending
|
|
57
|
+
AtbashCipher.decode("gvhgr mt123 gvhgr mt") should be ("testing123testing")
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
test("decode all the letters") {
|
|
61
|
+
pending
|
|
62
|
+
AtbashCipher.decode("gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt") should be ("thequickbrownfoxjumpsoverthelazydog")
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import scala.annotation.tailrec
|
|
2
2
|
import scala.collection.immutable.ListMap
|
|
3
3
|
|
|
4
|
-
object
|
|
4
|
+
object RomanNumerals {
|
|
5
5
|
private def numeralValues = ListMap(
|
|
6
6
|
1000 -> "M",
|
|
7
7
|
900 -> "CM",
|
|
@@ -18,7 +18,7 @@ object RomanNumeral {
|
|
|
18
18
|
1 -> "I"
|
|
19
19
|
)
|
|
20
20
|
|
|
21
|
-
def
|
|
21
|
+
def roman(n: Int) = fromNumber(n, "")
|
|
22
22
|
|
|
23
23
|
@tailrec
|
|
24
24
|
private def fromNumber(n: Int, numerals: String): String = {
|
|
@@ -1,93 +1,94 @@
|
|
|
1
|
-
import org.scalatest.
|
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/** @version 1.0.0 */
|
|
4
|
+
class RomanNumeralsTest extends FunSuite with Matchers {
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
test("1 is a single I") {
|
|
7
|
+
RomanNumerals.roman(1) should be ("I")
|
|
7
8
|
}
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
test("2 is two I's") {
|
|
10
11
|
pending
|
|
11
|
-
|
|
12
|
+
RomanNumerals.roman(2) should be ("II")
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
test("3 is three I's") {
|
|
15
16
|
pending
|
|
16
|
-
|
|
17
|
+
RomanNumerals.roman(3) should be ("III")
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
test("4, being 5 - 1, is IV") {
|
|
20
21
|
pending
|
|
21
|
-
|
|
22
|
+
RomanNumerals.roman(4) should be ("IV")
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
test("5 is a single V") {
|
|
25
26
|
pending
|
|
26
|
-
|
|
27
|
+
RomanNumerals.roman(5) should be ("V")
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
test("6, being 5 + 1, is VI") {
|
|
30
31
|
pending
|
|
31
|
-
|
|
32
|
+
RomanNumerals.roman(6) should be ("VI")
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
test("9, being 10 - 1, is IX") {
|
|
35
36
|
pending
|
|
36
|
-
|
|
37
|
+
RomanNumerals.roman(9) should be ("IX")
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
test("20 is two X's") {
|
|
40
41
|
pending
|
|
41
|
-
|
|
42
|
+
RomanNumerals.roman(27) should be ("XXVII")
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
test("48 is not 50 - 2 but rather 40 + 8") {
|
|
45
46
|
pending
|
|
46
|
-
|
|
47
|
+
RomanNumerals.roman(48) should be ("XLVIII")
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
test("50 is a single L") {
|
|
50
51
|
pending
|
|
51
|
-
|
|
52
|
+
RomanNumerals.roman(59) should be ("LIX")
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
test("90, being 100 - 10, is XC") {
|
|
55
56
|
pending
|
|
56
|
-
|
|
57
|
+
RomanNumerals.roman(93) should be ("XCIII")
|
|
57
58
|
}
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
test("100 is a single C") {
|
|
60
61
|
pending
|
|
61
|
-
|
|
62
|
+
RomanNumerals.roman(141) should be ("CXLI")
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
test("60, being 50 + 10, is LX") {
|
|
65
66
|
pending
|
|
66
|
-
|
|
67
|
+
RomanNumerals.roman(163) should be ("CLXIII")
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
|
|
70
|
+
test("400, being 500 - 100, is CD") {
|
|
70
71
|
pending
|
|
71
|
-
|
|
72
|
+
RomanNumerals.roman(402) should be ("CDII")
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
test("500 is a single D") {
|
|
75
76
|
pending
|
|
76
|
-
|
|
77
|
+
RomanNumerals.roman(575) should be ("DLXXV")
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
test("900, being 1000 - 100, is CM") {
|
|
80
81
|
pending
|
|
81
|
-
|
|
82
|
+
RomanNumerals.roman(911) should be ("CMXI")
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
test("1000 is a single M") {
|
|
85
86
|
pending
|
|
86
|
-
|
|
87
|
+
RomanNumerals.roman(1024) should be ("MXXIV")
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
test("3000 is three M's") {
|
|
90
91
|
pending
|
|
91
|
-
|
|
92
|
+
RomanNumerals.roman(3000) should be ("MMM")
|
|
92
93
|
}
|
|
93
|
-
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import java.io.File
|
|
2
|
+
|
|
3
|
+
import testgen.TestSuiteBuilder._
|
|
4
|
+
import testgen._
|
|
5
|
+
|
|
6
|
+
object AtbashCipherTestGenerator {
|
|
7
|
+
def main(args: Array[String]): Unit = {
|
|
8
|
+
val file = new File("src/main/resources/atbash-cipher.json")
|
|
9
|
+
|
|
10
|
+
val code = TestSuiteBuilder.build(file,
|
|
11
|
+
fromLabeledTestAlt("encode" -> Seq("phrase"), "decode" -> Seq("phrase")))
|
|
12
|
+
println(s"-------------")
|
|
13
|
+
println(code)
|
|
14
|
+
println(s"-------------")
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import java.io.File
|
|
2
|
+
|
|
3
|
+
import testgen.TestSuiteBuilder
|
|
4
|
+
import testgen.TestSuiteBuilder.fromLabeledTest
|
|
5
|
+
|
|
6
|
+
object RomanNumeralsTestGenerator {
|
|
7
|
+
def main(args: Array[String]): Unit = {
|
|
8
|
+
val file = new File("src/main/resources/roman-numerals.json")
|
|
9
|
+
|
|
10
|
+
val code = TestSuiteBuilder.build(file, fromLabeledTest("number"))
|
|
11
|
+
println(s"-------------")
|
|
12
|
+
println(code)
|
|
13
|
+
println(s"-------------")
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# {{ .Spec.Name }}
|
|
2
|
+
|
|
3
|
+
{{ .Spec.Description -}}
|
|
4
|
+
{{- with .Hints }}
|
|
5
|
+
{{ . }}
|
|
6
|
+
{{ end }}
|
|
7
|
+
{{- with .TrackInsert }}
|
|
8
|
+
{{ . }}
|
|
9
|
+
{{ end }}
|
|
10
|
+
{{- with .Spec.Credits -}}
|
|
11
|
+
## Source
|
|
12
|
+
|
|
13
|
+
{{ . }}
|
|
14
|
+
{{ end }}
|
|
15
|
+
## Submitting Incomplete Solutions
|
|
16
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|