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
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.
|