trackler 2.2.1.110 → 2.2.1.111
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/problem-specifications/exercises/house/canonical-data.json +28 -200
- data/problem-specifications/exercises/react/canonical-data.json +49 -2
- data/tracks/c/config.json +49 -0
- data/tracks/c/exercises/crypto-square/README.md +69 -0
- data/tracks/c/exercises/crypto-square/makefile +25 -0
- data/tracks/c/exercises/crypto-square/src/example.c +87 -0
- data/tracks/c/exercises/crypto-square/src/example.h +6 -0
- data/tracks/c/exercises/crypto-square/test/test_crypto_square.c +99 -0
- data/tracks/c/exercises/crypto-square/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/crypto-square/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/crypto-square/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/pig-latin/README.md +17 -0
- data/tracks/c/exercises/pig-latin/makefile +25 -0
- data/tracks/c/exercises/pig-latin/src/example.c +128 -0
- data/tracks/c/exercises/pig-latin/src/example.h +6 -0
- data/tracks/c/exercises/pig-latin/test/test_pig_latin.c +239 -0
- data/tracks/c/exercises/pig-latin/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/pig-latin/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/pig-latin/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/say/README.md +62 -0
- data/tracks/c/exercises/say/makefile +27 -0
- data/tracks/c/exercises/say/src/example.c +144 -0
- data/tracks/c/exercises/say/src/example.h +7 -0
- data/tracks/c/exercises/say/test/test_say.c +185 -0
- data/tracks/c/exercises/say/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/say/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/say/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/secret-handshake/README.md +28 -0
- data/tracks/c/exercises/secret-handshake/makefile +25 -0
- data/tracks/c/exercises/secret-handshake/src/example.c +60 -0
- data/tracks/c/exercises/secret-handshake/src/example.h +7 -0
- data/tracks/c/exercises/secret-handshake/test/test_secret_handshake.c +133 -0
- data/tracks/c/exercises/secret-handshake/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/secret-handshake/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/secret-handshake/test/vendor/unity_internals.h +701 -0
- data/tracks/coffeescript/config/exercise_readme.go.tmpl +7 -4
- data/tracks/coffeescript/exercises/accumulate/README.md +0 -3
- data/tracks/coffeescript/exercises/atbash-cipher/README.md +2 -1
- data/tracks/coffeescript/exercises/beer-song/README.md +2 -2
- data/tracks/coffeescript/exercises/binary/README.md +2 -0
- data/tracks/coffeescript/exercises/linked-list/README.md +10 -10
- data/tracks/coffeescript/exercises/luhn/README.md +7 -7
- data/tracks/coffeescript/exercises/nucleotide-count/README.md +8 -22
- data/tracks/coffeescript/exercises/palindrome-products/README.md +15 -16
- data/tracks/coffeescript/exercises/pascals-triangle/README.md +2 -2
- data/tracks/coffeescript/exercises/queen-attack/README.md +1 -1
- data/tracks/coffeescript/exercises/triangle/README.md +9 -6
- data/tracks/coffeescript/exercises/trinary/README.md +1 -1
- data/tracks/coffeescript/exercises/word-count/README.md +1 -2
- data/tracks/coffeescript/exercises/wordy/README.md +0 -5
- data/tracks/coq/config/exercise_readme.go.tmpl +23 -4
- data/tracks/coq/exercises/rna-transcription/README.md +2 -2
- data/tracks/cpp/config/exercise_readme.go.tmpl +31 -4
- data/tracks/cpp/exercises/allergies/README.md +0 -1
- data/tracks/cpp/exercises/atbash-cipher/README.md +2 -1
- data/tracks/cpp/exercises/beer-song/README.md +2 -2
- data/tracks/cpp/exercises/binary/README.md +2 -0
- data/tracks/cpp/exercises/crypto-square/README.md +10 -8
- data/tracks/cpp/exercises/etl/README.md +3 -1
- data/tracks/cpp/exercises/food-chain/README.md +1 -1
- data/tracks/cpp/exercises/grade-school/README.md +0 -1
- data/tracks/cpp/exercises/grains/README.md +0 -1
- data/tracks/cpp/exercises/leap/README.md +1 -1
- data/tracks/cpp/exercises/meetup/README.md +16 -13
- data/tracks/cpp/exercises/nucleotide-count/README.md +2 -4
- data/tracks/cpp/exercises/pangram/README.md +1 -1
- data/tracks/cpp/exercises/phone-number/README.md +4 -3
- data/tracks/cpp/exercises/queen-attack/README.md +1 -1
- data/tracks/cpp/exercises/rna-transcription/README.md +2 -2
- data/tracks/cpp/exercises/roman-numerals/README.md +1 -1
- data/tracks/cpp/exercises/scrabble-score/README.md +3 -1
- data/tracks/cpp/exercises/space-age/README.md +1 -2
- data/tracks/cpp/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/cpp/exercises/triangle/README.md +9 -6
- data/tracks/cpp/exercises/trinary/README.md +1 -1
- data/tracks/cpp/exercises/word-count/README.md +1 -2
- data/tracks/d/config/exercise_readme.go.tmpl +30 -4
- data/tracks/d/exercises/circular-buffer/README.md +13 -6
- data/tracks/d/exercises/crypto-square/README.md +10 -8
- data/tracks/d/exercises/etl/README.md +3 -1
- data/tracks/d/exercises/leap/README.md +1 -1
- data/tracks/d/exercises/nucleotide-count/README.md +8 -22
- data/tracks/d/exercises/pangram/README.md +1 -1
- data/tracks/d/exercises/react/README.md +0 -1
- data/tracks/d/exercises/rna-transcription/README.md +2 -2
- data/tracks/d/exercises/roman-numerals/README.md +1 -1
- data/tracks/d/exercises/triangle/README.md +9 -6
- data/tracks/ecmascript/config/exercise_readme.go.tmpl +29 -4
- data/tracks/ecmascript/exercises/accumulate/README.md +1 -4
- data/tracks/ecmascript/exercises/acronym/README.md +1 -2
- data/tracks/ecmascript/exercises/all-your-base/README.md +2 -3
- data/tracks/ecmascript/exercises/allergies/README.md +1 -2
- data/tracks/ecmascript/exercises/alphametics/README.md +3 -4
- data/tracks/ecmascript/exercises/anagram/README.md +1 -1
- data/tracks/ecmascript/exercises/atbash-cipher/README.md +3 -2
- data/tracks/ecmascript/exercises/beer-song/README.md +3 -3
- data/tracks/ecmascript/exercises/binary-search-tree/README.md +1 -1
- data/tracks/ecmascript/exercises/binary-search/README.md +1 -1
- data/tracks/ecmascript/exercises/binary/README.md +3 -1
- data/tracks/ecmascript/exercises/bowling/README.md +32 -15
- data/tracks/ecmascript/exercises/bracket-push/README.md +1 -1
- data/tracks/ecmascript/exercises/change/README.md +19 -10
- data/tracks/ecmascript/exercises/circular-buffer/README.md +14 -7
- data/tracks/ecmascript/exercises/clock/README.md +1 -1
- data/tracks/ecmascript/exercises/collatz-conjecture/README.md +5 -1
- data/tracks/ecmascript/exercises/complex-numbers/README.md +2 -2
- data/tracks/ecmascript/exercises/connect/README.md +2 -3
- data/tracks/ecmascript/exercises/crypto-square/README.md +11 -9
- data/tracks/ecmascript/exercises/custom-set/README.md +1 -2
- data/tracks/ecmascript/exercises/diamond/README.md +7 -7
- data/tracks/ecmascript/exercises/difference-of-squares/README.md +1 -1
- data/tracks/ecmascript/exercises/diffie-hellman/README.md +1 -1
- data/tracks/ecmascript/exercises/etl/README.md +4 -2
- data/tracks/ecmascript/exercises/flatten-array/README.md +2 -3
- data/tracks/ecmascript/exercises/food-chain/README.md +2 -2
- data/tracks/ecmascript/exercises/gigasecond/README.md +1 -1
- data/tracks/ecmascript/exercises/grade-school/README.md +1 -2
- data/tracks/ecmascript/exercises/grains/README.md +1 -2
- data/tracks/ecmascript/exercises/hamming/README.md +1 -1
- data/tracks/ecmascript/exercises/hello-world/README.md +1 -1
- data/tracks/ecmascript/exercises/hexadecimal/README.md +1 -1
- data/tracks/ecmascript/exercises/house/README.md +1 -5
- data/tracks/ecmascript/exercises/isbn-verifier/README.md +32 -17
- data/tracks/ecmascript/exercises/isogram/README.md +3 -2
- data/tracks/ecmascript/exercises/kindergarten-garden/README.md +14 -14
- data/tracks/ecmascript/exercises/largest-series-product/README.md +1 -1
- data/tracks/ecmascript/exercises/leap/README.md +2 -2
- data/tracks/ecmascript/exercises/linked-list/README.md +11 -11
- data/tracks/ecmascript/exercises/list-ops/README.md +1 -2
- data/tracks/ecmascript/exercises/luhn/README.md +8 -8
- data/tracks/ecmascript/exercises/matrix/README.md +7 -5
- data/tracks/ecmascript/exercises/meetup/README.md +17 -14
- data/tracks/ecmascript/exercises/minesweeper/README.md +1 -2
- data/tracks/ecmascript/exercises/nth-prime/README.md +1 -1
- data/tracks/ecmascript/exercises/ocr-numbers/README.md +7 -7
- data/tracks/ecmascript/exercises/octal/README.md +7 -3
- data/tracks/ecmascript/exercises/palindrome-products/README.md +16 -17
- data/tracks/ecmascript/exercises/pangram/README.md +2 -2
- data/tracks/ecmascript/exercises/pascals-triangle/README.md +3 -3
- data/tracks/ecmascript/exercises/perfect-numbers/README.md +3 -3
- data/tracks/ecmascript/exercises/phone-number/README.md +5 -4
- data/tracks/ecmascript/exercises/pig-latin/README.md +1 -1
- data/tracks/ecmascript/exercises/prime-factors/README.md +1 -1
- data/tracks/ecmascript/exercises/protein-translation/README.md +8 -8
- data/tracks/ecmascript/exercises/proverb/README.md +17 -27
- data/tracks/ecmascript/exercises/pythagorean-triplet/README.md +4 -4
- data/tracks/ecmascript/exercises/queen-attack/README.md +2 -2
- data/tracks/ecmascript/exercises/raindrops/README.md +1 -1
- data/tracks/ecmascript/exercises/react/README.md +8 -1
- data/tracks/ecmascript/exercises/rectangles/README.md +11 -10
- data/tracks/ecmascript/exercises/rna-transcription/README.md +3 -3
- data/tracks/ecmascript/exercises/robot-name/README.md +1 -1
- data/tracks/ecmascript/exercises/robot-simulator/README.md +1 -1
- data/tracks/ecmascript/exercises/roman-numerals/README.md +2 -2
- data/tracks/ecmascript/exercises/rotational-cipher/README.md +3 -2
- data/tracks/ecmascript/exercises/run-length-encoding/README.md +9 -8
- data/tracks/ecmascript/exercises/saddle-points/README.md +3 -3
- data/tracks/ecmascript/exercises/say/README.md +1 -1
- data/tracks/ecmascript/exercises/scrabble-score/README.md +4 -2
- data/tracks/ecmascript/exercises/secret-handshake/README.md +3 -3
- data/tracks/ecmascript/exercises/series/README.md +1 -1
- data/tracks/ecmascript/exercises/sieve/README.md +1 -1
- data/tracks/ecmascript/exercises/simple-cipher/README.md +6 -8
- data/tracks/ecmascript/exercises/simple-linked-list/README.md +2 -1
- data/tracks/ecmascript/exercises/space-age/README.md +2 -2
- data/tracks/ecmascript/exercises/spiral-matrix/README.md +4 -3
- data/tracks/ecmascript/exercises/strain/README.md +1 -1
- data/tracks/ecmascript/exercises/sublist/README.md +1 -1
- data/tracks/ecmascript/exercises/sum-of-multiples/README.md +4 -7
- data/tracks/ecmascript/exercises/transpose/README.md +3 -2
- data/tracks/ecmascript/exercises/triangle/README.md +10 -7
- data/tracks/ecmascript/exercises/trinary/README.md +2 -2
- data/tracks/ecmascript/exercises/twelve-days/README.md +3 -4
- data/tracks/ecmascript/exercises/two-bucket/README.md +11 -11
- data/tracks/ecmascript/exercises/two-fer/README.md +8 -6
- data/tracks/ecmascript/exercises/word-count/README.md +2 -3
- data/tracks/ecmascript/exercises/word-search/README.md +2 -1
- data/tracks/ecmascript/exercises/wordy/README.md +1 -6
- data/tracks/elixir/exercises/bob/bob_test.exs +1 -1
- data/tracks/elixir/exercises/bob/example.exs +13 -9
- data/tracks/elm/config.json +28 -0
- data/tracks/elm/config/exercise_readme.go.tmpl +3 -3
- data/tracks/elm/docs/INSTALLATION.md +6 -2
- data/tracks/elm/exercises/accumulate/README.md +3 -3
- data/tracks/elm/exercises/acronym/Acronym.elm +1 -0
- data/tracks/elm/exercises/acronym/Acronym.example.elm +22 -0
- data/tracks/elm/exercises/acronym/README.md +44 -0
- data/tracks/elm/exercises/acronym/elm-package.json +15 -0
- data/tracks/elm/exercises/acronym/tests/Tests.elm +35 -0
- data/tracks/elm/exercises/acronym/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/all-your-base/README.md +3 -3
- data/tracks/elm/exercises/allergies/README.md +3 -3
- data/tracks/elm/exercises/anagram/README.md +3 -3
- data/tracks/elm/exercises/atbash-cipher/README.md +3 -3
- data/tracks/elm/exercises/binary-search/README.md +3 -3
- data/tracks/elm/exercises/bob/README.md +3 -5
- data/tracks/elm/exercises/collatz-conjecture/README.md +3 -3
- data/tracks/elm/exercises/difference-of-squares/README.md +3 -3
- data/tracks/elm/exercises/etl/README.md +3 -3
- data/tracks/elm/exercises/gigasecond/README.md +3 -3
- data/tracks/elm/exercises/grade-school/README.md +3 -3
- data/tracks/elm/exercises/grains/README.md +3 -3
- data/tracks/elm/exercises/hamming/README.md +3 -3
- data/tracks/elm/exercises/hello-world/README.md +3 -3
- data/tracks/elm/exercises/isogram/README.md +3 -3
- data/tracks/elm/exercises/largest-series-product/README.md +3 -3
- data/tracks/elm/exercises/leap/README.md +3 -3
- data/tracks/elm/exercises/list-ops/README.md +3 -3
- data/tracks/elm/exercises/luhn/Luhn.elm +1 -0
- data/tracks/elm/exercises/luhn/Luhn.example.elm +51 -0
- data/tracks/elm/exercises/luhn/README.md +101 -0
- data/tracks/elm/exercises/luhn/elm-package.json +15 -0
- data/tracks/elm/exercises/luhn/tests/Tests.elm +62 -0
- data/tracks/elm/exercises/luhn/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/nucleotide-count/README.md +3 -3
- data/tracks/elm/exercises/pangram/.meta/description.md +7 -0
- data/tracks/elm/exercises/pangram/README.md +4 -4
- data/tracks/elm/exercises/pascals-triangle/README.md +3 -3
- data/tracks/elm/exercises/phone-number/README.md +3 -3
- data/tracks/elm/exercises/raindrops/README.md +3 -3
- data/tracks/elm/exercises/rna-transcription/README.md +4 -4
- data/tracks/elm/exercises/robot-simulator/README.md +3 -3
- data/tracks/elm/exercises/roman-numerals/README.md +3 -3
- data/tracks/elm/exercises/run-length-encoding/README.md +3 -3
- data/tracks/elm/exercises/say/README.md +3 -3
- data/tracks/elm/exercises/scrabble-score/README.md +3 -3
- data/tracks/elm/exercises/series/README.md +3 -3
- data/tracks/elm/exercises/space-age/README.md +3 -3
- data/tracks/elm/exercises/strain/README.md +3 -3
- data/tracks/elm/exercises/sublist/README.md +3 -3
- data/tracks/elm/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/elm/exercises/triangle/README.md +3 -3
- data/tracks/elm/exercises/twelve-days/README.md +65 -0
- data/tracks/elm/exercises/twelve-days/TwelveDays.elm +1 -0
- data/tracks/elm/exercises/twelve-days/TwelveDays.example.elm +148 -0
- data/tracks/elm/exercises/twelve-days/elm-package.json +14 -0
- data/tracks/elm/exercises/twelve-days/tests/Tests.elm +130 -0
- data/tracks/elm/exercises/twelve-days/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/word-count/README.md +3 -3
- data/tracks/elm/package-lock.json +2329 -0
- data/tracks/elm/package.json +6 -1
- data/tracks/erlang/config/exercise_readme.go.tmpl +42 -4
- data/tracks/erlang/exercises/accumulate/README.md +0 -3
- data/tracks/erlang/exercises/all-your-base/README.md +1 -2
- data/tracks/erlang/exercises/allergies/README.md +0 -1
- data/tracks/erlang/exercises/atbash-cipher/README.md +2 -1
- data/tracks/erlang/exercises/bank-account/README.md +0 -1
- data/tracks/erlang/exercises/beer-song/README.md +2 -2
- data/tracks/erlang/exercises/circular-buffer/README.md +13 -6
- data/tracks/erlang/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/erlang/exercises/custom-set/README.md +0 -1
- data/tracks/erlang/exercises/etl/README.md +3 -1
- data/tracks/erlang/exercises/grade-school/README.md +0 -1
- data/tracks/erlang/exercises/grains/README.md +0 -1
- data/tracks/erlang/exercises/isogram/README.md +5 -7
- data/tracks/erlang/exercises/leap/README.md +1 -1
- data/tracks/erlang/exercises/luhn/README.md +7 -7
- data/tracks/erlang/exercises/meetup/README.md +16 -13
- data/tracks/erlang/exercises/nucleotide-count/README.md +8 -22
- data/tracks/erlang/exercises/pangram/README.md +7 -9
- data/tracks/erlang/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/erlang/exercises/phone-number/README.md +4 -3
- data/tracks/erlang/exercises/raindrops/README.md +1 -1
- data/tracks/erlang/exercises/rna-transcription/README.md +2 -2
- data/tracks/erlang/exercises/roman-numerals/README.md +1 -1
- data/tracks/erlang/exercises/rotational-cipher/README.md +2 -1
- data/tracks/erlang/exercises/scrabble-score/README.md +3 -1
- data/tracks/erlang/exercises/sieve/README.md +26 -37
- data/tracks/erlang/exercises/space-age/README.md +1 -1
- data/tracks/erlang/exercises/spiral-matrix/README.md +2 -2
- data/tracks/erlang/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/erlang/exercises/triangle/README.md +9 -6
- data/tracks/erlang/exercises/two-fer/README.md +48 -5
- data/tracks/erlang/exercises/word-count/README.md +1 -2
- data/tracks/erlang/exercises/zipper/README.md +1 -2
- data/tracks/go/config.json +11 -0
- data/tracks/go/exercises/bowling/cases_test.go +17 -2
- data/tracks/go/exercises/grep/.meta/gen.go +9 -7
- data/tracks/go/exercises/grep/cases_test.go +2 -2
- data/tracks/go/exercises/scale-generator/.meta/gen.go +59 -0
- data/tracks/go/exercises/scale-generator/README.md +76 -0
- data/tracks/go/exercises/scale-generator/cases_test.go +117 -0
- data/tracks/go/exercises/scale-generator/example.go +62 -0
- data/tracks/go/exercises/scale-generator/scale_generator_test.go +24 -0
- data/tracks/haskell/.travis.yml +16 -0
- data/tracks/haskell/config.json +9 -0
- data/tracks/haskell/config/exercise_readme.go.tmpl +53 -4
- data/tracks/haskell/exercises/all-your-base/README.md +0 -1
- data/tracks/haskell/exercises/alphametics/README.md +0 -1
- data/tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs +2 -2
- data/tracks/haskell/exercises/bank-account/README.md +0 -1
- data/tracks/haskell/exercises/bank-account/examples/success-standard/src/BankAccount.hs +1 -1
- data/tracks/haskell/exercises/connect/README.md +0 -1
- data/tracks/haskell/exercises/custom-set/README.md +0 -1
- data/tracks/haskell/exercises/dominoes/README.md +0 -1
- data/tracks/haskell/exercises/forth/README.md +0 -1
- data/tracks/haskell/exercises/go-counting/README.md +0 -1
- data/tracks/haskell/exercises/lens-person/README.md +0 -1
- data/tracks/haskell/exercises/list-ops/README.md +0 -1
- data/tracks/haskell/exercises/minesweeper/README.md +0 -1
- data/tracks/haskell/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/haskell/exercises/sgf-parsing/README.md +0 -1
- data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs +2 -3
- data/tracks/haskell/exercises/sublist/README.md +0 -1
- data/tracks/haskell/exercises/transpose/README.md +119 -0
- data/tracks/haskell/exercises/transpose/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/transpose/examples/success-standard/src/Transpose.hs +16 -0
- data/tracks/haskell/exercises/transpose/package.yaml +20 -0
- data/tracks/haskell/exercises/transpose/src/Transpose.hs +4 -0
- data/tracks/haskell/exercises/transpose/stack.yaml +1 -0
- data/tracks/haskell/exercises/transpose/test/Tests.hs +181 -0
- data/tracks/haskell/exercises/zipper/README.md +0 -1
- data/tracks/java/config.json +38 -0
- data/tracks/java/exercises/atbash-cipher/.meta/version +1 -1
- data/tracks/java/exercises/collatz-conjecture/.meta/version +1 -1
- data/tracks/java/exercises/diffie-hellman/.meta/hints.md +3 -0
- data/tracks/java/exercises/diffie-hellman/.meta/src/reference/java/DiffieHellman.java +24 -0
- data/tracks/java/exercises/diffie-hellman/README.md +63 -0
- data/tracks/java/exercises/diffie-hellman/build.gradle +19 -0
- data/tracks/java/exercises/diffie-hellman/src/main/java/.keep +0 -0
- data/tracks/java/exercises/diffie-hellman/src/test/java/DiffieHellmanTest.java +98 -0
- data/tracks/java/exercises/error-handling/.meta/hints.md +35 -0
- data/tracks/java/exercises/error-handling/.meta/src/reference/java/CustomCheckedException.java +11 -0
- data/tracks/java/exercises/error-handling/.meta/src/reference/java/CustomUncheckedException.java +11 -0
- data/tracks/java/exercises/error-handling/.meta/src/reference/java/ErrorHandling.java +63 -0
- data/tracks/java/exercises/error-handling/README.md +24 -0
- data/tracks/java/exercises/error-handling/build.gradle +18 -0
- data/tracks/java/exercises/error-handling/src/main/java/CustomCheckedException.java +11 -0
- data/tracks/java/exercises/error-handling/src/main/java/CustomUncheckedException.java +11 -0
- data/tracks/java/exercises/error-handling/src/main/java/ErrorHandling.java +49 -0
- data/tracks/java/exercises/error-handling/src/test/java/ErrorHandlingTest.java +116 -0
- data/tracks/java/exercises/flatten-array/.meta/version +1 -1
- data/tracks/java/exercises/nth-prime/.meta/version +1 -1
- data/tracks/java/exercises/pig-latin/README.md +4 -4
- data/tracks/java/exercises/protein-translation/.meta/version +1 -1
- data/tracks/java/exercises/saddle-points/.meta/version +1 -1
- data/tracks/java/exercises/settings.gradle +3 -0
- data/tracks/java/exercises/variable-length-quantity/.meta/src/reference/java/VariableLengthQuantity.java +53 -0
- data/tracks/java/exercises/variable-length-quantity/.meta/version +1 -0
- data/tracks/java/exercises/variable-length-quantity/README.md +50 -0
- data/tracks/java/exercises/variable-length-quantity/build.gradle +18 -0
- data/tracks/java/exercises/variable-length-quantity/src/main/java/VariableLengthQuantity.java +12 -0
- data/tracks/java/exercises/variable-length-quantity/src/test/java/VariableLengthQuantityTest.java +265 -0
- data/tracks/java/exercises/word-count/.meta/version +1 -1
- data/tracks/javascript/.eslintignore +0 -6
- data/tracks/javascript/config.json +47 -0
- data/tracks/javascript/exercises/bowling/bowling.spec.js +105 -41
- data/tracks/javascript/exercises/bowling/example.js +112 -59
- data/tracks/javascript/exercises/custom-set/example-gen.js +4 -4
- data/tracks/javascript/exercises/flatten-array/example.js +6 -5
- data/tracks/javascript/exercises/flatten-array/flatten-array.spec.js +15 -15
- data/tracks/javascript/exercises/grade-school/example.js +6 -6
- data/tracks/javascript/exercises/kindergarten-garden/example.js +9 -9
- data/tracks/javascript/exercises/nth-prime/example.js +6 -6
- data/tracks/javascript/exercises/perfect-numbers/example.js +6 -2
- data/tracks/javascript/exercises/queen-attack/example.js +5 -5
- data/tracks/javascript/exercises/queen-attack/queen-attack.spec.js +11 -9
- data/tracks/javascript/exercises/rational-numbers/README.md +62 -0
- data/tracks/javascript/exercises/rational-numbers/example.js +69 -0
- data/tracks/javascript/exercises/rational-numbers/rational-numbers.spec.js +197 -0
- data/tracks/javascript/exercises/rectangles/README.md +91 -0
- data/tracks/javascript/exercises/rectangles/example.js +66 -0
- data/tracks/javascript/exercises/rectangles/rectangles.spec.js +108 -0
- data/tracks/javascript/exercises/rotational-cipher/README.md +64 -0
- data/tracks/javascript/exercises/rotational-cipher/example.js +24 -0
- data/tracks/javascript/exercises/rotational-cipher/rotational-cipher.spec.js +55 -0
- data/tracks/javascript/exercises/secret-handshake/example.js +1 -2
- data/tracks/javascript/exercises/secret-handshake/secret-handshake.spec.js +2 -1
- data/tracks/javascript/exercises/simple-linked-list/example.js +10 -6
- data/tracks/javascript/exercises/simple-linked-list/simple-linked-list.spec.js +6 -3
- data/tracks/javascript/exercises/variable-length-quantity/README.md +62 -0
- data/tracks/javascript/exercises/variable-length-quantity/example.js +51 -0
- data/tracks/javascript/exercises/variable-length-quantity/variable-length-quantity.spec.js +115 -0
- data/tracks/javascript/package.json +4 -2
- data/tracks/lfe/config/exercise_readme.go.tmpl +15 -4
- data/tracks/lfe/exercises/accumulate/README.md +0 -3
- data/tracks/lfe/exercises/allergies/README.md +0 -1
- data/tracks/lfe/exercises/atbash-cipher/README.md +2 -1
- data/tracks/lfe/exercises/bank-account/README.md +0 -1
- data/tracks/lfe/exercises/beer-song/README.md +2 -2
- data/tracks/lfe/exercises/binary/README.md +2 -0
- data/tracks/lfe/exercises/circular-buffer/README.md +13 -6
- data/tracks/lfe/exercises/etl/README.md +3 -1
- data/tracks/lfe/exercises/grade-school/README.md +0 -1
- data/tracks/lfe/exercises/grains/README.md +0 -1
- data/tracks/lfe/exercises/leap/README.md +1 -1
- data/tracks/lfe/exercises/luhn/README.md +7 -7
- data/tracks/lfe/exercises/meetup/README.md +16 -13
- data/tracks/lfe/exercises/nucleotide-count/README.md +8 -22
- data/tracks/lfe/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/lfe/exercises/phone-number/README.md +4 -3
- data/tracks/lfe/exercises/rna-transcription/README.md +2 -2
- data/tracks/lfe/exercises/space-age/README.md +1 -1
- data/tracks/lfe/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/lfe/exercises/trinary/README.md +1 -1
- data/tracks/lfe/exercises/word-count/README.md +1 -2
- data/tracks/objective-c/config.json +11 -0
- data/tracks/objective-c/exercises/prime-factors/PrimeFactorsExample.h +9 -0
- data/tracks/objective-c/exercises/prime-factors/PrimeFactorsExample.m +24 -0
- data/tracks/objective-c/exercises/prime-factors/PrimeFactorsTest.m +67 -0
- data/tracks/objective-c/exercises/prime-factors/README.md +58 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/ocaml/README.md +11 -2
- data/tracks/ocaml/docs/INSTALLATION.md +4 -4
- data/tracks/ocaml/docs/LEARNING.md +4 -2
- data/tracks/ocaml/docs/TESTS.md +7 -14
- data/tracks/ocaml/exercises/acronym/Makefile +4 -6
- data/tracks/ocaml/exercises/acronym/example.ml +2 -2
- data/tracks/ocaml/exercises/acronym/jbuild +11 -0
- data/tracks/ocaml/exercises/acronym/test.ml +1 -2
- data/tracks/ocaml/exercises/all-your-base/Makefile +4 -6
- data/tracks/ocaml/exercises/all-your-base/example.ml +1 -1
- data/tracks/ocaml/exercises/all-your-base/jbuild +11 -0
- data/tracks/ocaml/exercises/all-your-base/test.ml +1 -2
- data/tracks/ocaml/exercises/anagram/Makefile +4 -6
- data/tracks/ocaml/exercises/anagram/example.ml +2 -2
- data/tracks/ocaml/exercises/anagram/jbuild +11 -0
- data/tracks/ocaml/exercises/anagram/test.ml +2 -2
- data/tracks/ocaml/exercises/atbash-cipher/Makefile +4 -6
- data/tracks/ocaml/exercises/atbash-cipher/example.ml +1 -1
- data/tracks/ocaml/exercises/atbash-cipher/jbuild +11 -0
- data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -2
- data/tracks/ocaml/exercises/beer-song/Makefile +4 -6
- data/tracks/ocaml/exercises/beer-song/example.ml +3 -3
- data/tracks/ocaml/exercises/beer-song/jbuild +11 -0
- data/tracks/ocaml/exercises/beer-song/test.ml +3 -3
- data/tracks/ocaml/exercises/binary-search/Makefile +4 -6
- data/tracks/ocaml/exercises/binary-search/example.ml +1 -1
- data/tracks/ocaml/exercises/binary-search/jbuild +11 -0
- data/tracks/ocaml/exercises/binary-search/test.ml +1 -2
- data/tracks/ocaml/exercises/bob/Makefile +4 -6
- data/tracks/ocaml/exercises/bob/example.ml +2 -2
- data/tracks/ocaml/exercises/bob/jbuild +11 -0
- data/tracks/ocaml/exercises/bowling/Makefile +4 -6
- data/tracks/ocaml/exercises/bowling/bowling.mli +1 -1
- data/tracks/ocaml/exercises/bowling/example.ml +1 -1
- data/tracks/ocaml/exercises/bowling/jbuild +11 -0
- data/tracks/ocaml/exercises/bowling/test.ml +1 -1
- data/tracks/ocaml/exercises/bracket-push/Makefile +4 -6
- data/tracks/ocaml/exercises/bracket-push/example.ml +2 -2
- data/tracks/ocaml/exercises/bracket-push/jbuild +11 -0
- data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
- data/tracks/ocaml/exercises/change/Makefile +4 -6
- data/tracks/ocaml/exercises/change/example.ml +1 -1
- data/tracks/ocaml/exercises/change/jbuild +11 -0
- data/tracks/ocaml/exercises/change/test.ml +2 -2
- data/tracks/ocaml/exercises/connect/Makefile +4 -10
- data/tracks/ocaml/exercises/connect/example.ml +23 -17
- data/tracks/ocaml/exercises/connect/jbuild +11 -0
- data/tracks/ocaml/exercises/connect/test.ml +1 -1
- data/tracks/ocaml/exercises/custom-set/Makefile +4 -6
- data/tracks/ocaml/exercises/custom-set/jbuild +11 -0
- data/tracks/ocaml/exercises/difference-of-squares/Makefile +4 -6
- data/tracks/ocaml/exercises/difference-of-squares/example.ml +1 -1
- data/tracks/ocaml/exercises/difference-of-squares/jbuild +11 -0
- data/tracks/ocaml/exercises/difference-of-squares/test.ml +0 -1
- data/tracks/ocaml/exercises/dominoes/Makefile +4 -6
- data/tracks/ocaml/exercises/dominoes/example.ml +1 -1
- data/tracks/ocaml/exercises/dominoes/jbuild +11 -0
- data/tracks/ocaml/exercises/dominoes/test.ml +9 -4
- data/tracks/ocaml/exercises/etl/Makefile +4 -6
- data/tracks/ocaml/exercises/etl/example.ml +1 -1
- data/tracks/ocaml/exercises/etl/jbuild +11 -0
- data/tracks/ocaml/exercises/etl/test.ml +1 -3
- data/tracks/ocaml/exercises/forth/Makefile +4 -6
- data/tracks/ocaml/exercises/forth/example.ml +7 -4
- data/tracks/ocaml/exercises/forth/jbuild +11 -0
- data/tracks/ocaml/exercises/forth/test.ml +1 -1
- data/tracks/ocaml/exercises/grade-school/Makefile +4 -6
- data/tracks/ocaml/exercises/grade-school/example.ml +5 -6
- data/tracks/ocaml/exercises/grade-school/grade_school.mli +1 -6
- data/tracks/ocaml/exercises/grade-school/jbuild +11 -0
- data/tracks/ocaml/exercises/grade-school/test.ml +24 -56
- data/tracks/ocaml/exercises/hamming/Makefile +4 -6
- data/tracks/ocaml/exercises/hamming/example.ml +9 -2
- data/tracks/ocaml/exercises/hamming/jbuild +11 -0
- data/tracks/ocaml/exercises/hamming/test.ml +6 -6
- data/tracks/ocaml/exercises/hangman/Makefile +4 -6
- data/tracks/ocaml/exercises/hangman/example.ml +1 -1
- data/tracks/ocaml/exercises/hangman/jbuild +11 -0
- data/tracks/ocaml/exercises/hangman/test.ml +0 -1
- data/tracks/ocaml/exercises/hello-world/Makefile +4 -6
- data/tracks/ocaml/exercises/hello-world/jbuild +11 -0
- data/tracks/ocaml/exercises/hello-world/test.ml +1 -2
- data/tracks/ocaml/exercises/hexadecimal/Makefile +4 -6
- data/tracks/ocaml/exercises/hexadecimal/example.ml +2 -2
- data/tracks/ocaml/exercises/hexadecimal/jbuild +11 -0
- data/tracks/ocaml/exercises/hexadecimal/test.ml +1 -1
- data/tracks/ocaml/exercises/leap/Makefile +4 -6
- data/tracks/ocaml/exercises/leap/jbuild +11 -0
- data/tracks/ocaml/exercises/leap/test.ml +1 -2
- data/tracks/ocaml/exercises/list-ops/Makefile +4 -6
- data/tracks/ocaml/exercises/list-ops/jbuild +11 -0
- data/tracks/ocaml/exercises/list-ops/test.ml +2 -2
- data/tracks/ocaml/exercises/luhn/Makefile +4 -6
- data/tracks/ocaml/exercises/luhn/example.ml +2 -2
- data/tracks/ocaml/exercises/luhn/jbuild +11 -0
- data/tracks/ocaml/exercises/luhn/test.ml +1 -1
- data/tracks/ocaml/exercises/meetup/Makefile +4 -6
- data/tracks/ocaml/exercises/meetup/example.ml +1 -1
- data/tracks/ocaml/exercises/meetup/jbuild +11 -0
- data/tracks/ocaml/exercises/meetup/test.ml +1 -1
- data/tracks/ocaml/exercises/minesweeper/Makefile +4 -6
- data/tracks/ocaml/exercises/minesweeper/example.ml +2 -2
- data/tracks/ocaml/exercises/minesweeper/jbuild +11 -0
- data/tracks/ocaml/exercises/minesweeper/test.ml +1 -1
- data/tracks/ocaml/exercises/nucleotide-count/Makefile +4 -6
- data/tracks/ocaml/exercises/nucleotide-count/example.ml +1 -1
- data/tracks/ocaml/exercises/nucleotide-count/jbuild +11 -0
- data/tracks/ocaml/exercises/nucleotide-count/nucleotide_count.mli +1 -1
- data/tracks/ocaml/exercises/nucleotide-count/test.ml +1 -1
- data/tracks/ocaml/exercises/palindrome-products/Makefile +4 -6
- data/tracks/ocaml/exercises/palindrome-products/example.ml +5 -5
- data/tracks/ocaml/exercises/palindrome-products/jbuild +12 -0
- data/tracks/ocaml/exercises/pangram/Makefile +4 -6
- data/tracks/ocaml/exercises/pangram/example.ml +15 -6
- data/tracks/ocaml/exercises/pangram/jbuild +11 -0
- data/tracks/ocaml/exercises/pangram/test.ml +1 -2
- data/tracks/ocaml/exercises/phone-number/Makefile +4 -6
- data/tracks/ocaml/exercises/phone-number/example.ml +5 -5
- data/tracks/ocaml/exercises/phone-number/jbuild +11 -0
- data/tracks/ocaml/exercises/phone-number/test.ml +2 -2
- data/tracks/ocaml/exercises/prime-factors/Makefile +4 -6
- data/tracks/ocaml/exercises/prime-factors/example.ml +2 -2
- data/tracks/ocaml/exercises/prime-factors/jbuild +11 -0
- data/tracks/ocaml/exercises/prime-factors/test.ml +2 -2
- data/tracks/ocaml/exercises/raindrops/Makefile +4 -6
- data/tracks/ocaml/exercises/raindrops/example.ml +0 -2
- data/tracks/ocaml/exercises/raindrops/jbuild +11 -0
- data/tracks/ocaml/exercises/raindrops/test.ml +1 -2
- data/tracks/ocaml/exercises/react/Makefile +4 -6
- data/tracks/ocaml/exercises/react/example.ml +1 -1
- data/tracks/ocaml/exercises/react/jbuild +11 -0
- data/tracks/ocaml/exercises/react/test.ml +1 -1
- data/tracks/ocaml/exercises/rectangles/Makefile +4 -6
- data/tracks/ocaml/exercises/rectangles/jbuild +11 -0
- data/tracks/ocaml/exercises/rectangles/test.ml +1 -2
- data/tracks/ocaml/exercises/rna-transcription/Makefile +4 -6
- data/tracks/ocaml/exercises/rna-transcription/example.ml +1 -3
- data/tracks/ocaml/exercises/rna-transcription/jbuild +11 -0
- data/tracks/ocaml/exercises/rna-transcription/test.ml +1 -1
- data/tracks/ocaml/exercises/robot-name/Makefile +4 -6
- data/tracks/ocaml/exercises/robot-name/example.ml +2 -2
- data/tracks/ocaml/exercises/robot-name/jbuild +11 -0
- data/tracks/ocaml/exercises/robot-name/test.ml +6 -5
- data/tracks/ocaml/exercises/roman-numerals/Makefile +4 -6
- data/tracks/ocaml/exercises/roman-numerals/jbuild +11 -0
- data/tracks/ocaml/exercises/roman-numerals/test.ml +1 -2
- data/tracks/ocaml/exercises/run-length-encoding/Makefile +4 -6
- data/tracks/ocaml/exercises/run-length-encoding/example.ml +3 -3
- data/tracks/ocaml/exercises/run-length-encoding/jbuild +11 -0
- data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
- data/tracks/ocaml/exercises/say/Makefile +4 -6
- data/tracks/ocaml/exercises/say/example.ml +2 -2
- data/tracks/ocaml/exercises/say/jbuild +11 -0
- data/tracks/ocaml/exercises/say/test.ml +1 -1
- data/tracks/ocaml/exercises/space-age/Makefile +4 -6
- data/tracks/ocaml/exercises/space-age/example.ml +1 -1
- data/tracks/ocaml/exercises/space-age/jbuild +11 -0
- data/tracks/ocaml/exercises/space-age/test.ml +2 -2
- data/tracks/ocaml/exercises/triangle/Makefile +4 -6
- data/tracks/ocaml/exercises/triangle/example.ml +1 -1
- data/tracks/ocaml/exercises/triangle/jbuild +11 -0
- data/tracks/ocaml/exercises/triangle/test.ml +1 -1
- data/tracks/ocaml/exercises/word-count/Makefile +4 -6
- data/tracks/ocaml/exercises/word-count/example.ml +1 -1
- data/tracks/ocaml/exercises/word-count/jbuild +11 -0
- data/tracks/ocaml/exercises/word-count/test.ml +1 -1
- data/tracks/ocaml/exercises/word-count/word_count.mli +1 -1
- data/tracks/ocaml/exercises/zipper/Makefile +4 -6
- data/tracks/ocaml/exercises/zipper/example.ml +1 -1
- data/tracks/ocaml/exercises/zipper/jbuild +12 -0
- data/tracks/ocaml/exercises/zipper/test.ml +1 -1
- data/tracks/ocaml/exercises/zipper/tree.ml +1 -1
- data/tracks/ocaml/exercises/zipper/tree.mli +1 -1
- data/tracks/ocaml/exercises/zipper/zipper.mli +1 -1
- data/tracks/ocaml/tools/test-generator/Makefile +4 -13
- data/tracks/ocaml/tools/test-generator/jbuild +11 -0
- data/tracks/perl5/exercises/bob/.meta/exercise-data.yaml +9 -10
- data/tracks/perl5/exercises/bob/.meta/solutions/Bob.pm +7 -7
- data/tracks/perl5/exercises/bob/Bob.pm +1 -1
- data/tracks/perl5/exercises/bob/bob.t +81 -44
- data/tracks/perl5/exercises/clock/.meta/exercise-data.yaml +82 -0
- data/tracks/perl5/exercises/clock/.meta/solutions/Clock.pm +25 -52
- data/tracks/perl5/exercises/clock/Clock.pm +22 -0
- data/tracks/perl5/exercises/clock/clock.t +628 -92
- data/tracks/perl5/exercises/hello-world/.meta/exercise-data.yaml +1 -2
- data/tracks/perl5/exercises/hello-world/hello-world.t +4 -16
- data/tracks/perl5/exercises/leap/.meta/exercise-data.yaml +2 -3
- data/tracks/perl5/exercises/leap/leap.t +16 -21
- data/tracks/perl5/exercises/luhn/.meta/exercise-data.yaml +2 -2
- data/tracks/perl5/exercises/luhn/luhn.t +44 -30
- data/tracks/perl5/exercises/phone-number/.meta/exercise-data.yaml +3 -3
- data/tracks/perl5/exercises/phone-number/.meta/solutions/PhoneNumber.pm +1 -1
- data/tracks/perl5/exercises/phone-number/PhoneNumber.pm +1 -1
- data/tracks/perl5/exercises/phone-number/phone-number.t +59 -31
- data/tracks/perl6/exercises/all-your-base/.meta/exercise-data.yaml +1 -1
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +45 -45
- data/tracks/plsql/config/exercise_readme.go.tmpl +19 -4
- data/tracks/plsql/exercises/binary/README.md +2 -0
- data/tracks/plsql/exercises/grains/README.md +0 -1
- data/tracks/plsql/exercises/leap/README.md +1 -1
- data/tracks/plsql/exercises/rna-transcription/README.md +2 -2
- data/tracks/plsql/exercises/roman-numerals/README.md +1 -1
- data/tracks/prolog/config.json +30 -0
- data/tracks/prolog/config/maintainers.json +10 -0
- data/tracks/prolog/docs/INSTALLATION.md +4 -4
- data/tracks/prolog/docs/LEARNING.md +1 -0
- data/tracks/prolog/docs/TESTS.md +1 -1
- data/tracks/prolog/exercises/complex-numbers/README.md +38 -0
- data/tracks/prolog/exercises/complex-numbers/complex_numbers.example +14 -0
- data/tracks/prolog/exercises/complex-numbers/complex_numbers.pl +11 -0
- data/tracks/prolog/exercises/complex-numbers/complex_numbers_tests.plt +123 -0
- data/tracks/prolog/exercises/hello-world/README.md +1 -1
- data/tracks/prolog/exercises/hello-world/hello_world.pl +1 -1
- data/tracks/prolog/exercises/hello-world/hello_world_tests.plt +1 -1
- data/tracks/prolog/exercises/isogram/README.md +19 -0
- data/tracks/prolog/exercises/isogram/isogram.example +10 -0
- data/tracks/prolog/exercises/isogram/isogram.pl +1 -0
- data/tracks/prolog/exercises/isogram/isogram_tests.plt +39 -0
- data/tracks/prolog/exercises/queen-attack/README.md +32 -0
- data/tracks/prolog/exercises/queen-attack/queen_attack.example +12 -0
- data/tracks/prolog/exercises/queen-attack/queen_attack.pl +11 -0
- data/tracks/prolog/exercises/queen-attack/queen_attack_tests.plt +62 -0
- data/tracks/python/config/exercise_readme.go.tmpl +20 -1
- data/tracks/python/exercises/accumulate/README.md +20 -1
- data/tracks/python/exercises/acronym/README.md +20 -1
- data/tracks/python/exercises/all-your-base/README.md +20 -1
- data/tracks/python/exercises/allergies/README.md +20 -1
- data/tracks/python/exercises/alphametics/README.md +20 -1
- data/tracks/python/exercises/anagram/README.md +20 -1
- data/tracks/python/exercises/armstrong-numbers/README.md +20 -1
- data/tracks/python/exercises/atbash-cipher/README.md +20 -1
- data/tracks/python/exercises/beer-song/README.md +20 -1
- data/tracks/python/exercises/binary-search-tree/README.md +20 -1
- data/tracks/python/exercises/binary-search/README.md +20 -1
- data/tracks/python/exercises/binary/README.md +20 -1
- data/tracks/python/exercises/bob/README.md +20 -1
- data/tracks/python/exercises/book-store/README.md +20 -1
- data/tracks/python/exercises/bowling/README.md +20 -1
- data/tracks/python/exercises/bracket-push/README.md +20 -1
- data/tracks/python/exercises/change/README.md +20 -1
- data/tracks/python/exercises/circular-buffer/README.md +20 -1
- data/tracks/python/exercises/clock/README.md +20 -1
- data/tracks/python/exercises/collatz-conjecture/README.md +20 -1
- data/tracks/python/exercises/complex-numbers/README.md +20 -1
- data/tracks/python/exercises/connect/README.md +20 -1
- data/tracks/python/exercises/crypto-square/README.md +20 -1
- data/tracks/python/exercises/custom-set/README.md +20 -1
- data/tracks/python/exercises/diamond/README.md +20 -1
- data/tracks/python/exercises/difference-of-squares/README.md +20 -1
- data/tracks/python/exercises/diffie-hellman/README.md +20 -1
- data/tracks/python/exercises/dominoes/README.md +20 -1
- data/tracks/python/exercises/dot-dsl/README.md +20 -1
- data/tracks/python/exercises/error-handling/README.md +20 -1
- data/tracks/python/exercises/etl/README.md +20 -1
- data/tracks/python/exercises/flatten-array/README.md +20 -1
- data/tracks/python/exercises/food-chain/README.md +20 -1
- data/tracks/python/exercises/food-chain/example.py +9 -0
- data/tracks/python/exercises/food-chain/food_chain.py +1 -1
- data/tracks/python/exercises/food-chain/food_chain_test.py +79 -80
- data/tracks/python/exercises/forth/README.md +20 -1
- data/tracks/python/exercises/gigasecond/README.md +20 -1
- data/tracks/python/exercises/go-counting/README.md +20 -1
- data/tracks/python/exercises/grade-school/README.md +20 -1
- data/tracks/python/exercises/grains/README.md +20 -1
- data/tracks/python/exercises/grains/grains_test.py +1 -1
- data/tracks/python/exercises/grep/README.md +20 -1
- data/tracks/python/exercises/hamming/README.md +20 -1
- data/tracks/python/exercises/hello-world/README.md +20 -1
- data/tracks/python/exercises/hexadecimal/README.md +20 -1
- data/tracks/python/exercises/house/README.md +20 -1
- data/tracks/python/exercises/isbn-verifier/README.md +20 -1
- data/tracks/python/exercises/isogram/README.md +20 -1
- data/tracks/python/exercises/kindergarten-garden/README.md +20 -1
- data/tracks/python/exercises/largest-series-product/README.md +20 -1
- data/tracks/python/exercises/leap/README.md +20 -1
- data/tracks/python/exercises/linked-list/README.md +20 -1
- data/tracks/python/exercises/list-ops/README.md +20 -1
- data/tracks/python/exercises/luhn/README.md +20 -1
- data/tracks/python/exercises/markdown/README.md +20 -1
- data/tracks/python/exercises/matrix/README.md +20 -1
- data/tracks/python/exercises/meetup/README.md +20 -1
- data/tracks/python/exercises/minesweeper/README.md +20 -1
- data/tracks/python/exercises/nth-prime/README.md +20 -1
- data/tracks/python/exercises/nucleotide-count/README.md +20 -1
- data/tracks/python/exercises/ocr-numbers/README.md +20 -1
- data/tracks/python/exercises/octal/README.md +20 -1
- data/tracks/python/exercises/palindrome-products/README.md +20 -1
- data/tracks/python/exercises/pangram/README.md +20 -1
- data/tracks/python/exercises/parallel-letter-frequency/README.md +20 -1
- data/tracks/python/exercises/pascals-triangle/README.md +20 -1
- data/tracks/python/exercises/perfect-numbers/README.md +20 -1
- data/tracks/python/exercises/phone-number/README.md +20 -1
- data/tracks/python/exercises/pig-latin/README.md +24 -5
- data/tracks/python/exercises/point-mutations/README.md +20 -1
- data/tracks/python/exercises/poker/README.md +20 -1
- data/tracks/python/exercises/pov/README.md +20 -1
- data/tracks/python/exercises/prime-factors/README.md +20 -1
- data/tracks/python/exercises/protein-translation/README.md +20 -1
- data/tracks/python/exercises/proverb/README.md +20 -1
- data/tracks/python/exercises/pythagorean-triplet/README.md +20 -1
- data/tracks/python/exercises/queen-attack/README.md +20 -1
- data/tracks/python/exercises/queen-attack/example.py +16 -26
- data/tracks/python/exercises/queen-attack/queen_attack.py +5 -5
- data/tracks/python/exercises/queen-attack/queen_attack_test.py +18 -49
- data/tracks/python/exercises/rail-fence-cipher/README.md +20 -1
- data/tracks/python/exercises/raindrops/README.md +20 -1
- data/tracks/python/exercises/rational-numbers/README.md +20 -1
- data/tracks/python/exercises/react/README.md +20 -1
- data/tracks/python/exercises/rectangles/README.md +20 -1
- data/tracks/python/exercises/reverse-string/README.md +20 -1
- data/tracks/python/exercises/rna-transcription/README.md +20 -1
- data/tracks/python/exercises/robot-name/README.md +20 -1
- data/tracks/python/exercises/robot-simulator/README.md +20 -1
- data/tracks/python/exercises/roman-numerals/README.md +20 -1
- data/tracks/python/exercises/rotational-cipher/README.md +20 -1
- data/tracks/python/exercises/run-length-encoding/README.md +20 -1
- data/tracks/python/exercises/saddle-points/README.md +20 -1
- data/tracks/python/exercises/say/README.md +20 -1
- data/tracks/python/exercises/scale-generator/README.md +20 -1
- data/tracks/python/exercises/scrabble-score/README.md +20 -1
- data/tracks/python/exercises/secret-handshake/README.md +20 -1
- data/tracks/python/exercises/series/README.md +20 -1
- data/tracks/python/exercises/sieve/README.md +20 -1
- data/tracks/python/exercises/simple-cipher/README.md +20 -1
- data/tracks/python/exercises/simple-linked-list/README.md +20 -1
- data/tracks/python/exercises/space-age/README.md +20 -1
- data/tracks/python/exercises/spiral-matrix/README.md +20 -1
- data/tracks/python/exercises/strain/README.md +20 -1
- data/tracks/python/exercises/sublist/README.md +20 -1
- data/tracks/python/exercises/sum-of-multiples/README.md +20 -1
- data/tracks/python/exercises/tournament/README.md +20 -1
- data/tracks/python/exercises/transpose/README.md +20 -1
- data/tracks/python/exercises/tree-building/README.md +20 -1
- data/tracks/python/exercises/triangle/README.md +20 -1
- data/tracks/python/exercises/trinary/README.md +20 -1
- data/tracks/python/exercises/twelve-days/README.md +20 -1
- data/tracks/python/exercises/two-bucket/README.md +21 -2
- data/tracks/python/exercises/two-fer/README.md +20 -1
- data/tracks/python/exercises/variable-length-quantity/README.md +20 -1
- data/tracks/python/exercises/word-count/README.md +20 -1
- data/tracks/python/exercises/word-search/README.md +20 -1
- data/tracks/python/exercises/wordy/README.md +20 -1
- data/tracks/python/exercises/zebra-puzzle/README.md +20 -1
- data/tracks/python/exercises/zipper/README.md +20 -1
- data/tracks/rust/_test/check-exercises.sh +3 -0
- data/tracks/rust/config.json +1 -1
- data/tracks/rust/exercises/collatz-conjecture/example.rs +3 -3
- data/tracks/rust/exercises/collatz-conjecture/src/lib.rs +2 -2
- data/tracks/rust/exercises/collatz-conjecture/tests/collatz-conjecture.rs +5 -5
- data/tracks/rust/exercises/nth-prime/example.rs +4 -4
- data/tracks/rust/exercises/nth-prime/src/lib.rs +3 -0
- data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +5 -5
- data/tracks/rust/exercises/perfect-numbers/example.rs +5 -5
- data/tracks/rust/exercises/perfect-numbers/src/lib.rs +1 -1
- data/tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs +2 -2
- data/tracks/rust/exercises/reverse-string/src/lib.rs +2 -2
- data/tracks/scala/exercises/nth-prime/src/test/scala/NthPrimeTest.scala +2 -2
- data/tracks/scala/exercises/nucleotide-count/src/test/scala/NucleotideCountTest.scala +16 -16
- data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrNumbersTest.scala +6 -5
- data/tracks/scala/exercises/palindrome-products/src/test/scala/PalindromeProductsTest.scala +15 -19
- data/tracks/scala/exercises/pangram/src/test/scala/PangramTest.scala +10 -5
- data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +47 -8
- data/tracks/scala/exercises/perfect-numbers/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/perfect-numbers/src/test/scala/PerfectNumbersTest.scala +17 -15
- data/tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala +26 -16
- data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +24 -24
- data/tracks/scala/exercises/prime-factors/src/test/scala/PrimefactorsTest.scala +9 -9
- data/tracks/scala/exercises/protein-translation/example.scala +5 -5
- data/tracks/scala/exercises/protein-translation/src/test/scala/ProteinTranslationTest.scala +91 -29
- data/tracks/scala/exercises/queen-attack/src/test/scala/QueenAttackTest.scala +20 -20
- data/tracks/scala/exercises/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala +15 -9
- data/tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala +2 -2
- data/tracks/scala/exercises/rna-transcription/src/test/scala/RnaTranscriptionTest.scala +8 -23
- data/tracks/scala/exercises/roman-numerals/src/test/scala/RomanNumeralsTest.scala +6 -1
- data/tracks/scala/testgen/src/main/scala/KindergartenGardenTestGenerator.scala +0 -6
- data/tracks/scala/testgen/src/main/scala/NthPrimeTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/OcrNumbersTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/PalindromeProductsTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/PascalsTriangleTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/PerfectNumbersTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/PhoneNumberTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/PigLatinTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/PrimeFactorsTestGenerator.scala +6 -8
- data/tracks/scala/testgen/src/main/scala/QueenAttackTestGenerator.scala +24 -22
- data/tracks/scala/testgen/src/main/scala/RailFenceCipherTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/RaindropsTestGenerator.scala +2 -2
- data/tracks/scala/testgen/src/main/scala/RnaTranscriptionTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/RomanNumeralsTestGenerator.scala +2 -2
- data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +5 -0
- data/tracks/scheme/docs/RESOURCES.md +1 -0
- data/tracks/swift/.travis.yml +5 -0
- data/tracks/typescript/config.json +154 -1
- data/tracks/typescript/config/maintainers.json +10 -0
- data/tracks/typescript/exercises/allergies/README.md +62 -0
- data/tracks/typescript/exercises/allergies/allergies.example.ts +48 -0
- data/tracks/typescript/exercises/allergies/allergies.test.ts +113 -0
- data/tracks/typescript/exercises/allergies/allergies.ts +0 -0
- data/tracks/typescript/exercises/allergies/package.json +36 -0
- data/tracks/typescript/exercises/allergies/tsconfig.json +22 -0
- data/tracks/typescript/exercises/allergies/tslint.json +127 -0
- data/tracks/typescript/exercises/allergies/yarn.lock +2624 -0
- data/tracks/typescript/exercises/collatz-conjecture/README.md +59 -0
- data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.example.ts +20 -0
- data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.test.ts +33 -0
- data/tracks/typescript/exercises/collatz-conjecture/collatz-conjecture.ts +7 -0
- data/tracks/typescript/exercises/collatz-conjecture/package.json +36 -0
- data/tracks/typescript/exercises/collatz-conjecture/tsconfig.json +22 -0
- data/tracks/typescript/exercises/collatz-conjecture/tslint.json +127 -0
- data/tracks/typescript/exercises/collatz-conjecture/yarn.lock +2624 -0
- data/tracks/typescript/exercises/isogram/README.md +46 -0
- data/tracks/typescript/exercises/isogram/isogram.example.ts +31 -0
- data/tracks/typescript/exercises/isogram/isogram.test.ts +48 -0
- data/tracks/typescript/exercises/isogram/isogram.ts +7 -0
- data/tracks/typescript/exercises/isogram/package.json +36 -0
- data/tracks/typescript/exercises/isogram/tsconfig.json +22 -0
- data/tracks/typescript/exercises/isogram/tslint.json +127 -0
- data/tracks/typescript/exercises/isogram/yarn.lock +2624 -0
- data/tracks/typescript/exercises/matrix/README.md +73 -0
- data/tracks/typescript/exercises/matrix/matrix.example.ts +36 -0
- data/tracks/typescript/exercises/matrix/matrix.test.ts +43 -0
- data/tracks/typescript/exercises/matrix/matrix.ts +7 -0
- data/tracks/typescript/exercises/matrix/package.json +36 -0
- data/tracks/typescript/exercises/matrix/tsconfig.json +22 -0
- data/tracks/typescript/exercises/matrix/tslint.json +127 -0
- data/tracks/typescript/exercises/matrix/yarn.lock +2624 -0
- data/tracks/typescript/exercises/nucleotide-count/README.md +45 -0
- data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.example.ts +25 -0
- data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.test.ts +48 -0
- data/tracks/typescript/exercises/nucleotide-count/nucleotide-count.ts +7 -0
- data/tracks/typescript/exercises/nucleotide-count/package.json +36 -0
- data/tracks/typescript/exercises/nucleotide-count/tsconfig.json +22 -0
- data/tracks/typescript/exercises/nucleotide-count/tslint.json +127 -0
- data/tracks/typescript/exercises/nucleotide-count/yarn.lock +2624 -0
- data/tracks/typescript/exercises/protein-translation/README.md +74 -0
- data/tracks/typescript/exercises/protein-translation/package.json +36 -0
- data/tracks/typescript/exercises/protein-translation/protein-translation.example.ts +61 -0
- data/tracks/typescript/exercises/protein-translation/protein-translation.test.ts +118 -0
- data/tracks/typescript/exercises/protein-translation/protein-translation.ts +7 -0
- data/tracks/typescript/exercises/protein-translation/tsconfig.json +22 -0
- data/tracks/typescript/exercises/protein-translation/tslint.json +127 -0
- data/tracks/typescript/exercises/protein-translation/yarn.lock +2624 -0
- data/tracks/typescript/exercises/reverse-string/README.md +39 -0
- data/tracks/typescript/exercises/reverse-string/package.json +36 -0
- data/tracks/typescript/exercises/reverse-string/reverse-string.example.ts +7 -0
- data/tracks/typescript/exercises/reverse-string/reverse-string.test.ts +28 -0
- data/tracks/typescript/exercises/reverse-string/reverse-string.ts +7 -0
- data/tracks/typescript/exercises/reverse-string/tsconfig.json +22 -0
- data/tracks/typescript/exercises/reverse-string/tslint.json +127 -0
- data/tracks/typescript/exercises/reverse-string/yarn.lock +2624 -0
- data/tracks/typescript/exercises/roman-numerals/README.md +75 -0
- data/tracks/typescript/exercises/roman-numerals/package.json +36 -0
- data/tracks/typescript/exercises/roman-numerals/roman-numerals.example.ts +32 -0
- data/tracks/typescript/exercises/roman-numerals/roman-numerals.test.ts +98 -0
- data/tracks/typescript/exercises/roman-numerals/roman-numerals.ts +7 -0
- data/tracks/typescript/exercises/roman-numerals/tsconfig.json +22 -0
- data/tracks/typescript/exercises/roman-numerals/tslint.json +127 -0
- data/tracks/typescript/exercises/roman-numerals/yarn.lock +2624 -0
- data/tracks/typescript/exercises/saddle-points/README.md +59 -0
- data/tracks/typescript/exercises/saddle-points/package.json +36 -0
- data/tracks/typescript/exercises/saddle-points/saddle-points.example.ts +35 -0
- data/tracks/typescript/exercises/saddle-points/saddle-points.test.ts +54 -0
- data/tracks/typescript/exercises/saddle-points/saddle-points.ts +7 -0
- data/tracks/typescript/exercises/saddle-points/tsconfig.json +22 -0
- data/tracks/typescript/exercises/saddle-points/tslint.json +127 -0
- data/tracks/typescript/exercises/saddle-points/yarn.lock +2624 -0
- data/tracks/typescript/exercises/twelve-days/README.md +61 -0
- data/tracks/typescript/exercises/twelve-days/package.json +36 -0
- data/tracks/typescript/exercises/twelve-days/tsconfig.json +22 -0
- data/tracks/typescript/exercises/twelve-days/tslint.json +127 -0
- data/tracks/typescript/exercises/twelve-days/twelve-days.example.ts +53 -0
- data/tracks/typescript/exercises/twelve-days/twelve-days.test.ts +80 -0
- data/tracks/typescript/exercises/twelve-days/twelve-days.ts +7 -0
- data/tracks/typescript/exercises/twelve-days/yarn.lock +2624 -0
- data/tracks/typescript/exercises/two-fer/README.md +45 -0
- data/tracks/typescript/exercises/two-fer/package.json +36 -0
- data/tracks/typescript/exercises/two-fer/tsconfig.json +22 -0
- data/tracks/typescript/exercises/two-fer/tslint.json +127 -0
- data/tracks/typescript/exercises/two-fer/two-fer.example.ts +7 -0
- data/tracks/typescript/exercises/two-fer/two-fer.test.ts +18 -0
- data/tracks/typescript/exercises/two-fer/two-fer.ts +7 -0
- data/tracks/typescript/exercises/two-fer/yarn.lock +2624 -0
- data/tracks/vbnet/config/exercise_readme.go.tmpl +5 -4
- data/tracks/vbnet/exercises/accumulate/README.md +0 -3
- data/tracks/vbnet/exercises/allergies/README.md +0 -1
- data/tracks/vbnet/exercises/atbash-cipher/README.md +2 -1
- data/tracks/vbnet/exercises/binary/README.md +2 -0
- data/tracks/vbnet/exercises/crypto-square/README.md +10 -8
- metadata +251 -47
- data/tracks/coffeescript/docs/EXERCISE_README_INSERT.md +0 -6
- data/tracks/coq/docs/EXERCISE_README_INSERT.md +0 -22
- data/tracks/cpp/docs/EXERCISE_README_INSERT.md +0 -30
- data/tracks/d/docs/EXERCISE_README_INSERT.md +0 -29
- data/tracks/ecmascript/docs/EXERCISE_README_INSERT.md +0 -28
- data/tracks/elm/exercises/accumulate/package.json +0 -14
- data/tracks/elm/exercises/allergies/package.json +0 -14
- data/tracks/elm/exercises/anagram/package.json +0 -14
- data/tracks/elm/exercises/atbash-cipher/package.json +0 -14
- data/tracks/elm/exercises/bob/package.json +0 -14
- data/tracks/elm/exercises/collatz-conjecture/package.json +0 -14
- data/tracks/elm/exercises/difference-of-squares/package.json +0 -14
- data/tracks/elm/exercises/etl/package.json +0 -14
- data/tracks/elm/exercises/gigasecond/package.json +0 -14
- data/tracks/elm/exercises/grade-school/package.json +0 -14
- data/tracks/elm/exercises/grains/package.json +0 -14
- data/tracks/elm/exercises/hamming/package.json +0 -14
- data/tracks/elm/exercises/hello-world/package.json +0 -14
- data/tracks/elm/exercises/isogram/package.json +0 -14
- data/tracks/elm/exercises/largest-series-product/package.json +0 -14
- data/tracks/elm/exercises/leap/package.json +0 -14
- data/tracks/elm/exercises/list-ops/package.json +0 -14
- data/tracks/elm/exercises/nucleotide-count/package.json +0 -14
- data/tracks/elm/exercises/pangram/package.json +0 -14
- data/tracks/elm/exercises/pascals-triangle/package.json +0 -14
- data/tracks/elm/exercises/phone-number/package.json +0 -14
- data/tracks/elm/exercises/raindrops/package.json +0 -14
- data/tracks/elm/exercises/rna-transcription/package.json +0 -14
- data/tracks/elm/exercises/robot-simulator/package.json +0 -14
- data/tracks/elm/exercises/roman-numerals/package.json +0 -14
- data/tracks/elm/exercises/run-length-encoding/package.json +0 -14
- data/tracks/elm/exercises/say/package.json +0 -14
- data/tracks/elm/exercises/scrabble-score/package.json +0 -14
- data/tracks/elm/exercises/series/package.json +0 -14
- data/tracks/elm/exercises/space-age/package.json +0 -14
- data/tracks/elm/exercises/strain/package.json +0 -14
- data/tracks/elm/exercises/sublist/package.json +0 -14
- data/tracks/elm/exercises/sum-of-multiples/package.json +0 -14
- data/tracks/elm/exercises/triangle/package.json +0 -14
- data/tracks/elm/exercises/word-count/package.json +0 -14
- data/tracks/erlang/docs/EXERCISE_README_INSERT.md +0 -41
- data/tracks/haskell/docs/EXERCISE_README_INSERT.md +0 -52
- data/tracks/lfe/docs/EXERCISE_README_INSERT.md +0 -14
- data/tracks/plsql/docs/EXERCISE_README_INSERT.md +0 -18
- data/tracks/vbnet/docs/EXERCISE_README_INSERT.md +0 -5
@@ -16,9 +16,11 @@ describe('simple-linked-list', function () {
|
|
16
16
|
var el = new Element(1);
|
17
17
|
expect(el).toBeDefined();
|
18
18
|
|
19
|
+
/* eslint-disable new-cap */
|
19
20
|
expect(function () {
|
20
|
-
|
21
|
+
el = Element(1);
|
21
22
|
}).toThrow();
|
23
|
+
/* eslint-enable new-cap */
|
22
24
|
});
|
23
25
|
|
24
26
|
xit('requires an argument', function () {
|
@@ -26,7 +28,7 @@ describe('simple-linked-list', function () {
|
|
26
28
|
expect(el).toBeDefined();
|
27
29
|
|
28
30
|
expect(function () {
|
29
|
-
|
31
|
+
el = new Element();
|
30
32
|
}).toThrow();
|
31
33
|
});
|
32
34
|
|
@@ -47,9 +49,9 @@ describe('simple-linked-list', function () {
|
|
47
49
|
expect(elTwo.next).toBe(elOne);
|
48
50
|
});
|
49
51
|
|
52
|
+
/* eslint-disable no-unused-vars */
|
50
53
|
xit('requires an instance of Element as next element', function () {
|
51
54
|
expect(function () {
|
52
|
-
var el = new Element(1, true);
|
53
55
|
var el = new Element(1, false);
|
54
56
|
}).toThrow();
|
55
57
|
expect(function () {
|
@@ -62,6 +64,7 @@ describe('simple-linked-list', function () {
|
|
62
64
|
var el = new Element(1, {});
|
63
65
|
}).toThrow();
|
64
66
|
});
|
67
|
+
/* eslint-enable no-unused-vars */
|
65
68
|
|
66
69
|
describe('List', function () {
|
67
70
|
xit('is a constructor', function () {
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Variable Length Quantity
|
2
|
+
|
3
|
+
Implement variable length quantity encoding and decoding.
|
4
|
+
|
5
|
+
The goal of this exercise is to implement [VLQ](https://en.wikipedia.org/wiki/Variable-length_quantity) encoding/decoding.
|
6
|
+
|
7
|
+
In short, the goal of this encoding is to encode integer values in a way that would save bytes.
|
8
|
+
Only the first 7 bits of each byte is significant (right-justified; sort of like an ASCII byte).
|
9
|
+
So, if you have a 32-bit value, you have to unpack it into a series of 7-bit bytes.
|
10
|
+
Of course, you will have a variable number of bytes depending upon your integer.
|
11
|
+
To indicate which is the last byte of the series, you leave bit #7 clear.
|
12
|
+
In all of the preceding bytes, you set bit #7.
|
13
|
+
|
14
|
+
So, if an integer is between `0-127`, it can be represented as one byte.
|
15
|
+
Although VLQ can deal with numbers of arbitrary sizes, for this exercise we will restrict ourselves to only numbers that fit in a 32-bit unsigned integer.
|
16
|
+
Here are examples of integers as 32-bit values, and the variable length quantities that they translate to:
|
17
|
+
|
18
|
+
```text
|
19
|
+
NUMBER VARIABLE QUANTITY
|
20
|
+
00000000 00
|
21
|
+
00000040 40
|
22
|
+
0000007F 7F
|
23
|
+
00000080 81 00
|
24
|
+
00002000 C0 00
|
25
|
+
00003FFF FF 7F
|
26
|
+
00004000 81 80 00
|
27
|
+
00100000 C0 80 00
|
28
|
+
001FFFFF FF FF 7F
|
29
|
+
00200000 81 80 80 00
|
30
|
+
08000000 C0 80 80 00
|
31
|
+
0FFFFFFF FF FF FF 7F
|
32
|
+
```
|
33
|
+
|
34
|
+
## Setup
|
35
|
+
|
36
|
+
Go through the setup instructions for JavaScript to
|
37
|
+
install the necessary dependencies:
|
38
|
+
|
39
|
+
http://exercism.io/languages/javascript
|
40
|
+
|
41
|
+
## Making the Test Suite Pass
|
42
|
+
|
43
|
+
Execute the tests with:
|
44
|
+
|
45
|
+
jasmine <exercise-name>.spec.js
|
46
|
+
|
47
|
+
Replace `<exercise-name>` with the name of the current exercise. E.g., to
|
48
|
+
test the Hello World exercise:
|
49
|
+
|
50
|
+
jasmine hello-world.spec.js
|
51
|
+
|
52
|
+
In many test suites all but the first test have been skipped.
|
53
|
+
|
54
|
+
Once you get a test passing, you can unskip the next one by
|
55
|
+
changing `xit` to `it`.
|
56
|
+
|
57
|
+
## Source
|
58
|
+
|
59
|
+
A poor Splice developer having to implement MIDI encoding/decoding. [https://splice.com](https://splice.com)
|
60
|
+
|
61
|
+
## Submitting Incomplete Solutions
|
62
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,51 @@
|
|
1
|
+
var LENGTH = 7;
|
2
|
+
var CONT_BITS = 1 << LENGTH;
|
3
|
+
var DATA_BITS = CONT_BITS - 1;
|
4
|
+
|
5
|
+
var encodeOne = function (val) {
|
6
|
+
var buf = [];
|
7
|
+
var left = val;
|
8
|
+
|
9
|
+
while (left) {
|
10
|
+
var bits = left & DATA_BITS | CONT_BITS; // set continuation everywhere
|
11
|
+
left = left >>> LENGTH;
|
12
|
+
buf.push(bits);
|
13
|
+
}
|
14
|
+
buf[0] = buf[0] & DATA_BITS; // cancel the last continuation
|
15
|
+
return buf.reverse();
|
16
|
+
};
|
17
|
+
|
18
|
+
var decodeOne = function (buf) {
|
19
|
+
var val = 0;
|
20
|
+
|
21
|
+
for (var i = 0; i < buf.length; i++) {
|
22
|
+
val = val << LENGTH | buf[i] & DATA_BITS;
|
23
|
+
}
|
24
|
+
return val >>> 0; // convert to unsigned 32-bit
|
25
|
+
};
|
26
|
+
|
27
|
+
module.exports = {
|
28
|
+
encode: function encode(data) {
|
29
|
+
var buf = [];
|
30
|
+
|
31
|
+
for (var i = 0; i < data.length; i++) {
|
32
|
+
buf = buf.concat(encodeOne(data[i]));
|
33
|
+
}
|
34
|
+
return buf;
|
35
|
+
},
|
36
|
+
decode: function decode(data) {
|
37
|
+
var start = 0;
|
38
|
+
var vals = [];
|
39
|
+
|
40
|
+
for (var i = 0; i < data.length; i++) {
|
41
|
+
if (~data[i] & CONT_BITS) {
|
42
|
+
vals.push(decodeOne(data.slice(start, i + 1)));
|
43
|
+
start = i + 1;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
if (start < data.length) {
|
47
|
+
throw new Error('Incomplete sequence');
|
48
|
+
}
|
49
|
+
return vals;
|
50
|
+
}
|
51
|
+
};
|
@@ -0,0 +1,115 @@
|
|
1
|
+
var VLQ = require('./variable-length-quantity');
|
2
|
+
|
3
|
+
describe('VariableLengthQuantity', function () {
|
4
|
+
describe('Encode a series of integers, producing a series of bytes.', function () {
|
5
|
+
it('zero', function () {
|
6
|
+
expect(VLQ.encode([0])).toEqual([0]);
|
7
|
+
});
|
8
|
+
|
9
|
+
it('arbitrary single byte', function () {
|
10
|
+
expect(VLQ.encode([0x40])).toEqual([0x40]);
|
11
|
+
});
|
12
|
+
|
13
|
+
it('largest single byte', function () {
|
14
|
+
expect(VLQ.encode([0x7f])).toEqual([0x7f]);
|
15
|
+
});
|
16
|
+
|
17
|
+
it('smallest double byte', function () {
|
18
|
+
expect(VLQ.encode([0x80])).toEqual([0x81, 0]);
|
19
|
+
});
|
20
|
+
|
21
|
+
it('arbitrary double byte', function () {
|
22
|
+
expect(VLQ.encode([0x2000])).toEqual([0xc0, 0]);
|
23
|
+
});
|
24
|
+
|
25
|
+
it('largest double byte', function () {
|
26
|
+
expect(VLQ.encode([0x3fff])).toEqual([0xff, 0x7f]);
|
27
|
+
});
|
28
|
+
|
29
|
+
it('smallest triple byte', function () {
|
30
|
+
expect(VLQ.encode([0x4000])).toEqual([0x81, 0x80, 0]);
|
31
|
+
});
|
32
|
+
|
33
|
+
it('arbitrary triple byte', function () {
|
34
|
+
expect(VLQ.encode([0x100000])).toEqual([0xc0, 0x80, 0]);
|
35
|
+
});
|
36
|
+
|
37
|
+
it('largest triple byte', function () {
|
38
|
+
expect(VLQ.encode([0x1fffff])).toEqual([0xff, 0xff, 0x7f]);
|
39
|
+
});
|
40
|
+
|
41
|
+
it('smallest quadruple byte', function () {
|
42
|
+
expect(VLQ.encode([0x200000])).toEqual([0x81, 0x80, 0x80, 0]);
|
43
|
+
});
|
44
|
+
|
45
|
+
it('arbitrary quadruple byte', function () {
|
46
|
+
expect(VLQ.encode([0x8000000])).toEqual([0xc0, 0x80, 0x80, 0]);
|
47
|
+
});
|
48
|
+
|
49
|
+
it('largest quadruple byte', function () {
|
50
|
+
expect(VLQ.encode([0xfffffff])).toEqual([0xff, 0xff, 0xff, 0x7f]);
|
51
|
+
});
|
52
|
+
|
53
|
+
it('smallest quintuple byte', function () {
|
54
|
+
expect(VLQ.encode([0x10000000])).toEqual([0x81, 0x80, 0x80, 0x80, 0]);
|
55
|
+
});
|
56
|
+
|
57
|
+
it('arbitrary quintuple byte', function () {
|
58
|
+
expect(VLQ.encode([0xff000000])).toEqual([0x8f, 0xf8, 0x80, 0x80, 0]);
|
59
|
+
});
|
60
|
+
|
61
|
+
it('maximum 32-bit integer input', function () {
|
62
|
+
expect(VLQ.encode([0xffffffff])).toEqual([0x8f, 0xff, 0xff, 0xff, 0x7f]);
|
63
|
+
});
|
64
|
+
|
65
|
+
it('two single-byte values', function () {
|
66
|
+
expect(VLQ.encode([0x40, 0x7f])).toEqual([0x40, 0x7f]);
|
67
|
+
});
|
68
|
+
|
69
|
+
it('two multi-byte values', function () {
|
70
|
+
expect(VLQ.encode([0x4000, 0x123456])).toEqual([0x81, 0x80, 0, 0xc8, 0xe8, 0x56]);
|
71
|
+
});
|
72
|
+
|
73
|
+
it('many multi-byte values', function () {
|
74
|
+
var input = [0x2000, 0x123456, 0xfffffff, 0, 0x3fff, 0x4000];
|
75
|
+
var expected = [0xc0, 0, 0xc8, 0xe8, 0x56, 0xff, 0xff, 0xff, 0x7f, 0, 0xff, 0x7f, 0x81, 0x80, 0];
|
76
|
+
expect(VLQ.encode(input)).toEqual(expected);
|
77
|
+
});
|
78
|
+
});
|
79
|
+
|
80
|
+
describe('Decode a series of bytes, producing a series of integers.', function () {
|
81
|
+
it('one byte', function () {
|
82
|
+
expect(VLQ.decode([0x7f])).toEqual([0x7f]);
|
83
|
+
});
|
84
|
+
|
85
|
+
it('two bytes', function () {
|
86
|
+
expect(VLQ.decode([0xc0, 0])).toEqual([0x2000]);
|
87
|
+
});
|
88
|
+
|
89
|
+
it('three bytes', function () {
|
90
|
+
expect(VLQ.decode([0xff, 0xff, 0x7f])).toEqual([0x1fffff]);
|
91
|
+
});
|
92
|
+
|
93
|
+
it('four bytes', function () {
|
94
|
+
expect(VLQ.decode([0x81, 0x80, 0x80, 0])).toEqual([0x200000]);
|
95
|
+
});
|
96
|
+
|
97
|
+
it('maximum 32-bit integer', function () {
|
98
|
+
expect(VLQ.decode([0x8f, 0xff, 0xff, 0xff, 0x7f])).toEqual([0xffffffff]);
|
99
|
+
});
|
100
|
+
|
101
|
+
it('incomplete sequence causes error', function () {
|
102
|
+
expect(function () { VLQ.decode([0xff]); }).toThrow(new Error('Incomplete sequence'));
|
103
|
+
});
|
104
|
+
|
105
|
+
it('incomplete sequence causes error, even if value is zero', function () {
|
106
|
+
expect(function () { VLQ.decode([0x80]); }).toThrow(new Error('Incomplete sequence'));
|
107
|
+
});
|
108
|
+
|
109
|
+
it('multiple values', function () {
|
110
|
+
var input = [0xc0, 0, 0xc8, 0xe8, 0x56, 0xff, 0xff, 0xff, 0x7f, 0, 0xff, 0x7f, 0x81, 0x80, 0];
|
111
|
+
var expected = [0x2000, 0x123456, 0xfffffff, 0, 0x3fff, 0x4000];
|
112
|
+
expect(VLQ.decode(input)).toEqual(expected);
|
113
|
+
});
|
114
|
+
});
|
115
|
+
});
|
@@ -4,10 +4,21 @@
|
|
4
4
|
{{- with .Hints }}
|
5
5
|
{{ . }}
|
6
6
|
{{ end }}
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
* * * *
|
8
|
+
|
9
|
+
For installation and learning resources, refer to the [exercism help page][].
|
10
|
+
|
11
|
+
[exercism help page]: http://exercism.io/languages/lfe
|
12
|
+
|
13
|
+
To run the provided tests, you will need `make`.
|
14
|
+
Open a terminal window and run the following from the exercise directory:
|
15
|
+
|
16
|
+
```sh
|
17
|
+
make test
|
18
|
+
```
|
19
|
+
|
20
|
+
You should now be able to see the results of the test suite for the exercise.
|
21
|
+
{{ with .Spec.Credits }}
|
11
22
|
## Source
|
12
23
|
|
13
24
|
{{ . }}
|
@@ -25,9 +25,6 @@ Keep your hands off that collect/map/fmap/whatchamacallit functionality
|
|
25
25
|
provided by your standard library!
|
26
26
|
Solve this one yourself using other basic tools instead.
|
27
27
|
|
28
|
-
Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
|
29
|
-
as this is idiomatic Lisp, not a library function.
|
30
|
-
|
31
28
|
* * * *
|
32
29
|
|
33
30
|
For installation and learning resources, refer to the [exercism help page][].
|
@@ -29,7 +29,6 @@ allergens that score 256, 512, 1024, etc.). Your program should
|
|
29
29
|
ignore those components of the score. For example, if the allergy
|
30
30
|
score is 257, your program should only report the eggs (1) allergy.
|
31
31
|
|
32
|
-
|
33
32
|
* * * *
|
34
33
|
|
35
34
|
For installation and learning resources, refer to the [exercism help page][].
|
@@ -9,7 +9,7 @@ letter, the second with the second-last, and so on.
|
|
9
9
|
|
10
10
|
An Atbash cipher for the Latin alphabet would be as follows:
|
11
11
|
|
12
|
-
```
|
12
|
+
```text
|
13
13
|
Plain: abcdefghijklmnopqrstuvwxyz
|
14
14
|
Cipher: zyxwvutsrqponmlkjihgfedcba
|
15
15
|
```
|
@@ -23,6 +23,7 @@ being 5 letters, and punctuation is excluded. This is to make it harder to guess
|
|
23
23
|
things based on word boundaries.
|
24
24
|
|
25
25
|
## Examples
|
26
|
+
|
26
27
|
- Encoding `test` gives `gvhg`
|
27
28
|
- Decoding `gvhg` gives `test`
|
28
29
|
- Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# Beer Song
|
2
2
|
|
3
|
-
|
3
|
+
Recite the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
|
4
4
|
|
5
5
|
Note that not all verses are identical.
|
6
6
|
|
7
|
-
```
|
7
|
+
```text
|
8
8
|
99 bottles of beer on the wall, 99 bottles of beer.
|
9
9
|
Take one down and pass it around, 98 bottles of beer on the wall.
|
10
10
|
|
@@ -7,10 +7,12 @@ string, your program should produce a decimal output. The
|
|
7
7
|
program should handle invalid inputs.
|
8
8
|
|
9
9
|
## Note
|
10
|
+
|
10
11
|
- Implement the conversion yourself.
|
11
12
|
Do not use something else to perform the conversion for you.
|
12
13
|
|
13
14
|
## About Binary (Base-2)
|
15
|
+
|
14
16
|
Decimal is a base-10 system.
|
15
17
|
|
16
18
|
A number 23 in base 10 notation can be understood
|
@@ -31,18 +31,25 @@ If the buffer has 7 elements then it is completely full:
|
|
31
31
|
When the buffer is full an error will be raised, alerting the client
|
32
32
|
that further writes are blocked until a slot becomes free.
|
33
33
|
|
34
|
-
|
35
|
-
this case, two more elements — A & B —
|
36
|
-
3 & 4:
|
34
|
+
When the buffer is full, the client can opt to overwrite the oldest
|
35
|
+
data with a forced write. In this case, two more elements — A & B —
|
36
|
+
are added and they overwrite the 3 & 4:
|
37
37
|
|
38
38
|
[6][7][8][9][A][B][5]
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
buffer
|
40
|
+
3 & 4 have been replaced by A & B making 5 now the oldest data in the
|
41
|
+
buffer. Finally, if two elements are removed then what would be
|
42
|
+
returned is 5 & 6 yielding the buffer:
|
43
43
|
|
44
44
|
[ ][7][8][9][A][B][ ]
|
45
45
|
|
46
|
+
Because there is space available, if the client again uses overwrite
|
47
|
+
to store C & D then the space where 5 & 6 were stored previously will
|
48
|
+
be used not the location of 7 & 8. 7 is still the oldest element and
|
49
|
+
the buffer is once again full.
|
50
|
+
|
51
|
+
[D][7][8][9][A][B][C]
|
52
|
+
|
46
53
|
* * * *
|
47
54
|
|
48
55
|
For installation and learning resources, refer to the [exercism help page][].
|
@@ -1,8 +1,9 @@
|
|
1
|
-
#
|
1
|
+
# ETL
|
2
2
|
|
3
3
|
We are going to do the `Transform` step of an Extract-Transform-Load.
|
4
4
|
|
5
5
|
### ETL
|
6
|
+
|
6
7
|
Extract-Transform-Load (ETL) is a fancy way of saying, "We have some crufty, legacy data over in this system, and now we need it in this shiny new system over here, so
|
7
8
|
we're going to migrate this."
|
8
9
|
|
@@ -11,6 +12,7 @@ once." That's then typically followed by much forehead slapping and
|
|
11
12
|
moaning about how stupid we could possibly be.)
|
12
13
|
|
13
14
|
### The goal
|
15
|
+
|
14
16
|
We're going to extract some scrabble scores from a legacy system.
|
15
17
|
|
16
18
|
The old system stored a list of letters per score:
|