trackler 2.2.0.4 → 2.2.0.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 -2
- data/tracks/bash/exercises/word-count/example.awk +12 -0
- data/tracks/bash/exercises/word-count/example.sh +21 -0
- data/tracks/c/config.json +0 -2
- data/tracks/ceylon/config.json +0 -2
- data/tracks/{erlang/exercises/all-your-base/.meta/readme.go.tmpl → clojure/config/exercise_readme.go.tmpl} +0 -1
- data/tracks/clojure/exercises/accumulate/README.md +35 -0
- data/tracks/clojure/exercises/acronym/README.md +15 -0
- data/tracks/clojure/exercises/all-your-base/README.md +35 -0
- data/tracks/clojure/exercises/allergies/README.md +37 -0
- data/tracks/clojure/exercises/anagram/README.md +13 -0
- data/tracks/clojure/exercises/atbash-cipher/README.md +34 -0
- data/tracks/clojure/exercises/bank-account/README.md +30 -0
- data/tracks/clojure/exercises/beer-song/README.md +327 -0
- data/tracks/clojure/exercises/binary/README.md +35 -0
- data/tracks/clojure/exercises/binary-search/README.md +41 -0
- data/tracks/clojure/exercises/binary-search-tree/README.md +60 -0
- data/tracks/clojure/exercises/bob/README.md +18 -0
- data/tracks/clojure/exercises/bracket-push/README.md +10 -0
- data/tracks/clojure/exercises/change/README.md +23 -0
- data/tracks/clojure/exercises/clock/README.md +13 -0
- data/tracks/clojure/exercises/crypto-square/README.md +74 -0
- data/tracks/clojure/exercises/difference-of-squares/README.md +19 -0
- data/tracks/clojure/exercises/etl/README.md +51 -0
- data/tracks/clojure/exercises/flatten-array/README.md +18 -0
- data/tracks/clojure/exercises/gigasecond/README.md +11 -0
- data/tracks/clojure/exercises/grade-school/README.md +42 -0
- data/tracks/clojure/exercises/grains/README.md +34 -0
- data/tracks/clojure/exercises/hamming/README.md +42 -0
- data/tracks/clojure/exercises/hello-world/README.md +51 -0
- data/tracks/clojure/exercises/hexadecimal/README.md +14 -0
- data/tracks/clojure/exercises/isogram/README.md +19 -0
- data/tracks/clojure/exercises/kindergarten-garden/README.md +66 -0
- data/tracks/clojure/exercises/largest-series-product/README.md +20 -0
- data/tracks/clojure/exercises/leap/README.md +33 -0
- data/tracks/clojure/exercises/luhn/README.md +71 -0
- data/tracks/clojure/exercises/meetup/README.md +30 -0
- data/tracks/clojure/exercises/minesweeper/README.md +30 -0
- data/tracks/clojure/exercises/nth-prime/README.md +15 -0
- data/tracks/clojure/exercises/nucleotide-count/README.md +33 -0
- data/tracks/clojure/exercises/octal/README.md +49 -0
- data/tracks/clojure/exercises/pangram/README.md +15 -0
- data/tracks/clojure/exercises/pascals-triangle/README.md +21 -0
- data/tracks/clojure/exercises/perfect-numbers/README.md +24 -0
- data/tracks/clojure/exercises/phone-number/README.md +34 -0
- data/tracks/clojure/exercises/pig-latin/README.md +24 -0
- data/tracks/clojure/exercises/pov/README.md +46 -0
- data/tracks/clojure/exercises/prime-factors/README.md +36 -0
- data/tracks/clojure/exercises/queen-attack/README.md +33 -0
- data/tracks/clojure/exercises/raindrops/README.md +24 -0
- data/tracks/clojure/exercises/rna-transcription/README.md +25 -0
- data/tracks/clojure/exercises/robot-name/README.md +22 -0
- data/tracks/clojure/exercises/robot-simulator/README.md +34 -0
- data/tracks/clojure/exercises/roman-numerals/README.md +49 -0
- data/tracks/clojure/exercises/rotational-cipher/README.md +36 -0
- data/tracks/clojure/exercises/scrabble-score/README.md +44 -0
- data/tracks/clojure/exercises/secret-handshake/README.md +35 -0
- data/tracks/clojure/exercises/sieve/README.md +34 -0
- data/tracks/clojure/exercises/space-age/README.md +24 -0
- data/tracks/clojure/exercises/strain/README.md +40 -0
- data/tracks/clojure/exercises/sublist/README.md +21 -0
- data/tracks/clojure/exercises/sum-of-multiples/README.md +18 -0
- data/tracks/clojure/exercises/triangle/README.md +26 -0
- data/tracks/clojure/exercises/trinary/README.md +28 -0
- data/tracks/clojure/exercises/word-count/README.md +19 -0
- data/tracks/clojure/exercises/wordy/README.md +63 -0
- data/tracks/{erlang/exercises/allergies/.meta/readme.go.tmpl → crystal/config/exercise_readme.go.tmpl} +0 -1
- data/tracks/crystal/config.json +0 -2
- data/tracks/crystal/exercises/acronym/README.md +38 -0
- data/tracks/crystal/exercises/anagram/README.md +36 -0
- data/tracks/crystal/exercises/atbash-cipher/README.md +57 -0
- data/tracks/crystal/exercises/binary/README.md +58 -0
- data/tracks/crystal/exercises/binary-search-tree/README.md +83 -0
- data/tracks/crystal/exercises/bob/README.md +41 -0
- data/tracks/crystal/exercises/bracket-push/README.md +33 -0
- data/tracks/crystal/exercises/difference-of-squares/README.md +42 -0
- data/tracks/crystal/exercises/flatten-array/README.md +41 -0
- data/tracks/crystal/exercises/forth/README.md +52 -0
- data/tracks/crystal/exercises/gigasecond/README.md +34 -0
- data/tracks/crystal/exercises/hamming/README.md +65 -0
- data/tracks/crystal/exercises/hello-world/README.md +78 -0
- data/tracks/crystal/exercises/largest-series-product/README.md +43 -0
- data/tracks/crystal/exercises/leap/README.md +56 -0
- data/tracks/crystal/exercises/pangram/README.md +38 -0
- data/tracks/crystal/exercises/pascals-triangle/README.md +44 -0
- data/tracks/crystal/exercises/raindrops/README.md +47 -0
- data/tracks/crystal/exercises/react/README.md +42 -0
- data/tracks/crystal/exercises/rna-transcription/README.md +48 -0
- data/tracks/crystal/exercises/roman-numerals/README.md +72 -0
- data/tracks/crystal/exercises/run-length-encoding/README.md +53 -0
- data/tracks/crystal/exercises/sieve/README.md +57 -0
- data/tracks/csharp/config.json +0 -2
- data/tracks/delphi/config.json +0 -2
- data/tracks/ecmascript/config.json +63 -2
- data/tracks/erlang/{exercises/anagram/.meta/readme.go.tmpl → config/exercise_readme.go.tmpl} +0 -1
- data/tracks/erlang/config.json +0 -2
- data/tracks/erlang/exercises/accumulate/README.md +0 -1
- data/tracks/erlang/exercises/all-your-base/README.md +0 -1
- data/tracks/erlang/exercises/allergies/README.md +0 -1
- data/tracks/erlang/exercises/anagram/README.md +0 -1
- data/tracks/erlang/exercises/atbash-cipher/README.md +0 -1
- data/tracks/erlang/exercises/bank-account/README.md +0 -1
- data/tracks/erlang/exercises/beer-song/README.md +0 -1
- data/tracks/erlang/exercises/bob/README.md +0 -1
- data/tracks/erlang/exercises/circular-buffer/README.md +0 -1
- data/tracks/erlang/exercises/clock/README.md +0 -1
- data/tracks/erlang/exercises/collatz-conjecture/README.md +0 -1
- data/tracks/erlang/exercises/difference-of-squares/README.md +0 -1
- data/tracks/erlang/exercises/etl/README.md +0 -1
- data/tracks/erlang/exercises/gigasecond/README.md +0 -1
- data/tracks/erlang/exercises/grade-school/README.md +0 -1
- data/tracks/erlang/exercises/grains/README.md +0 -1
- data/tracks/erlang/exercises/hamming/README.md +0 -1
- data/tracks/erlang/exercises/hello-world/README.md +0 -1
- data/tracks/erlang/exercises/largest-series-product/README.md +0 -1
- data/tracks/erlang/exercises/leap/README.md +0 -1
- data/tracks/erlang/exercises/luhn/README.md +0 -1
- data/tracks/erlang/exercises/meetup/README.md +0 -1
- data/tracks/erlang/exercises/nucleotide-count/README.md +0 -1
- data/tracks/erlang/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/erlang/exercises/phone-number/README.md +0 -1
- data/tracks/erlang/exercises/rna-transcription/README.md +0 -1
- data/tracks/erlang/exercises/robot-simulator/README.md +0 -1
- data/tracks/erlang/exercises/roman-numerals/README.md +0 -1
- data/tracks/erlang/exercises/rotational-cipher/README.md +0 -1
- data/tracks/erlang/exercises/scrabble-score/README.md +0 -1
- data/tracks/erlang/exercises/series/README.md +0 -1
- data/tracks/erlang/exercises/space-age/README.md +0 -1
- data/tracks/erlang/exercises/spiral-matrix/README.md +0 -1
- data/tracks/erlang/exercises/strain/README.md +0 -1
- data/tracks/erlang/exercises/sum-of-multiples/README.md +0 -1
- data/tracks/erlang/exercises/triangle/README.md +0 -1
- data/tracks/erlang/exercises/word-count/README.md +0 -1
- data/tracks/erlang/exercises/zipper/README.md +0 -1
- data/tracks/factor/config.json +0 -2
- data/tracks/fsharp/config.json +0 -2
- data/tracks/go/config.json +12 -6
- data/tracks/go/exercises/bank-account/bank_account_test.go +60 -1
- data/tracks/go/exercises/error-handling/common.go +17 -0
- data/tracks/go/exercises/error-handling/error_handling_test.go +37 -4
- data/tracks/haskell/config.json +0 -2
- data/tracks/java/config.json +10 -2
- data/tracks/{erlang/exercises/accumulate → java/exercises/forth}/.meta/readme.go.tmpl +0 -0
- data/tracks/java/exercises/forth/README.md +41 -0
- data/tracks/java/exercises/forth/build.gradle +18 -0
- data/tracks/java/exercises/forth/src/example/java/ForthEvaluator.java +154 -0
- data/tracks/java/exercises/forth/src/example/java/Token.java +90 -0
- data/tracks/java/exercises/forth/src/main/java/.keep +0 -0
- data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +355 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/javascript/config.json +0 -2
- data/tracks/kotlin/config.json +30 -2
- data/tracks/kotlin/exercises/forth/README.md +32 -0
- data/tracks/kotlin/exercises/forth/build.gradle +28 -0
- data/tracks/kotlin/exercises/forth/src/example/kotlin/ForthEvaluator.kt +138 -0
- data/tracks/kotlin/exercises/forth/src/main/kotlin/.keep +0 -0
- data/tracks/kotlin/exercises/forth/src/test/kotlin/ForthEvaluatorTest.kt +352 -0
- data/tracks/kotlin/exercises/meetup/README.md +33 -0
- data/tracks/kotlin/exercises/meetup/build.gradle +28 -0
- data/tracks/kotlin/exercises/meetup/src/example/kotlin/Meetup.kt +45 -0
- data/tracks/kotlin/exercises/meetup/src/example/kotlin/MeetupSchedule.kt +1 -0
- data/tracks/kotlin/exercises/meetup/src/main/kotlin/MeetupSchedule.kt +5 -0
- data/tracks/kotlin/exercises/meetup/src/test/kotlin/MeetupTest.kt +771 -0
- data/tracks/kotlin/exercises/say/README.md +72 -0
- data/tracks/kotlin/exercises/say/build.gradle +28 -0
- data/tracks/kotlin/exercises/say/src/example/kotlin/NumberSpeller.kt +88 -0
- data/tracks/kotlin/exercises/say/src/main/kotlin/.keep +0 -0
- data/tracks/kotlin/exercises/say/src/test/kotlin/NumberSpellerTest.kt +138 -0
- data/tracks/kotlin/exercises/settings.gradle +3 -0
- data/tracks/lua/config.json +0 -2
- data/tracks/mips/config.json +0 -2
- data/tracks/ocaml/config.json +0 -2
- data/tracks/perl5/config.json +262 -67
- data/tracks/perl6/config.json +98 -26
- data/tracks/php/docs/INSTALLATION.md +1 -1
- data/tracks/powershell/config.json +0 -2
- data/tracks/purescript/config.json +0 -2
- data/tracks/python/README.md +2 -2
- data/tracks/python/config/exercise_readme.go.tmpl +16 -0
- data/tracks/python/config.json +280 -15
- data/tracks/python/exercises/accumulate/README.md +46 -0
- data/tracks/python/exercises/acronym/README.md +26 -0
- data/tracks/python/exercises/all-your-base/README.md +46 -0
- data/tracks/python/exercises/allergies/README.md +48 -0
- data/tracks/python/exercises/alphametics/README.md +46 -0
- data/tracks/python/exercises/anagram/README.md +24 -0
- data/tracks/python/exercises/atbash-cipher/README.md +45 -0
- data/tracks/python/exercises/beer-song/README.md +338 -0
- data/tracks/python/exercises/binary/README.md +46 -0
- data/tracks/python/exercises/binary-search/README.md +52 -0
- data/tracks/python/exercises/bob/README.md +29 -0
- data/tracks/python/exercises/book-store/README.md +85 -0
- data/tracks/python/exercises/bracket-push/README.md +21 -0
- data/tracks/python/exercises/circular-buffer/README.md +61 -0
- data/tracks/python/exercises/clock/README.md +24 -0
- data/tracks/python/exercises/crypto-square/README.md +85 -0
- data/tracks/python/exercises/diamond/README.md +70 -0
- data/tracks/python/exercises/difference-of-squares/README.md +30 -0
- data/tracks/python/exercises/etl/README.md +62 -0
- data/tracks/python/exercises/flatten-array/README.md +29 -0
- data/tracks/python/exercises/gigasecond/README.md +22 -0
- data/tracks/python/exercises/grade-school/README.md +53 -0
- data/tracks/python/exercises/grains/README.md +45 -0
- data/tracks/python/exercises/grep/README.md +82 -0
- data/tracks/python/exercises/hamming/README.md +53 -0
- data/tracks/python/exercises/hello-world/README.md +32 -0
- data/tracks/python/exercises/hexadecimal/README.md +25 -0
- data/tracks/python/exercises/house/README.md +124 -0
- data/tracks/python/exercises/isogram/README.md +30 -0
- data/tracks/python/exercises/kindergarten-garden/README.md +77 -0
- data/tracks/python/exercises/largest-series-product/README.md +31 -0
- data/tracks/python/exercises/leap/README.md +44 -0
- data/tracks/python/exercises/linked-list/README.md +45 -0
- data/tracks/python/exercises/list-ops/README.md +21 -0
- data/tracks/python/exercises/luhn/README.md +82 -0
- data/tracks/python/exercises/matrix/README.md +56 -0
- data/tracks/python/exercises/meetup/README.md +41 -0
- data/tracks/python/exercises/minesweeper/README.md +41 -0
- data/tracks/python/exercises/nth-prime/README.md +26 -0
- data/tracks/python/exercises/nucleotide-count/README.md +44 -0
- data/tracks/python/exercises/ocr-numbers/README.md +96 -0
- data/tracks/python/exercises/octal/README.md +60 -0
- data/tracks/python/exercises/palindrome-products/README.md +51 -0
- data/tracks/python/exercises/pangram/README.md +26 -0
- data/tracks/python/exercises/pascals-triangle/README.md +32 -0
- data/tracks/python/exercises/perfect-numbers/README.md +35 -0
- data/tracks/python/exercises/phone-number/README.md +45 -0
- data/tracks/python/exercises/pig-latin/README.md +35 -0
- data/tracks/python/exercises/point-mutations/README.md +52 -0
- data/tracks/python/exercises/poker/README.md +23 -0
- data/tracks/python/exercises/prime-factors/README.md +47 -0
- data/tracks/python/exercises/protein-translation/README.md +60 -0
- data/tracks/python/exercises/proverb/README.md +29 -0
- data/tracks/python/exercises/pythagorean-triplet/README.md +35 -0
- data/tracks/python/exercises/queen-attack/README.md +44 -0
- data/tracks/python/exercises/rail-fence-cipher/README.md +71 -0
- data/tracks/python/exercises/raindrops/README.md +35 -0
- data/tracks/python/exercises/rectangles/README.md +78 -0
- data/tracks/python/exercises/rna-transcription/README.md +36 -0
- data/tracks/python/exercises/robot-name/README.md +33 -0
- data/tracks/python/exercises/robot-simulator/README.md +45 -0
- data/tracks/python/exercises/roman-numerals/README.md +60 -0
- data/tracks/python/exercises/rotational-cipher/README.md +47 -0
- data/tracks/python/exercises/run-length-encoding/README.md +41 -0
- data/tracks/python/exercises/saddle-points/README.md +44 -0
- data/tracks/python/exercises/say/README.md +80 -0
- data/tracks/python/exercises/scale-generator/README.md +71 -0
- data/tracks/python/exercises/scrabble-score/README.md +55 -0
- data/tracks/python/exercises/secret-handshake/README.md +46 -0
- data/tracks/python/exercises/series/README.md +38 -0
- data/tracks/python/exercises/sieve/README.md +45 -0
- data/tracks/python/exercises/simple-cipher/README.md +101 -0
- data/tracks/python/exercises/space-age/README.md +35 -0
- data/tracks/python/exercises/strain/README.md +51 -0
- data/tracks/python/exercises/sublist/README.md +32 -0
- data/tracks/python/exercises/sum-of-multiples/README.md +29 -0
- data/tracks/python/exercises/tournament/README.md +79 -0
- data/tracks/python/exercises/transpose/README.md +76 -0
- data/tracks/python/exercises/triangle/README.md +37 -0
- data/tracks/python/exercises/trinary/README.md +39 -0
- data/tracks/python/exercises/twelve-days/README.md +46 -0
- data/tracks/python/exercises/variable-length-quantity/README.md +50 -0
- data/tracks/python/exercises/word-count/README.md +30 -0
- data/tracks/python/exercises/word-search/README.md +41 -0
- data/tracks/python/exercises/wordy/README.md +74 -0
- data/tracks/python/exercises/zebra-puzzle/README.md +43 -0
- data/tracks/python/test/check-exercises.py +2 -3
- data/tracks/r/config.json +0 -2
- data/tracks/ruby/.travis.yml +1 -1
- data/tracks/ruby/config/exercise_readme.go.tmpl +16 -0
- data/tracks/ruby/config.json +265 -4
- data/tracks/ruby/exercises/accumulate/README.md +76 -0
- data/tracks/ruby/exercises/acronym/README.md +41 -0
- data/tracks/ruby/exercises/all-your-base/README.md +61 -0
- data/tracks/ruby/exercises/allergies/README.md +63 -0
- data/tracks/ruby/exercises/alphametics/README.md +61 -0
- data/tracks/ruby/exercises/anagram/README.md +39 -0
- data/tracks/ruby/exercises/atbash-cipher/README.md +60 -0
- data/tracks/ruby/exercises/beer-song/README.md +353 -0
- data/tracks/ruby/exercises/binary/README.md +61 -0
- data/tracks/ruby/exercises/binary-search/README.md +67 -0
- data/tracks/ruby/exercises/binary-search-tree/README.md +86 -0
- data/tracks/ruby/exercises/bob/README.md +44 -0
- data/tracks/ruby/exercises/bowling/README.md +79 -0
- data/tracks/ruby/exercises/bracket-push/README.md +36 -0
- data/tracks/ruby/exercises/circular-buffer/README.md +76 -0
- data/tracks/ruby/exercises/clock/README.md +39 -0
- data/tracks/ruby/exercises/collatz-conjecture/README.md +59 -0
- data/tracks/ruby/exercises/connect/README.md +60 -0
- data/tracks/ruby/exercises/crypto-square/README.md +100 -0
- data/tracks/ruby/exercises/custom-set/README.md +37 -0
- data/tracks/ruby/exercises/diamond/README.md +85 -0
- data/tracks/ruby/exercises/difference-of-squares/README.md +45 -0
- data/tracks/ruby/exercises/dominoes/README.md +44 -0
- data/tracks/ruby/exercises/etl/README.md +77 -0
- data/tracks/ruby/exercises/flatten-array/README.md +44 -0
- data/tracks/ruby/exercises/food-chain/README.md +96 -0
- data/tracks/ruby/exercises/gigasecond/README.md +37 -0
- data/tracks/ruby/exercises/grade-school/README.md +68 -0
- data/tracks/ruby/exercises/grains/README.md +60 -0
- data/tracks/ruby/exercises/hamming/README.md +68 -0
- data/tracks/ruby/exercises/hello-world/README.md +47 -0
- data/tracks/ruby/exercises/hexadecimal/README.md +40 -0
- data/tracks/ruby/exercises/house/README.md +139 -0
- data/tracks/ruby/exercises/isogram/README.md +45 -0
- data/tracks/ruby/exercises/kindergarten-garden/README.md +92 -0
- data/tracks/ruby/exercises/largest-series-product/README.md +46 -0
- data/tracks/ruby/exercises/leap/README.md +59 -0
- data/tracks/ruby/exercises/linked-list/README.md +60 -0
- data/tracks/ruby/exercises/list-ops/README.md +36 -0
- data/tracks/ruby/exercises/luhn/README.md +97 -0
- data/tracks/ruby/exercises/matrix/README.md +71 -0
- data/tracks/ruby/exercises/meetup/README.md +56 -0
- data/tracks/ruby/exercises/minesweeper/README.md +56 -0
- data/tracks/ruby/exercises/nth-prime/README.md +41 -0
- data/tracks/ruby/exercises/nucleotide-count/README.md +59 -0
- data/tracks/ruby/exercises/ocr-numbers/README.md +111 -0
- data/tracks/ruby/exercises/octal/README.md +75 -0
- data/tracks/ruby/exercises/palindrome-products/README.md +66 -0
- data/tracks/ruby/exercises/pangram/README.md +41 -0
- data/tracks/ruby/exercises/pascals-triangle/README.md +47 -0
- data/tracks/ruby/exercises/perfect-numbers/README.md +50 -0
- data/tracks/ruby/exercises/phone-number/README.md +60 -0
- data/tracks/ruby/exercises/pig-latin/README.md +50 -0
- data/tracks/ruby/exercises/point-mutations/README.md +67 -0
- data/tracks/ruby/exercises/poker/README.md +38 -0
- data/tracks/ruby/exercises/prime-factors/README.md +62 -0
- data/tracks/ruby/exercises/protein-translation/README.md +75 -0
- data/tracks/ruby/exercises/proverb/README.md +44 -0
- data/tracks/ruby/exercises/pythagorean-triplet/README.md +50 -0
- data/tracks/ruby/exercises/queen-attack/README.md +59 -0
- data/tracks/ruby/exercises/rail-fence-cipher/README.md +86 -0
- data/tracks/ruby/exercises/raindrops/README.md +50 -0
- data/tracks/ruby/exercises/rna-transcription/README.md +51 -0
- data/tracks/ruby/exercises/robot-name/README.md +57 -0
- data/tracks/ruby/exercises/robot-simulator/README.md +60 -0
- data/tracks/ruby/exercises/roman-numerals/README.md +75 -0
- data/tracks/ruby/exercises/run-length-encoding/README.md +56 -0
- data/tracks/ruby/exercises/saddle-points/README.md +59 -0
- data/tracks/ruby/exercises/say/README.md +95 -0
- data/tracks/ruby/exercises/scale-generator/README.md +86 -0
- data/tracks/ruby/exercises/scrabble-score/README.md +70 -0
- data/tracks/ruby/exercises/secret-handshake/README.md +61 -0
- data/tracks/ruby/exercises/series/README.md +53 -0
- data/tracks/ruby/exercises/sieve/README.md +60 -0
- data/tracks/ruby/exercises/simple-cipher/README.md +116 -0
- data/tracks/ruby/exercises/simple-linked-list/README.md +54 -0
- data/tracks/ruby/exercises/space-age/README.md +50 -0
- data/tracks/ruby/exercises/strain/README.md +66 -0
- data/tracks/ruby/exercises/sum-of-multiples/README.md +44 -0
- data/tracks/ruby/exercises/tournament/README.md +94 -0
- data/tracks/ruby/exercises/transpose/README.md +91 -0
- data/tracks/ruby/exercises/triangle/README.md +52 -0
- data/tracks/ruby/exercises/trinary/README.md +54 -0
- data/tracks/ruby/exercises/twelve-days/README.md +61 -0
- data/tracks/ruby/exercises/two-bucket/README.md +62 -0
- data/tracks/ruby/exercises/word-count/README.md +45 -0
- data/tracks/ruby/exercises/wordy/README.md +89 -0
- data/tracks/rust/README.md +3 -3
- data/tracks/rust/_test/WINDOWS_README.md +44 -0
- data/tracks/rust/config.json +9 -2
- data/tracks/rust/exercises/pig-latin/Cargo-example.toml +8 -0
- data/tracks/rust/exercises/pig-latin/Cargo.lock +4 -0
- data/tracks/rust/exercises/pig-latin/Cargo.toml +6 -0
- data/tracks/rust/exercises/pig-latin/README.md +56 -0
- data/tracks/rust/exercises/pig-latin/example.rs +28 -0
- data/tracks/rust/exercises/pig-latin/tests/pig-latin.rs +120 -0
- data/tracks/rust/problem_ordering.md +2 -2
- data/tracks/sml/config.json +0 -2
- data/tracks/swift/config/exercise_readme.go.tmpl +16 -0
- data/tracks/swift/config.json +304 -79
- data/tracks/swift/exercises/accumulate/README.md +43 -0
- data/tracks/swift/exercises/acronym/README.md +23 -0
- data/tracks/swift/exercises/all-your-base/README.md +43 -0
- data/tracks/swift/exercises/allergies/README.md +45 -0
- data/tracks/swift/exercises/anagram/README.md +21 -0
- data/tracks/swift/exercises/atbash-cipher/README.md +42 -0
- data/tracks/swift/exercises/beer-song/README.md +335 -0
- data/tracks/swift/exercises/binary/README.md +43 -0
- data/tracks/swift/exercises/binary-search/README.md +49 -0
- data/tracks/swift/exercises/binary-search-tree/README.md +68 -0
- data/tracks/swift/exercises/bob/README.md +26 -0
- data/tracks/swift/exercises/bowling/README.md +61 -0
- data/tracks/swift/exercises/bracket-push/README.md +18 -0
- data/tracks/swift/exercises/clock/README.md +21 -0
- data/tracks/swift/exercises/crypto-square/README.md +82 -0
- data/tracks/swift/exercises/custom-set/README.md +19 -0
- data/tracks/swift/exercises/difference-of-squares/README.md +27 -0
- data/tracks/swift/exercises/dominoes/README.md +26 -0
- data/tracks/swift/exercises/etl/README.md +59 -0
- data/tracks/swift/exercises/flatten-array/README.md +26 -0
- data/tracks/swift/exercises/food-chain/README.md +78 -0
- data/tracks/swift/exercises/gigasecond/README.md +19 -0
- data/tracks/swift/exercises/grade-school/README.md +50 -0
- data/tracks/swift/exercises/grains/README.md +42 -0
- data/tracks/swift/exercises/hamming/README.md +50 -0
- data/tracks/swift/exercises/hello-world/README.md +29 -0
- data/tracks/swift/exercises/hexadecimal/README.md +22 -0
- data/tracks/swift/exercises/house/README.md +121 -0
- data/tracks/swift/exercises/isogram/README.md +27 -0
- data/tracks/swift/exercises/kindergarten-garden/README.md +74 -0
- data/tracks/swift/exercises/largest-series-product/README.md +28 -0
- data/tracks/swift/exercises/leap/README.md +41 -0
- data/tracks/swift/exercises/linked-list/README.md +42 -0
- data/tracks/swift/exercises/luhn/README.md +79 -0
- data/tracks/swift/exercises/matrix/README.md +53 -0
- data/tracks/swift/exercises/meetup/README.md +38 -0
- data/tracks/swift/exercises/minesweeper/README.md +38 -0
- data/tracks/swift/exercises/nth-prime/README.md +23 -0
- data/tracks/swift/exercises/nucleotide-count/README.md +41 -0
- data/tracks/swift/exercises/ocr-numbers/README.md +93 -0
- data/tracks/swift/exercises/octal/README.md +57 -0
- data/tracks/swift/exercises/palindrome-products/README.md +48 -0
- data/tracks/swift/exercises/pangram/README.md +23 -0
- data/tracks/swift/exercises/pascals-triangle/README.md +29 -0
- data/tracks/swift/exercises/perfect-numbers/README.md +32 -0
- data/tracks/swift/exercises/phone-number/README.md +42 -0
- data/tracks/swift/exercises/pig-latin/README.md +32 -0
- data/tracks/swift/exercises/poker/README.md +20 -0
- data/tracks/swift/exercises/prime-factors/README.md +44 -0
- data/tracks/swift/exercises/pythagorean-triplet/README.md +32 -0
- data/tracks/swift/exercises/queen-attack/README.md +41 -0
- data/tracks/swift/exercises/raindrops/README.md +32 -0
- data/tracks/swift/exercises/rna-transcription/README.md +33 -0
- data/tracks/swift/exercises/robot-name/README.md +30 -0
- data/tracks/swift/exercises/robot-simulator/README.md +42 -0
- data/tracks/swift/exercises/roman-numerals/README.md +57 -0
- data/tracks/swift/exercises/run-length-encoding/README.md +38 -0
- data/tracks/swift/exercises/saddle-points/README.md +41 -0
- data/tracks/swift/exercises/scrabble-score/README.md +52 -0
- data/tracks/swift/exercises/secret-handshake/README.md +43 -0
- data/tracks/swift/exercises/series/README.md +35 -0
- data/tracks/swift/exercises/sieve/README.md +42 -0
- data/tracks/swift/exercises/simple-cipher/README.md +98 -0
- data/tracks/swift/exercises/simple-linked-list/README.md +36 -0
- data/tracks/swift/exercises/space-age/README.md +32 -0
- data/tracks/swift/exercises/strain/README.md +48 -0
- data/tracks/swift/exercises/sublist/README.md +29 -0
- data/tracks/swift/exercises/sum-of-multiples/README.md +26 -0
- data/tracks/swift/exercises/tournament/README.md +76 -0
- data/tracks/swift/exercises/transpose/README.md +73 -0
- data/tracks/swift/exercises/triangle/README.md +34 -0
- data/tracks/swift/exercises/trinary/README.md +36 -0
- data/tracks/swift/exercises/twelve-days/README.md +43 -0
- data/tracks/swift/exercises/word-count/README.md +27 -0
- data/tracks/swift/exercises/wordy/README.md +71 -0
- data/tracks/typescript/README.md +1 -1
- data/tracks/typescript/config.json +63 -3
- data/tracks/vimscript/config.json +0 -2
- metadata +371 -40
- data/tracks/erlang/exercises/atbash-cipher/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/bank-account/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/beer-song/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/bob/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/circular-buffer/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/clock/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/collatz-conjecture/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/difference-of-squares/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/etl/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/gigasecond/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/grade-school/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/grains/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/hamming/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/hello-world/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/largest-series-product/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/leap/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/luhn/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/meetup/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/nucleotide-count/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/parallel-letter-frequency/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/phone-number/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/rna-transcription/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/robot-simulator/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/roman-numerals/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/rotational-cipher/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/scrabble-score/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/series/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/space-age/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/spiral-matrix/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/strain/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/sum-of-multiples/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/triangle/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/word-count/.meta/readme.go.tmpl +0 -17
- data/tracks/erlang/exercises/zipper/.meta/readme.go.tmpl +0 -17
@@ -0,0 +1,83 @@
|
|
1
|
+
# Binary Search Tree
|
2
|
+
|
3
|
+
Insert and search for numbers in a binary tree.
|
4
|
+
|
5
|
+
When we need to represent sorted data, an array does not make a good
|
6
|
+
data structure.
|
7
|
+
|
8
|
+
Say we have the array `[1, 3, 4, 5]`, and we add 2 to it so it becomes
|
9
|
+
`[1, 3, 4, 5, 2]` now we must sort the entire array again! We can
|
10
|
+
improve on this by realizing that we only need to make space for the new
|
11
|
+
item `[1, nil, 3, 4, 5]`, and then adding the item in the space we
|
12
|
+
added. But this still requires us to shift many elements down by one.
|
13
|
+
|
14
|
+
Binary Search Trees, however, can operate on sorted data much more
|
15
|
+
efficiently.
|
16
|
+
|
17
|
+
A binary search tree consists of a series of connected nodes. Each node
|
18
|
+
contains a piece of data (e.g. the number 3), a variable named `left`,
|
19
|
+
and a variable named `right`. The `left` and `right` variables point at
|
20
|
+
`nil`, or other nodes. Since these other nodes in turn have other nodes
|
21
|
+
beneath them, we say that the left and right variables are pointing at
|
22
|
+
subtrees. All data in the left subtree is less than or equal to the
|
23
|
+
current node's data, and all data in the right subtree is greater than
|
24
|
+
the current node's data.
|
25
|
+
|
26
|
+
For example, if we had a node containing the data 4, and we added the
|
27
|
+
data 2, our tree would look like this:
|
28
|
+
|
29
|
+
4
|
30
|
+
/
|
31
|
+
2
|
32
|
+
|
33
|
+
If we then added 6, it would look like this:
|
34
|
+
|
35
|
+
4
|
36
|
+
/ \
|
37
|
+
2 6
|
38
|
+
|
39
|
+
If we then added 3, it would look like this
|
40
|
+
|
41
|
+
4
|
42
|
+
/ \
|
43
|
+
2 6
|
44
|
+
\
|
45
|
+
3
|
46
|
+
|
47
|
+
And if we then added 1, 5, and 7, it would look like this
|
48
|
+
|
49
|
+
4
|
50
|
+
/ \
|
51
|
+
/ \
|
52
|
+
2 6
|
53
|
+
/ \ / \
|
54
|
+
1 3 5 7
|
55
|
+
|
56
|
+
## Setup
|
57
|
+
|
58
|
+
Follow the setup instructions for Crystal here:
|
59
|
+
|
60
|
+
http://exercism.io/languages/crystal
|
61
|
+
|
62
|
+
More help installing can be found here:
|
63
|
+
|
64
|
+
http://crystal-lang.org/docs/installation/index.html
|
65
|
+
|
66
|
+
## Making the Test Suit Pass
|
67
|
+
|
68
|
+
Execute the tests with:
|
69
|
+
|
70
|
+
```bash
|
71
|
+
$ crystal spec
|
72
|
+
```
|
73
|
+
|
74
|
+
In each test suite all but the first test have been skipped.
|
75
|
+
|
76
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
77
|
+
|
78
|
+
## Source
|
79
|
+
|
80
|
+
Josh Cheek [https://twitter.com/josh_cheek](https://twitter.com/josh_cheek)
|
81
|
+
|
82
|
+
## Submitting Incomplete Solutions
|
83
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,41 @@
|
|
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
|
+
## Setup
|
15
|
+
|
16
|
+
Follow the setup instructions for Crystal here:
|
17
|
+
|
18
|
+
http://exercism.io/languages/crystal
|
19
|
+
|
20
|
+
More help installing can be found here:
|
21
|
+
|
22
|
+
http://crystal-lang.org/docs/installation/index.html
|
23
|
+
|
24
|
+
## Making the Test Suit Pass
|
25
|
+
|
26
|
+
Execute the tests with:
|
27
|
+
|
28
|
+
```bash
|
29
|
+
$ crystal spec
|
30
|
+
```
|
31
|
+
|
32
|
+
In each test suite all but the first test have been skipped.
|
33
|
+
|
34
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
35
|
+
|
36
|
+
## Source
|
37
|
+
|
38
|
+
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)
|
39
|
+
|
40
|
+
## Submitting Incomplete Solutions
|
41
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Bracket Push
|
2
|
+
|
3
|
+
Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
|
4
|
+
verify that all the pairs are matched and nested correctly.
|
5
|
+
|
6
|
+
## Setup
|
7
|
+
|
8
|
+
Follow the setup instructions for Crystal here:
|
9
|
+
|
10
|
+
http://exercism.io/languages/crystal
|
11
|
+
|
12
|
+
More help installing can be found here:
|
13
|
+
|
14
|
+
http://crystal-lang.org/docs/installation/index.html
|
15
|
+
|
16
|
+
## Making the Test Suit Pass
|
17
|
+
|
18
|
+
Execute the tests with:
|
19
|
+
|
20
|
+
```bash
|
21
|
+
$ crystal spec
|
22
|
+
```
|
23
|
+
|
24
|
+
In each test suite all but the first test have been skipped.
|
25
|
+
|
26
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
27
|
+
|
28
|
+
## Source
|
29
|
+
|
30
|
+
Ginna Baker
|
31
|
+
|
32
|
+
## Submitting Incomplete Solutions
|
33
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Difference Of Squares
|
2
|
+
|
3
|
+
Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
|
4
|
+
|
5
|
+
The square of the sum of the first ten natural numbers is
|
6
|
+
(1 + 2 + ... + 10)² = 55² = 3025.
|
7
|
+
|
8
|
+
The sum of the squares of the first ten natural numbers is
|
9
|
+
1² + 2² + ... + 10² = 385.
|
10
|
+
|
11
|
+
Hence the difference between the square of the sum of the first
|
12
|
+
ten natural numbers and the sum of the squares of the first ten
|
13
|
+
natural numbers is 3025 - 385 = 2640.
|
14
|
+
|
15
|
+
## Setup
|
16
|
+
|
17
|
+
Follow the setup instructions for Crystal here:
|
18
|
+
|
19
|
+
http://exercism.io/languages/crystal
|
20
|
+
|
21
|
+
More help installing can be found here:
|
22
|
+
|
23
|
+
http://crystal-lang.org/docs/installation/index.html
|
24
|
+
|
25
|
+
## Making the Test Suit Pass
|
26
|
+
|
27
|
+
Execute the tests with:
|
28
|
+
|
29
|
+
```bash
|
30
|
+
$ crystal spec
|
31
|
+
```
|
32
|
+
|
33
|
+
In each test suite all but the first test have been skipped.
|
34
|
+
|
35
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
36
|
+
|
37
|
+
## Source
|
38
|
+
|
39
|
+
Problem 6 at Project Euler [http://projecteuler.net/problem=6](http://projecteuler.net/problem=6)
|
40
|
+
|
41
|
+
## Submitting Incomplete Solutions
|
42
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Flatten Array
|
2
|
+
|
3
|
+
Take a nested list and return a single flattened list with all values except nil/null.
|
4
|
+
|
5
|
+
The challenge is to write a function that accepts an arbitrarily-deep nested list-like structure and returns a flattened structure without any nil/null values.
|
6
|
+
|
7
|
+
For Example
|
8
|
+
|
9
|
+
input: [1,[2,3,null,4],[null],5]
|
10
|
+
|
11
|
+
output: [1,2,3,4,5]
|
12
|
+
|
13
|
+
|
14
|
+
## Setup
|
15
|
+
|
16
|
+
Follow the setup instructions for Crystal here:
|
17
|
+
|
18
|
+
http://exercism.io/languages/crystal
|
19
|
+
|
20
|
+
More help installing can be found here:
|
21
|
+
|
22
|
+
http://crystal-lang.org/docs/installation/index.html
|
23
|
+
|
24
|
+
## Making the Test Suit Pass
|
25
|
+
|
26
|
+
Execute the tests with:
|
27
|
+
|
28
|
+
```bash
|
29
|
+
$ crystal spec
|
30
|
+
```
|
31
|
+
|
32
|
+
In each test suite all but the first test have been skipped.
|
33
|
+
|
34
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
35
|
+
|
36
|
+
## Source
|
37
|
+
|
38
|
+
Interview Question [https://reference.wolfram.com/language/ref/Flatten.html](https://reference.wolfram.com/language/ref/Flatten.html)
|
39
|
+
|
40
|
+
## Submitting Incomplete Solutions
|
41
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Forth
|
2
|
+
|
3
|
+
Implement an evaluator for a very simple subset of Forth.
|
4
|
+
|
5
|
+
[Forth](https://en.wikipedia.org/wiki/Forth_%28programming_language%29)
|
6
|
+
is a stack-based programming language. Implement a very basic evaluator
|
7
|
+
for a small subset of Forth.
|
8
|
+
|
9
|
+
Your evaluator has to support the following words:
|
10
|
+
|
11
|
+
- `+`, `-`, `*`, `/` (integer arithmetic)
|
12
|
+
- `DUP`, `DROP`, `SWAP`, `OVER` (stack manipulation)
|
13
|
+
|
14
|
+
Your evaluator also has to support defining new words using the
|
15
|
+
customary syntax: `: word-name definition ;`.
|
16
|
+
|
17
|
+
To keep things simple the only data type you need to support is signed
|
18
|
+
integers of at least 16 bits size.
|
19
|
+
|
20
|
+
You should use the following rules for the syntax: a number is a
|
21
|
+
sequence of one or more (ASCII) digits, a word is a sequence of one or
|
22
|
+
more letters, digits, symbols or punctuation that is not a number.
|
23
|
+
(Forth probably uses slightly different rules, but this is close
|
24
|
+
enough.)
|
25
|
+
|
26
|
+
Words are case-insensitive.
|
27
|
+
|
28
|
+
## Setup
|
29
|
+
|
30
|
+
Follow the setup instructions for Crystal here:
|
31
|
+
|
32
|
+
http://exercism.io/languages/crystal
|
33
|
+
|
34
|
+
More help installing can be found here:
|
35
|
+
|
36
|
+
http://crystal-lang.org/docs/installation/index.html
|
37
|
+
|
38
|
+
## Making the Test Suit Pass
|
39
|
+
|
40
|
+
Execute the tests with:
|
41
|
+
|
42
|
+
```bash
|
43
|
+
$ crystal spec
|
44
|
+
```
|
45
|
+
|
46
|
+
In each test suite all but the first test have been skipped.
|
47
|
+
|
48
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
49
|
+
|
50
|
+
|
51
|
+
## Submitting Incomplete Solutions
|
52
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Gigasecond
|
2
|
+
|
3
|
+
Calculate the moment when someone has lived for 10^9 seconds.
|
4
|
+
|
5
|
+
A gigasecond is 10^9 (1,000,000,000) seconds.
|
6
|
+
|
7
|
+
## Setup
|
8
|
+
|
9
|
+
Follow the setup instructions for Crystal here:
|
10
|
+
|
11
|
+
http://exercism.io/languages/crystal
|
12
|
+
|
13
|
+
More help installing can be found here:
|
14
|
+
|
15
|
+
http://crystal-lang.org/docs/installation/index.html
|
16
|
+
|
17
|
+
## Making the Test Suit Pass
|
18
|
+
|
19
|
+
Execute the tests with:
|
20
|
+
|
21
|
+
```bash
|
22
|
+
$ crystal spec
|
23
|
+
```
|
24
|
+
|
25
|
+
In each test suite all but the first test have been skipped.
|
26
|
+
|
27
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
28
|
+
|
29
|
+
## Source
|
30
|
+
|
31
|
+
Chapter 9 in Chris Pine's online Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=09](http://pine.fm/LearnToProgram/?Chapter=09)
|
32
|
+
|
33
|
+
## Submitting Incomplete Solutions
|
34
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Hamming
|
2
|
+
|
3
|
+
Calculate the Hamming difference between two DNA strands.
|
4
|
+
|
5
|
+
A mutation is simply a mistake that occurs during the creation or
|
6
|
+
copying of a nucleic acid, in particular DNA. Because nucleic acids are
|
7
|
+
vital to cellular functions, mutations tend to cause a ripple effect
|
8
|
+
throughout the cell. Although mutations are technically mistakes, a very
|
9
|
+
rare mutation may equip the cell with a beneficial attribute. In fact,
|
10
|
+
the macro effects of evolution are attributable by the accumulated
|
11
|
+
result of beneficial microscopic mutations over many generations.
|
12
|
+
|
13
|
+
The simplest and most common type of nucleic acid mutation is a point
|
14
|
+
mutation, which replaces one base with another at a single nucleotide.
|
15
|
+
|
16
|
+
By counting the number of differences between two homologous DNA strands
|
17
|
+
taken from different genomes with a common ancestor, we get a measure of
|
18
|
+
the minimum number of point mutations that could have occurred on the
|
19
|
+
evolutionary path between the two strands.
|
20
|
+
|
21
|
+
This is called the 'Hamming distance'.
|
22
|
+
|
23
|
+
It is found by comparing two DNA strands and counting how many of the
|
24
|
+
nucleotides are different from their equivalent in the other string.
|
25
|
+
|
26
|
+
GAGCCTACTAACGGGAT
|
27
|
+
CATCGTAATGACGGCCT
|
28
|
+
^ ^ ^ ^ ^ ^^
|
29
|
+
|
30
|
+
The Hamming distance between these two DNA strands is 7.
|
31
|
+
|
32
|
+
# Implementation notes
|
33
|
+
|
34
|
+
The Hamming distance is only defined for sequences of equal length. This means
|
35
|
+
that based on the definition, each language could deal with getting sequences
|
36
|
+
of equal length differently.
|
37
|
+
|
38
|
+
## Setup
|
39
|
+
|
40
|
+
Follow the setup instructions for Crystal here:
|
41
|
+
|
42
|
+
http://exercism.io/languages/crystal
|
43
|
+
|
44
|
+
More help installing can be found here:
|
45
|
+
|
46
|
+
http://crystal-lang.org/docs/installation/index.html
|
47
|
+
|
48
|
+
## Making the Test Suit Pass
|
49
|
+
|
50
|
+
Execute the tests with:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
$ crystal spec
|
54
|
+
```
|
55
|
+
|
56
|
+
In each test suite all but the first test have been skipped.
|
57
|
+
|
58
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
59
|
+
|
60
|
+
## Source
|
61
|
+
|
62
|
+
The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
|
63
|
+
|
64
|
+
## Submitting Incomplete Solutions
|
65
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Hello World
|
2
|
+
|
3
|
+
The classical introductory exercise. Just say "Hello, World!".
|
4
|
+
|
5
|
+
["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
|
6
|
+
the traditional first program for beginning programming in a new language
|
7
|
+
or environment.
|
8
|
+
|
9
|
+
The objectives are simple:
|
10
|
+
|
11
|
+
- Write a function that returns the string "Hello, World!".
|
12
|
+
- Run the test suite and make sure that it succeeds.
|
13
|
+
- Submit your solution and check it at the website.
|
14
|
+
|
15
|
+
If everything goes well, you will be ready to fetch your first real exercise.
|
16
|
+
|
17
|
+
## Project Structure
|
18
|
+
|
19
|
+
* `src` contains your solution to the exercise
|
20
|
+
* `spec` contains the tests to run for the exercise
|
21
|
+
|
22
|
+
## Running Tests
|
23
|
+
|
24
|
+
If you're in the right directory (i.e. the one containing `src` and `spec`), you can run the tests for that exercise by running `crystal spec`:
|
25
|
+
|
26
|
+
```bash
|
27
|
+
$ pwd
|
28
|
+
/Users/johndoe/Code/exercism/crystal/hello-world
|
29
|
+
|
30
|
+
$ ls
|
31
|
+
GETTING_STARTED.md README.md spec src
|
32
|
+
|
33
|
+
$ crystal spec
|
34
|
+
```
|
35
|
+
|
36
|
+
This will run all of the test files in the `spec` directory.
|
37
|
+
|
38
|
+
In each test file, all but the first test have been skipped.
|
39
|
+
|
40
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
41
|
+
|
42
|
+
## Submitting Your Solution
|
43
|
+
|
44
|
+
Be sure to submit the source file in the `src` directory when submitting your solution:
|
45
|
+
|
46
|
+
```bash
|
47
|
+
$ exercism submit src/hello_world.cr
|
48
|
+
```
|
49
|
+
|
50
|
+
|
51
|
+
## Setup
|
52
|
+
|
53
|
+
Follow the setup instructions for Crystal here:
|
54
|
+
|
55
|
+
http://exercism.io/languages/crystal
|
56
|
+
|
57
|
+
More help installing can be found here:
|
58
|
+
|
59
|
+
http://crystal-lang.org/docs/installation/index.html
|
60
|
+
|
61
|
+
## Making the Test Suit Pass
|
62
|
+
|
63
|
+
Execute the tests with:
|
64
|
+
|
65
|
+
```bash
|
66
|
+
$ crystal spec
|
67
|
+
```
|
68
|
+
|
69
|
+
In each test suite all but the first test have been skipped.
|
70
|
+
|
71
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
72
|
+
|
73
|
+
## Source
|
74
|
+
|
75
|
+
This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
|
76
|
+
|
77
|
+
## Submitting Incomplete Solutions
|
78
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Largest Series Product
|
2
|
+
|
3
|
+
Given a string of digits, calculate the largest product for a contiguous
|
4
|
+
substring of digits of length n.
|
5
|
+
|
6
|
+
For example, for the input `'1027839564'`, the largest product for a
|
7
|
+
series of 3 digits is 270 (9 * 5 * 6), and the largest product for a
|
8
|
+
series of 5 digits is 7560 (7 * 8 * 3 * 9 * 5).
|
9
|
+
|
10
|
+
Note that these series are only required to occupy *adjacent positions*
|
11
|
+
in the input; the digits need not be *numerically consecutive*.
|
12
|
+
|
13
|
+
For the input `'73167176531330624919225119674426574742355349194934'`,
|
14
|
+
the largest product for a series of 6 digits is 23520.
|
15
|
+
|
16
|
+
## Setup
|
17
|
+
|
18
|
+
Follow the setup instructions for Crystal here:
|
19
|
+
|
20
|
+
http://exercism.io/languages/crystal
|
21
|
+
|
22
|
+
More help installing can be found here:
|
23
|
+
|
24
|
+
http://crystal-lang.org/docs/installation/index.html
|
25
|
+
|
26
|
+
## Making the Test Suit Pass
|
27
|
+
|
28
|
+
Execute the tests with:
|
29
|
+
|
30
|
+
```bash
|
31
|
+
$ crystal spec
|
32
|
+
```
|
33
|
+
|
34
|
+
In each test suite all but the first test have been skipped.
|
35
|
+
|
36
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
37
|
+
|
38
|
+
## Source
|
39
|
+
|
40
|
+
A variation on Problem 8 at Project Euler [http://projecteuler.net/problem=8](http://projecteuler.net/problem=8)
|
41
|
+
|
42
|
+
## Submitting Incomplete Solutions
|
43
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Leap
|
2
|
+
|
3
|
+
Given a year, report if it is a leap year.
|
4
|
+
|
5
|
+
The tricky thing here is that a leap year in the Gregorian calendar occurs:
|
6
|
+
|
7
|
+
```plain
|
8
|
+
on every year that is evenly divisible by 4
|
9
|
+
except every year that is evenly divisible by 100
|
10
|
+
unless the year is also evenly divisible by 400
|
11
|
+
```
|
12
|
+
|
13
|
+
For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap
|
14
|
+
year, but 2000 is.
|
15
|
+
|
16
|
+
If your language provides a method in the standard library that does
|
17
|
+
this look-up, pretend it doesn't exist and implement it yourself.
|
18
|
+
|
19
|
+
## Notes
|
20
|
+
|
21
|
+
Though our exercise adopts some very simple rules, there is more to
|
22
|
+
learn!
|
23
|
+
|
24
|
+
For a delightful, four minute explanation of the whole leap year
|
25
|
+
phenomenon, go watch [this youtube video][video].
|
26
|
+
|
27
|
+
[video]: http://www.youtube.com/watch?v=xX96xng7sAE
|
28
|
+
|
29
|
+
## Setup
|
30
|
+
|
31
|
+
Follow the setup instructions for Crystal here:
|
32
|
+
|
33
|
+
http://exercism.io/languages/crystal
|
34
|
+
|
35
|
+
More help installing can be found here:
|
36
|
+
|
37
|
+
http://crystal-lang.org/docs/installation/index.html
|
38
|
+
|
39
|
+
## Making the Test Suit Pass
|
40
|
+
|
41
|
+
Execute the tests with:
|
42
|
+
|
43
|
+
```bash
|
44
|
+
$ crystal spec
|
45
|
+
```
|
46
|
+
|
47
|
+
In each test suite all but the first test have been skipped.
|
48
|
+
|
49
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
50
|
+
|
51
|
+
## Source
|
52
|
+
|
53
|
+
JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
|
54
|
+
|
55
|
+
## Submitting Incomplete Solutions
|
56
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Pangram
|
2
|
+
|
3
|
+
Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
|
4
|
+
"every letter") is a sentence using every letter of the alphabet at least once.
|
5
|
+
The best known English pangram is:
|
6
|
+
> The quick brown fox jumps over the lazy dog.
|
7
|
+
|
8
|
+
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
|
9
|
+
insensitive. Input will not contain non-ASCII symbols.
|
10
|
+
|
11
|
+
## Setup
|
12
|
+
|
13
|
+
Follow the setup instructions for Crystal here:
|
14
|
+
|
15
|
+
http://exercism.io/languages/crystal
|
16
|
+
|
17
|
+
More help installing can be found here:
|
18
|
+
|
19
|
+
http://crystal-lang.org/docs/installation/index.html
|
20
|
+
|
21
|
+
## Making the Test Suit Pass
|
22
|
+
|
23
|
+
Execute the tests with:
|
24
|
+
|
25
|
+
```bash
|
26
|
+
$ crystal spec
|
27
|
+
```
|
28
|
+
|
29
|
+
In each test suite all but the first test have been skipped.
|
30
|
+
|
31
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
32
|
+
|
33
|
+
## Source
|
34
|
+
|
35
|
+
Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
|
36
|
+
|
37
|
+
## Submitting Incomplete Solutions
|
38
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Pascals Triangle
|
2
|
+
|
3
|
+
Compute Pascal's triangle up to a given number of rows.
|
4
|
+
|
5
|
+
In Pascal's Triangle each number is computed by adding the numbers to
|
6
|
+
the right and left of the current position in the previous row.
|
7
|
+
|
8
|
+
```plain
|
9
|
+
1
|
10
|
+
1 1
|
11
|
+
1 2 1
|
12
|
+
1 3 3 1
|
13
|
+
1 4 6 4 1
|
14
|
+
# ... etc
|
15
|
+
```
|
16
|
+
|
17
|
+
## Setup
|
18
|
+
|
19
|
+
Follow the setup instructions for Crystal here:
|
20
|
+
|
21
|
+
http://exercism.io/languages/crystal
|
22
|
+
|
23
|
+
More help installing can be found here:
|
24
|
+
|
25
|
+
http://crystal-lang.org/docs/installation/index.html
|
26
|
+
|
27
|
+
## Making the Test Suit Pass
|
28
|
+
|
29
|
+
Execute the tests with:
|
30
|
+
|
31
|
+
```bash
|
32
|
+
$ crystal spec
|
33
|
+
```
|
34
|
+
|
35
|
+
In each test suite all but the first test have been skipped.
|
36
|
+
|
37
|
+
Once you get a test passing, you can unskip the next one by changing `pending` to `it`.
|
38
|
+
|
39
|
+
## Source
|
40
|
+
|
41
|
+
Pascal's Triangle at Wolfram Math World [http://mathworld.wolfram.com/PascalsTriangle.html](http://mathworld.wolfram.com/PascalsTriangle.html)
|
42
|
+
|
43
|
+
## Submitting Incomplete Solutions
|
44
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|