trackler 2.2.1.4 → 2.2.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/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
data/tracks/crystal/config.json
CHANGED
@@ -4,133 +4,190 @@
|
|
4
4
|
"test_pattern": "_spec.cr",
|
5
5
|
"exercises": [
|
6
6
|
{
|
7
|
+
"uuid": "4078cf4d-4361-4c55-aa18-63a3fe269be1",
|
7
8
|
"slug": "hello-world",
|
9
|
+
"core": false,
|
10
|
+
"unlocked_by": null,
|
8
11
|
"difficulty": 1,
|
9
12
|
"topics": [
|
10
13
|
|
11
14
|
]
|
12
15
|
},
|
13
16
|
{
|
17
|
+
"uuid": "080b6ab1-576f-4566-a065-5aae761f51af",
|
14
18
|
"slug": "hamming",
|
19
|
+
"core": false,
|
20
|
+
"unlocked_by": null,
|
15
21
|
"difficulty": 1,
|
16
22
|
"topics": [
|
17
23
|
|
18
24
|
]
|
19
25
|
},
|
20
26
|
{
|
27
|
+
"uuid": "16228cbe-49ff-4d15-b121-d84b40a56a66",
|
21
28
|
"slug": "gigasecond",
|
29
|
+
"core": false,
|
30
|
+
"unlocked_by": null,
|
22
31
|
"difficulty": 1,
|
23
32
|
"topics": [
|
24
33
|
|
25
34
|
]
|
26
35
|
},
|
27
36
|
{
|
37
|
+
"uuid": "99e661d7-7094-400f-a31d-48cf96d2cbc6",
|
28
38
|
"slug": "rna-transcription",
|
39
|
+
"core": false,
|
40
|
+
"unlocked_by": null,
|
29
41
|
"difficulty": 1,
|
30
42
|
"topics": [
|
31
43
|
|
32
44
|
]
|
33
45
|
},
|
34
46
|
{
|
47
|
+
"uuid": "7ad02ecf-036c-4510-b6ad-93bf1d5f0d28",
|
35
48
|
"slug": "bob",
|
49
|
+
"core": false,
|
50
|
+
"unlocked_by": null,
|
36
51
|
"difficulty": 1,
|
37
52
|
"topics": [
|
38
53
|
|
39
54
|
]
|
40
55
|
},
|
41
56
|
{
|
57
|
+
"uuid": "a1a95816-b9e8-480e-beca-477531cdaa4c",
|
42
58
|
"slug": "raindrops",
|
59
|
+
"core": false,
|
60
|
+
"unlocked_by": null,
|
43
61
|
"difficulty": 1,
|
44
62
|
"topics": [
|
45
63
|
|
46
64
|
]
|
47
65
|
},
|
48
66
|
{
|
67
|
+
"uuid": "607eb4f7-2650-47e1-81b9-a6fc2f0367cd",
|
49
68
|
"slug": "leap",
|
69
|
+
"core": false,
|
70
|
+
"unlocked_by": null,
|
50
71
|
"difficulty": 1,
|
51
72
|
"topics": [
|
52
73
|
|
53
74
|
]
|
54
75
|
},
|
55
76
|
{
|
77
|
+
"uuid": "19298c02-b34f-4f11-aad6-5da4838967a0",
|
56
78
|
"slug": "difference-of-squares",
|
79
|
+
"core": false,
|
80
|
+
"unlocked_by": null,
|
57
81
|
"difficulty": 1,
|
58
82
|
"topics": [
|
59
83
|
|
60
84
|
]
|
61
85
|
},
|
62
86
|
{
|
87
|
+
"uuid": "1546e974-866e-4d4d-bec5-d08f91c47fa3",
|
63
88
|
"slug": "pangram",
|
89
|
+
"core": false,
|
90
|
+
"unlocked_by": null,
|
64
91
|
"difficulty": 1,
|
65
92
|
"topics": [
|
66
93
|
|
67
94
|
]
|
68
95
|
},
|
69
96
|
{
|
97
|
+
"uuid": "ec55356b-61ab-4164-94d0-791133718fa8",
|
70
98
|
"slug": "largest-series-product",
|
99
|
+
"core": false,
|
100
|
+
"unlocked_by": null,
|
71
101
|
"difficulty": 1,
|
72
102
|
"topics": [
|
73
103
|
|
74
104
|
]
|
75
105
|
},
|
76
106
|
{
|
107
|
+
"uuid": "b8a4ccaa-4676-4921-baad-ec194a429b75",
|
77
108
|
"slug": "bracket-push",
|
109
|
+
"core": false,
|
110
|
+
"unlocked_by": null,
|
78
111
|
"difficulty": 1,
|
79
112
|
"topics": [
|
80
113
|
|
81
114
|
]
|
82
115
|
},
|
83
116
|
{
|
117
|
+
"uuid": "a2e06a49-1311-47eb-8d57-6fbc5abbe7e2",
|
84
118
|
"slug": "sieve",
|
119
|
+
"core": false,
|
120
|
+
"unlocked_by": null,
|
85
121
|
"difficulty": 1,
|
86
122
|
"topics": [
|
87
123
|
|
88
124
|
]
|
89
125
|
},
|
90
126
|
{
|
127
|
+
"uuid": "45a2591a-493d-4bab-be64-847243b4554b",
|
91
128
|
"slug": "roman-numerals",
|
129
|
+
"core": false,
|
130
|
+
"unlocked_by": null,
|
92
131
|
"difficulty": 1,
|
93
132
|
"topics": [
|
94
133
|
|
95
134
|
]
|
96
135
|
},
|
97
136
|
{
|
137
|
+
"uuid": "7dc99d5e-95af-4f91-85d4-ddb4c9dbb758",
|
98
138
|
"slug": "atbash-cipher",
|
139
|
+
"core": false,
|
140
|
+
"unlocked_by": null,
|
99
141
|
"difficulty": 1,
|
100
142
|
"topics": [
|
101
143
|
|
102
144
|
]
|
103
145
|
},
|
104
146
|
{
|
147
|
+
"uuid": "2df0796e-951d-4f10-8a2e-5c54f2443f10",
|
105
148
|
"slug": "anagram",
|
149
|
+
"core": false,
|
150
|
+
"unlocked_by": null,
|
106
151
|
"difficulty": 1,
|
107
152
|
"topics": [
|
108
153
|
|
109
154
|
]
|
110
155
|
},
|
111
156
|
{
|
157
|
+
"uuid": "2da645e4-7e72-4377-a7ac-184b67ff8a63",
|
112
158
|
"slug": "react",
|
159
|
+
"core": false,
|
160
|
+
"unlocked_by": null,
|
113
161
|
"difficulty": 1,
|
114
162
|
"topics": [
|
115
163
|
|
116
164
|
]
|
117
165
|
},
|
118
166
|
{
|
167
|
+
"uuid": "5373e713-f2ab-4b1e-b934-92969174bc48",
|
119
168
|
"slug": "acronym",
|
169
|
+
"core": false,
|
170
|
+
"unlocked_by": null,
|
120
171
|
"difficulty": 1,
|
121
172
|
"topics": [
|
122
173
|
|
123
174
|
]
|
124
175
|
},
|
125
176
|
{
|
177
|
+
"uuid": "d0c862a3-7d1f-4081-b378-f631ccf54fac",
|
126
178
|
"slug": "binary",
|
179
|
+
"core": false,
|
180
|
+
"unlocked_by": null,
|
127
181
|
"difficulty": 1,
|
128
182
|
"topics": [
|
129
183
|
|
130
184
|
]
|
131
185
|
},
|
132
186
|
{
|
187
|
+
"uuid": "415605d8-cc98-4eb1-9467-5c970e69f137",
|
133
188
|
"slug": "binary-search-tree",
|
189
|
+
"core": false,
|
190
|
+
"unlocked_by": null,
|
134
191
|
"difficulty": 1,
|
135
192
|
"topics": [
|
136
193
|
"data structures",
|
@@ -140,36 +197,45 @@
|
|
140
197
|
]
|
141
198
|
},
|
142
199
|
{
|
200
|
+
"uuid": "bed338cd-2308-4a15-9225-699d1d09ed49",
|
143
201
|
"slug": "run-length-encoding",
|
202
|
+
"core": false,
|
203
|
+
"unlocked_by": null,
|
144
204
|
"difficulty": 1,
|
145
205
|
"topics": [
|
146
206
|
|
147
207
|
]
|
148
208
|
},
|
149
209
|
{
|
210
|
+
"uuid": "1f04c451-a96a-4299-9386-6774b08f55ed",
|
150
211
|
"slug": "pascals-triangle",
|
212
|
+
"core": false,
|
213
|
+
"unlocked_by": null,
|
151
214
|
"difficulty": 1,
|
152
215
|
"topics": [
|
153
216
|
|
154
217
|
]
|
155
218
|
},
|
156
219
|
{
|
220
|
+
"uuid": "c85a6334-2f76-44ce-8ca5-0e997cc65d03",
|
157
221
|
"slug": "forth",
|
222
|
+
"core": false,
|
223
|
+
"unlocked_by": null,
|
158
224
|
"difficulty": 3,
|
159
225
|
"topics": [
|
160
226
|
|
161
227
|
]
|
162
228
|
},
|
163
229
|
{
|
230
|
+
"uuid": "85b2450c-727d-4b84-9904-02c37f385610",
|
164
231
|
"slug": "flatten-array",
|
232
|
+
"core": false,
|
233
|
+
"unlocked_by": null,
|
165
234
|
"difficulty": 1,
|
166
235
|
"topics": [
|
167
236
|
|
168
237
|
]
|
169
238
|
}
|
170
|
-
],
|
171
|
-
"deprecated": [
|
172
|
-
|
173
239
|
],
|
174
240
|
"foregone": [
|
175
241
|
|
@@ -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.
|
data/tracks/d/config.json
CHANGED
@@ -6,21 +6,30 @@
|
|
6
6
|
"active": true,
|
7
7
|
"exercises": [
|
8
8
|
{
|
9
|
+
"uuid": "a91c2216-9331-4485-ae4b-190ee9e2a7f8",
|
9
10
|
"slug": "hello-world",
|
11
|
+
"core": false,
|
12
|
+
"unlocked_by": null,
|
10
13
|
"difficulty": 1,
|
11
14
|
"topics": [
|
12
15
|
"language basics"
|
13
16
|
]
|
14
17
|
},
|
15
18
|
{
|
19
|
+
"uuid": "9f52d6a7-1002-4614-afc3-cce03187c59b",
|
16
20
|
"slug": "leap",
|
21
|
+
"core": false,
|
22
|
+
"unlocked_by": null,
|
17
23
|
"difficulty": 1,
|
18
24
|
"topics": [
|
19
25
|
"language basics"
|
20
26
|
]
|
21
27
|
},
|
22
28
|
{
|
29
|
+
"uuid": "8c976f92-fcfa-45f0-9bd1-2353822e51e8",
|
23
30
|
"slug": "gigasecond",
|
31
|
+
"core": false,
|
32
|
+
"unlocked_by": null,
|
24
33
|
"difficulty": 1,
|
25
34
|
"topics": [
|
26
35
|
"language basics",
|
@@ -28,7 +37,10 @@
|
|
28
37
|
]
|
29
38
|
},
|
30
39
|
{
|
40
|
+
"uuid": "208f9a34-bdf2-4c2b-b102-f0ef1a5d04fe",
|
31
41
|
"slug": "rna-transcription",
|
42
|
+
"core": false,
|
43
|
+
"unlocked_by": null,
|
32
44
|
"difficulty": 2,
|
33
45
|
"topics": [
|
34
46
|
"string manipulation",
|
@@ -37,7 +49,10 @@
|
|
37
49
|
]
|
38
50
|
},
|
39
51
|
{
|
52
|
+
"uuid": "f6d21f86-b4d3-4dec-b830-8e19e1018548",
|
40
53
|
"slug": "raindrops",
|
54
|
+
"core": false,
|
55
|
+
"unlocked_by": null,
|
41
56
|
"difficulty": 1,
|
42
57
|
"topics": [
|
43
58
|
"language basics",
|
@@ -45,7 +60,10 @@
|
|
45
60
|
]
|
46
61
|
},
|
47
62
|
{
|
63
|
+
"uuid": "99ee69a6-2c0f-4c7c-86f9-bee1633b4f51",
|
48
64
|
"slug": "bob",
|
65
|
+
"core": false,
|
66
|
+
"unlocked_by": null,
|
49
67
|
"difficulty": 2,
|
50
68
|
"topics": [
|
51
69
|
"string manipulation",
|
@@ -53,7 +71,10 @@
|
|
53
71
|
]
|
54
72
|
},
|
55
73
|
{
|
74
|
+
"uuid": "dc631076-1eb8-4120-bd8f-dccf33df9a3f",
|
56
75
|
"slug": "etl",
|
76
|
+
"core": false,
|
77
|
+
"unlocked_by": null,
|
57
78
|
"difficulty": 2,
|
58
79
|
"topics": [
|
59
80
|
"string manipulation",
|
@@ -62,7 +83,10 @@
|
|
62
83
|
]
|
63
84
|
},
|
64
85
|
{
|
86
|
+
"uuid": "87c87444-2349-40ab-a9a3-c0f0d2e200d6",
|
65
87
|
"slug": "hamming",
|
88
|
+
"core": false,
|
89
|
+
"unlocked_by": null,
|
66
90
|
"difficulty": 2,
|
67
91
|
"topics": [
|
68
92
|
"error handling",
|
@@ -70,7 +94,10 @@
|
|
70
94
|
]
|
71
95
|
},
|
72
96
|
{
|
97
|
+
"uuid": "23b23ac0-62ef-4a22-b634-d64206c8a226",
|
73
98
|
"slug": "nucleotide-count",
|
99
|
+
"core": false,
|
100
|
+
"unlocked_by": null,
|
74
101
|
"difficulty": 3,
|
75
102
|
"topics": [
|
76
103
|
"classes",
|
@@ -79,7 +106,10 @@
|
|
79
106
|
]
|
80
107
|
},
|
81
108
|
{
|
109
|
+
"uuid": "d7dd5df3-ff36-47ee-88db-e0f974a4cb19",
|
82
110
|
"slug": "robot-name",
|
111
|
+
"core": false,
|
112
|
+
"unlocked_by": null,
|
83
113
|
"difficulty": 3,
|
84
114
|
"topics": [
|
85
115
|
"classes",
|
@@ -87,7 +117,10 @@
|
|
87
117
|
]
|
88
118
|
},
|
89
119
|
{
|
120
|
+
"uuid": "d6c67e30-c950-40b6-b6db-0fa6df5652af",
|
90
121
|
"slug": "difference-of-squares",
|
122
|
+
"core": false,
|
123
|
+
"unlocked_by": null,
|
91
124
|
"difficulty": 2,
|
92
125
|
"topics": [
|
93
126
|
"control-flow (foreach)",
|
@@ -97,7 +130,10 @@
|
|
97
130
|
]
|
98
131
|
},
|
99
132
|
{
|
133
|
+
"uuid": "5647c00e-d4be-4546-bac3-6a3e1670c2a1",
|
100
134
|
"slug": "roman-numerals",
|
135
|
+
"core": false,
|
136
|
+
"unlocked_by": null,
|
101
137
|
"difficulty": 3,
|
102
138
|
"topics": [
|
103
139
|
"string manipulation",
|
@@ -106,7 +142,10 @@
|
|
106
142
|
]
|
107
143
|
},
|
108
144
|
{
|
145
|
+
"uuid": "14c3c478-9dc1-470b-8517-35c3ceac3f47",
|
109
146
|
"slug": "series",
|
147
|
+
"core": false,
|
148
|
+
"unlocked_by": null,
|
110
149
|
"difficulty": 3,
|
111
150
|
"topics": [
|
112
151
|
"string manipulation",
|
@@ -114,7 +153,10 @@
|
|
114
153
|
]
|
115
154
|
},
|
116
155
|
{
|
156
|
+
"uuid": "c9acd967-fc2a-4c74-b584-2572ce690e71",
|
117
157
|
"slug": "triangle",
|
158
|
+
"core": false,
|
159
|
+
"unlocked_by": null,
|
118
160
|
"difficulty": 2,
|
119
161
|
"topics": [
|
120
162
|
"language basics",
|
@@ -122,7 +164,10 @@
|
|
122
164
|
]
|
123
165
|
},
|
124
166
|
{
|
167
|
+
"uuid": "45afc532-3f6c-4b9e-90f6-c53a79551af1",
|
125
168
|
"slug": "crypto-square",
|
169
|
+
"core": false,
|
170
|
+
"unlocked_by": null,
|
126
171
|
"difficulty": 3,
|
127
172
|
"topics": [
|
128
173
|
"string manipulation",
|
@@ -131,7 +176,10 @@
|
|
131
176
|
]
|
132
177
|
},
|
133
178
|
{
|
179
|
+
"uuid": "2ba799a8-eab9-44a0-9b31-a10e72baa38b",
|
134
180
|
"slug": "circular-buffer",
|
181
|
+
"core": false,
|
182
|
+
"unlocked_by": null,
|
135
183
|
"difficulty": 4,
|
136
184
|
"topics": [
|
137
185
|
"class templates",
|
@@ -139,7 +187,10 @@
|
|
139
187
|
]
|
140
188
|
},
|
141
189
|
{
|
190
|
+
"uuid": "a4cf4571-1f97-438c-9c02-3fe7c52ee25f",
|
142
191
|
"slug": "pangram",
|
192
|
+
"core": false,
|
193
|
+
"unlocked_by": null,
|
143
194
|
"difficulty": 1,
|
144
195
|
"topics": [
|
145
196
|
"language basics",
|
@@ -148,7 +199,10 @@
|
|
148
199
|
]
|
149
200
|
},
|
150
201
|
{
|
202
|
+
"uuid": "31dd1e53-2b5e-4d40-ac4c-a68fe5e6635c",
|
151
203
|
"slug": "react",
|
204
|
+
"core": false,
|
205
|
+
"unlocked_by": null,
|
152
206
|
"difficulty": 10,
|
153
207
|
"topics": [
|
154
208
|
"reactive programming",
|
@@ -158,9 +212,6 @@
|
|
158
212
|
"delegates"
|
159
213
|
]
|
160
214
|
}
|
161
|
-
],
|
162
|
-
"deprecated": [
|
163
|
-
|
164
215
|
],
|
165
216
|
"foregone": [
|
166
217
|
|
@@ -0,0 +1,49 @@
|
|
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
|
+
## Getting Started
|
15
|
+
|
16
|
+
Make sure you have read [D page](http://exercism.io/languages/dlang) on
|
17
|
+
exercism.io. This covers the basic information on setting up the development
|
18
|
+
environment expected by the exercises.
|
19
|
+
|
20
|
+
## Passing the Tests
|
21
|
+
|
22
|
+
Get the first test compiling, linking and passing by following the [three
|
23
|
+
rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
|
24
|
+
Create just enough structure by declaring namespaces, functions, classes,
|
25
|
+
etc., to satisfy any compiler errors and get the test to fail. Then write
|
26
|
+
just enough code to get the test to pass. Once you've done that,
|
27
|
+
uncomment the next test by moving the following line past the next test.
|
28
|
+
|
29
|
+
```D
|
30
|
+
static if (all_tests_enabled)
|
31
|
+
```
|
32
|
+
|
33
|
+
This may result in compile errors as new constructs may be invoked that
|
34
|
+
you haven't yet declared or defined. Again, fix the compile errors minimally
|
35
|
+
to get a failing test, then change the code minimally to pass the test,
|
36
|
+
refactor your implementation for readability and expressiveness and then
|
37
|
+
go on to the next test.
|
38
|
+
|
39
|
+
Try to use standard D facilities in preference to writing your own
|
40
|
+
low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
|
41
|
+
and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
|
42
|
+
|
43
|
+
|
44
|
+
## Source
|
45
|
+
|
46
|
+
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)
|
47
|
+
|
48
|
+
## Submitting Incomplete Solutions
|
49
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# Circular Buffer
|
2
|
+
|
3
|
+
A circular buffer, cyclic buffer or ring buffer is a data structure that
|
4
|
+
uses a single, fixed-size buffer as if it were connected end-to-end.
|
5
|
+
|
6
|
+
A circular buffer first starts empty and of some predefined length. For
|
7
|
+
example, this is a 7-element buffer:
|
8
|
+
|
9
|
+
[ ][ ][ ][ ][ ][ ][ ]
|
10
|
+
|
11
|
+
Assume that a 1 is written into the middle of the buffer (exact starting
|
12
|
+
location does not matter in a circular buffer):
|
13
|
+
|
14
|
+
[ ][ ][ ][1][ ][ ][ ]
|
15
|
+
|
16
|
+
Then assume that two more elements are added — 2 & 3 — which get
|
17
|
+
appended after the 1:
|
18
|
+
|
19
|
+
[ ][ ][ ][1][2][3][ ]
|
20
|
+
|
21
|
+
If two elements are then removed from the buffer, the oldest values
|
22
|
+
inside the buffer are removed. The two elements removed, in this case,
|
23
|
+
are 1 & 2, leaving the buffer with just a 3:
|
24
|
+
|
25
|
+
[ ][ ][ ][ ][ ][3][ ]
|
26
|
+
|
27
|
+
If the buffer has 7 elements then it is completely full:
|
28
|
+
|
29
|
+
[6][7][8][9][3][4][5]
|
30
|
+
|
31
|
+
When the buffer is full an error will be raised, alerting the client
|
32
|
+
that further writes are blocked until a slot becomes free.
|
33
|
+
|
34
|
+
The client can opt to overwrite the oldest data with a forced write. In
|
35
|
+
this case, two more elements — A & B — are added and they overwrite the
|
36
|
+
3 & 4:
|
37
|
+
|
38
|
+
[6][7][8][9][A][B][5]
|
39
|
+
|
40
|
+
Finally, if two elements are now removed then what would be returned is
|
41
|
+
not 3 & 4 but 5 & 6 because A & B overwrote the 3 & the 4 yielding the
|
42
|
+
buffer with:
|
43
|
+
|
44
|
+
[ ][7][8][9][A][B][ ]
|
45
|
+
|
46
|
+
## Getting Started
|
47
|
+
|
48
|
+
Make sure you have read [D page](http://exercism.io/languages/dlang) on
|
49
|
+
exercism.io. This covers the basic information on setting up the development
|
50
|
+
environment expected by the exercises.
|
51
|
+
|
52
|
+
## Passing the Tests
|
53
|
+
|
54
|
+
Get the first test compiling, linking and passing by following the [three
|
55
|
+
rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
|
56
|
+
Create just enough structure by declaring namespaces, functions, classes,
|
57
|
+
etc., to satisfy any compiler errors and get the test to fail. Then write
|
58
|
+
just enough code to get the test to pass. Once you've done that,
|
59
|
+
uncomment the next test by moving the following line past the next test.
|
60
|
+
|
61
|
+
```D
|
62
|
+
static if (all_tests_enabled)
|
63
|
+
```
|
64
|
+
|
65
|
+
This may result in compile errors as new constructs may be invoked that
|
66
|
+
you haven't yet declared or defined. Again, fix the compile errors minimally
|
67
|
+
to get a failing test, then change the code minimally to pass the test,
|
68
|
+
refactor your implementation for readability and expressiveness and then
|
69
|
+
go on to the next test.
|
70
|
+
|
71
|
+
Try to use standard D facilities in preference to writing your own
|
72
|
+
low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
|
73
|
+
and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
|
74
|
+
|
75
|
+
|
76
|
+
## Source
|
77
|
+
|
78
|
+
Wikipedia [http://en.wikipedia.org/wiki/Circular_buffer](http://en.wikipedia.org/wiki/Circular_buffer)
|
79
|
+
|
80
|
+
## Submitting Incomplete Solutions
|
81
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# Crypto Square
|
2
|
+
|
3
|
+
Implement the classic method for composing secret messages called a square code.
|
4
|
+
|
5
|
+
Given an English text, output the encoded version of that text.
|
6
|
+
|
7
|
+
First, the input is normalized: the spaces and punctuation are removed
|
8
|
+
from the English text and the message is downcased.
|
9
|
+
|
10
|
+
Then, the normalized characters are broken into rows. These rows can be
|
11
|
+
regarded as forming a rectangle when printed with intervening newlines.
|
12
|
+
|
13
|
+
For example, the sentence
|
14
|
+
|
15
|
+
> If man was meant to stay on the ground, god would have given us roots.
|
16
|
+
|
17
|
+
is normalized to:
|
18
|
+
|
19
|
+
> ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots
|
20
|
+
|
21
|
+
The plaintext should be organized in to a rectangle. The size of the
|
22
|
+
rectangle (`r x c`) should be decided by the length of the message,
|
23
|
+
such that `c >= r` and `c - r <= 1`, where `c` is the number of columns
|
24
|
+
and `r` is the number of rows.
|
25
|
+
|
26
|
+
Our normalized text is 54 characters long, dictating a rectangle with
|
27
|
+
`c = 8` and `r = 7`:
|
28
|
+
|
29
|
+
```plain
|
30
|
+
ifmanwas
|
31
|
+
meanttos
|
32
|
+
tayonthe
|
33
|
+
groundgo
|
34
|
+
dwouldha
|
35
|
+
vegivenu
|
36
|
+
sroots
|
37
|
+
```
|
38
|
+
|
39
|
+
The coded message is obtained by reading down the columns going left to
|
40
|
+
right.
|
41
|
+
|
42
|
+
The message above is coded as:
|
43
|
+
|
44
|
+
```plain
|
45
|
+
imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
|
46
|
+
```
|
47
|
+
|
48
|
+
Output the encoded text in chunks. Phrases that fill perfect squares
|
49
|
+
`(r X r)` should be output in `r`-length chunks separated by spaces.
|
50
|
+
Imperfect squares will have `n` empty spaces. Those spaces should be distributed evenly across the last `n` rows.
|
51
|
+
|
52
|
+
```plain
|
53
|
+
imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
|
54
|
+
```
|
55
|
+
|
56
|
+
Notice that were we to stack these, we could visually decode the
|
57
|
+
cyphertext back in to the original message:
|
58
|
+
|
59
|
+
```plain
|
60
|
+
imtgdvs
|
61
|
+
fearwer
|
62
|
+
mayoogo
|
63
|
+
anouuio
|
64
|
+
ntnnlvt
|
65
|
+
wttddes
|
66
|
+
aohghn
|
67
|
+
sseoau
|
68
|
+
```
|
69
|
+
|
70
|
+
## Getting Started
|
71
|
+
|
72
|
+
Make sure you have read [D page](http://exercism.io/languages/dlang) on
|
73
|
+
exercism.io. This covers the basic information on setting up the development
|
74
|
+
environment expected by the exercises.
|
75
|
+
|
76
|
+
## Passing the Tests
|
77
|
+
|
78
|
+
Get the first test compiling, linking and passing by following the [three
|
79
|
+
rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
|
80
|
+
Create just enough structure by declaring namespaces, functions, classes,
|
81
|
+
etc., to satisfy any compiler errors and get the test to fail. Then write
|
82
|
+
just enough code to get the test to pass. Once you've done that,
|
83
|
+
uncomment the next test by moving the following line past the next test.
|
84
|
+
|
85
|
+
```D
|
86
|
+
static if (all_tests_enabled)
|
87
|
+
```
|
88
|
+
|
89
|
+
This may result in compile errors as new constructs may be invoked that
|
90
|
+
you haven't yet declared or defined. Again, fix the compile errors minimally
|
91
|
+
to get a failing test, then change the code minimally to pass the test,
|
92
|
+
refactor your implementation for readability and expressiveness and then
|
93
|
+
go on to the next test.
|
94
|
+
|
95
|
+
Try to use standard D facilities in preference to writing your own
|
96
|
+
low-level algorithms or facilities by hand. [DRefLanguage](https://dlang.org/spec/spec.html)
|
97
|
+
and [DReference](https://dlang.org/phobos/index.html) are references to the D language and D standard library.
|
98
|
+
|
99
|
+
|
100
|
+
## Source
|
101
|
+
|
102
|
+
J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html](http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html)
|
103
|
+
|
104
|
+
## Submitting Incomplete Solutions
|
105
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|