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
@@ -86,12 +86,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
86
86
|
a message.
|
87
87
|
|
88
88
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
89
|
-
`raise Exception`, you
|
89
|
+
`raise Exception`, you should write:
|
90
90
|
|
91
91
|
```python
|
92
92
|
raise Exception("Meaningful message indicating the source of the error")
|
93
93
|
```
|
94
94
|
|
95
|
+
## Running the tests
|
96
|
+
|
97
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
98
|
+
|
99
|
+
- Python 2.7: `py.test ocr_numbers_test.py`
|
100
|
+
- Python 3.3+: `pytest ocr_numbers_test.py`
|
101
|
+
|
102
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
103
|
+
`python -m pytest ocr_numbers_test.py`
|
104
|
+
|
105
|
+
### Common `pytest` options
|
106
|
+
|
107
|
+
- `-v` : enable verbose output
|
108
|
+
- `-x` : stop running tests on first failure
|
109
|
+
- `--ff` : run failures from previous test before running other test cases
|
110
|
+
|
111
|
+
For other options, see `python -m pytest -h`
|
112
|
+
|
95
113
|
## Submitting Exercises
|
96
114
|
|
97
115
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/ocr-numbers` directory.
|
@@ -106,4 +124,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
106
124
|
Inspired by the Bank OCR kata [http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR](http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR)
|
107
125
|
|
108
126
|
## Submitting Incomplete Solutions
|
127
|
+
|
109
128
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -54,12 +54,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
54
54
|
a message.
|
55
55
|
|
56
56
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
57
|
-
`raise Exception`, you
|
57
|
+
`raise Exception`, you should write:
|
58
58
|
|
59
59
|
```python
|
60
60
|
raise Exception("Meaningful message indicating the source of the error")
|
61
61
|
```
|
62
62
|
|
63
|
+
## Running the tests
|
64
|
+
|
65
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
66
|
+
|
67
|
+
- Python 2.7: `py.test octal_test.py`
|
68
|
+
- Python 3.3+: `pytest octal_test.py`
|
69
|
+
|
70
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
71
|
+
`python -m pytest octal_test.py`
|
72
|
+
|
73
|
+
### Common `pytest` options
|
74
|
+
|
75
|
+
- `-v` : enable verbose output
|
76
|
+
- `-x` : stop running tests on first failure
|
77
|
+
- `--ff` : run failures from previous test before running other test cases
|
78
|
+
|
79
|
+
For other options, see `python -m pytest -h`
|
80
|
+
|
63
81
|
## Submitting Exercises
|
64
82
|
|
65
83
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/octal` directory.
|
@@ -74,4 +92,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
74
92
|
All of Computer Science [http://www.wolframalpha.com/input/?i=base+8](http://www.wolframalpha.com/input/?i=base+8)
|
75
93
|
|
76
94
|
## Submitting Incomplete Solutions
|
95
|
+
|
77
96
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -40,12 +40,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
40
40
|
a message.
|
41
41
|
|
42
42
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
43
|
-
`raise Exception`, you
|
43
|
+
`raise Exception`, you should write:
|
44
44
|
|
45
45
|
```python
|
46
46
|
raise Exception("Meaningful message indicating the source of the error")
|
47
47
|
```
|
48
48
|
|
49
|
+
## Running the tests
|
50
|
+
|
51
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
52
|
+
|
53
|
+
- Python 2.7: `py.test palindrome_products_test.py`
|
54
|
+
- Python 3.3+: `pytest palindrome_products_test.py`
|
55
|
+
|
56
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
57
|
+
`python -m pytest palindrome_products_test.py`
|
58
|
+
|
59
|
+
### Common `pytest` options
|
60
|
+
|
61
|
+
- `-v` : enable verbose output
|
62
|
+
- `-x` : stop running tests on first failure
|
63
|
+
- `--ff` : run failures from previous test before running other test cases
|
64
|
+
|
65
|
+
For other options, see `python -m pytest -h`
|
66
|
+
|
49
67
|
## Submitting Exercises
|
50
68
|
|
51
69
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/palindrome-products` directory.
|
@@ -60,4 +78,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
60
78
|
Problem 4 at Project Euler [http://projecteuler.net/problem=4](http://projecteuler.net/problem=4)
|
61
79
|
|
62
80
|
## Submitting Incomplete Solutions
|
81
|
+
|
63
82
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -16,12 +16,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
16
16
|
a message.
|
17
17
|
|
18
18
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
19
|
-
`raise Exception`, you
|
19
|
+
`raise Exception`, you should write:
|
20
20
|
|
21
21
|
```python
|
22
22
|
raise Exception("Meaningful message indicating the source of the error")
|
23
23
|
```
|
24
24
|
|
25
|
+
## Running the tests
|
26
|
+
|
27
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
28
|
+
|
29
|
+
- Python 2.7: `py.test pangram_test.py`
|
30
|
+
- Python 3.3+: `pytest pangram_test.py`
|
31
|
+
|
32
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
33
|
+
`python -m pytest pangram_test.py`
|
34
|
+
|
35
|
+
### Common `pytest` options
|
36
|
+
|
37
|
+
- `-v` : enable verbose output
|
38
|
+
- `-x` : stop running tests on first failure
|
39
|
+
- `--ff` : run failures from previous test before running other test cases
|
40
|
+
|
41
|
+
For other options, see `python -m pytest -h`
|
42
|
+
|
25
43
|
## Submitting Exercises
|
26
44
|
|
27
45
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/pangram` directory.
|
@@ -36,4 +54,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
36
54
|
Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
|
37
55
|
|
38
56
|
## Submitting Incomplete Solutions
|
57
|
+
|
39
58
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -15,12 +15,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
15
15
|
a message.
|
16
16
|
|
17
17
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
18
|
-
`raise Exception`, you
|
18
|
+
`raise Exception`, you should write:
|
19
19
|
|
20
20
|
```python
|
21
21
|
raise Exception("Meaningful message indicating the source of the error")
|
22
22
|
```
|
23
23
|
|
24
|
+
## Running the tests
|
25
|
+
|
26
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
27
|
+
|
28
|
+
- Python 2.7: `py.test parallel_letter_frequency_test.py`
|
29
|
+
- Python 3.3+: `pytest parallel_letter_frequency_test.py`
|
30
|
+
|
31
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
32
|
+
`python -m pytest parallel_letter_frequency_test.py`
|
33
|
+
|
34
|
+
### Common `pytest` options
|
35
|
+
|
36
|
+
- `-v` : enable verbose output
|
37
|
+
- `-x` : stop running tests on first failure
|
38
|
+
- `--ff` : run failures from previous test before running other test cases
|
39
|
+
|
40
|
+
For other options, see `python -m pytest -h`
|
41
|
+
|
24
42
|
## Submitting Exercises
|
25
43
|
|
26
44
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/parallel-letter-frequency` directory.
|
@@ -31,4 +49,5 @@ For more detailed information about running tests, code style and linting,
|
|
31
49
|
please see the [help page](http://exercism.io/languages/python).
|
32
50
|
|
33
51
|
## Submitting Incomplete Solutions
|
52
|
+
|
34
53
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -22,12 +22,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
22
22
|
a message.
|
23
23
|
|
24
24
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
25
|
-
`raise Exception`, you
|
25
|
+
`raise Exception`, you should write:
|
26
26
|
|
27
27
|
```python
|
28
28
|
raise Exception("Meaningful message indicating the source of the error")
|
29
29
|
```
|
30
30
|
|
31
|
+
## Running the tests
|
32
|
+
|
33
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
34
|
+
|
35
|
+
- Python 2.7: `py.test pascals_triangle_test.py`
|
36
|
+
- Python 3.3+: `pytest pascals_triangle_test.py`
|
37
|
+
|
38
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
39
|
+
`python -m pytest pascals_triangle_test.py`
|
40
|
+
|
41
|
+
### Common `pytest` options
|
42
|
+
|
43
|
+
- `-v` : enable verbose output
|
44
|
+
- `-x` : stop running tests on first failure
|
45
|
+
- `--ff` : run failures from previous test before running other test cases
|
46
|
+
|
47
|
+
For other options, see `python -m pytest -h`
|
48
|
+
|
31
49
|
## Submitting Exercises
|
32
50
|
|
33
51
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/pascals-triangle` directory.
|
@@ -42,4 +60,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
42
60
|
Pascal's Triangle at Wolfram Math World [http://mathworld.wolfram.com/PascalsTriangle.html](http://mathworld.wolfram.com/PascalsTriangle.html)
|
43
61
|
|
44
62
|
## Submitting Incomplete Solutions
|
63
|
+
|
45
64
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -25,12 +25,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
25
25
|
a message.
|
26
26
|
|
27
27
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
28
|
-
`raise Exception`, you
|
28
|
+
`raise Exception`, you should write:
|
29
29
|
|
30
30
|
```python
|
31
31
|
raise Exception("Meaningful message indicating the source of the error")
|
32
32
|
```
|
33
33
|
|
34
|
+
## Running the tests
|
35
|
+
|
36
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
37
|
+
|
38
|
+
- Python 2.7: `py.test perfect_numbers_test.py`
|
39
|
+
- Python 3.3+: `pytest perfect_numbers_test.py`
|
40
|
+
|
41
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
42
|
+
`python -m pytest perfect_numbers_test.py`
|
43
|
+
|
44
|
+
### Common `pytest` options
|
45
|
+
|
46
|
+
- `-v` : enable verbose output
|
47
|
+
- `-x` : stop running tests on first failure
|
48
|
+
- `--ff` : run failures from previous test before running other test cases
|
49
|
+
|
50
|
+
For other options, see `python -m pytest -h`
|
51
|
+
|
34
52
|
## Submitting Exercises
|
35
53
|
|
36
54
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/perfect-numbers` directory.
|
@@ -45,4 +63,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
45
63
|
Taken from Chapter 2 of Functional Thinking by Neal Ford. [http://shop.oreilly.com/product/0636920029687.do](http://shop.oreilly.com/product/0636920029687.do)
|
46
64
|
|
47
65
|
## Submitting Incomplete Solutions
|
66
|
+
|
48
67
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -36,12 +36,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
36
36
|
a message.
|
37
37
|
|
38
38
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
39
|
-
`raise Exception`, you
|
39
|
+
`raise Exception`, you should write:
|
40
40
|
|
41
41
|
```python
|
42
42
|
raise Exception("Meaningful message indicating the source of the error")
|
43
43
|
```
|
44
44
|
|
45
|
+
## Running the tests
|
46
|
+
|
47
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
48
|
+
|
49
|
+
- Python 2.7: `py.test phone_number_test.py`
|
50
|
+
- Python 3.3+: `pytest phone_number_test.py`
|
51
|
+
|
52
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
53
|
+
`python -m pytest phone_number_test.py`
|
54
|
+
|
55
|
+
### Common `pytest` options
|
56
|
+
|
57
|
+
- `-v` : enable verbose output
|
58
|
+
- `-x` : stop running tests on first failure
|
59
|
+
- `--ff` : run failures from previous test before running other test cases
|
60
|
+
|
61
|
+
For other options, see `python -m pytest -h`
|
62
|
+
|
45
63
|
## Submitting Exercises
|
46
64
|
|
47
65
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/phone-number` directory.
|
@@ -56,4 +74,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
56
74
|
Event Manager by JumpstartLab [http://tutorials.jumpstartlab.com/projects/eventmanager.html](http://tutorials.jumpstartlab.com/projects/eventmanager.html)
|
57
75
|
|
58
76
|
## Submitting Incomplete Solutions
|
77
|
+
|
59
78
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -7,10 +7,10 @@ confusing. It obeys a few simple rules (below), but when it's spoken
|
|
7
7
|
quickly it's really difficult for non-children (and non-native speakers)
|
8
8
|
to understand.
|
9
9
|
|
10
|
-
- **Rule 1**: If a word begins with a vowel sound, add an "ay" sound to
|
11
|
-
|
12
|
-
- **Rule
|
13
|
-
|
10
|
+
- **Rule 1**: If a word begins with a vowel sound, add an "ay" sound to the end of the word. Please note that "xr" and "yt" at the beginning of a word make vowel sounds (e.g. "xray" -> "xrayay", "yttria" -> "yttriaay").
|
11
|
+
- **Rule 2**: If a word begins with a consonant sound, move it to the end of the word and then add an "ay" sound to the end of the word. Consonant sounds can be made up of multiple consonants, a.k.a. a consonant cluster (e.g. "chair" -> "airchay").
|
12
|
+
- **Rule 3**: If a word starts with a consonant sound followed by "qu", move it to the end of the word, and then add an "ay" sound to the end of the word (e.g. "square" -> "aresquay").
|
13
|
+
- **Rule 4**: If a word contains a "y" after a consonant cluster or as the second letter in a two letter word it makes a vowel sound (e.g. "rhythm" -> "ythmrhay", "my" -> "ymay").
|
14
14
|
|
15
15
|
There are a few more rules for edge cases, and there are regional
|
16
16
|
variants too.
|
@@ -25,12 +25,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
25
25
|
a message.
|
26
26
|
|
27
27
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
28
|
-
`raise Exception`, you
|
28
|
+
`raise Exception`, you should write:
|
29
29
|
|
30
30
|
```python
|
31
31
|
raise Exception("Meaningful message indicating the source of the error")
|
32
32
|
```
|
33
33
|
|
34
|
+
## Running the tests
|
35
|
+
|
36
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
37
|
+
|
38
|
+
- Python 2.7: `py.test pig_latin_test.py`
|
39
|
+
- Python 3.3+: `pytest pig_latin_test.py`
|
40
|
+
|
41
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
42
|
+
`python -m pytest pig_latin_test.py`
|
43
|
+
|
44
|
+
### Common `pytest` options
|
45
|
+
|
46
|
+
- `-v` : enable verbose output
|
47
|
+
- `-x` : stop running tests on first failure
|
48
|
+
- `--ff` : run failures from previous test before running other test cases
|
49
|
+
|
50
|
+
For other options, see `python -m pytest -h`
|
51
|
+
|
34
52
|
## Submitting Exercises
|
35
53
|
|
36
54
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/pig-latin` directory.
|
@@ -45,4 +63,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
45
63
|
The Pig Latin exercise at Test First Teaching by Ultrasaurus [https://github.com/ultrasaurus/test-first-teaching/blob/master/learn_ruby/pig_latin/](https://github.com/ultrasaurus/test-first-teaching/blob/master/learn_ruby/pig_latin/)
|
46
64
|
|
47
65
|
## Submitting Incomplete Solutions
|
66
|
+
|
48
67
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -42,12 +42,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
42
42
|
a message.
|
43
43
|
|
44
44
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
45
|
-
`raise Exception`, you
|
45
|
+
`raise Exception`, you should write:
|
46
46
|
|
47
47
|
```python
|
48
48
|
raise Exception("Meaningful message indicating the source of the error")
|
49
49
|
```
|
50
50
|
|
51
|
+
## Running the tests
|
52
|
+
|
53
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
54
|
+
|
55
|
+
- Python 2.7: `py.test point_mutations_test.py`
|
56
|
+
- Python 3.3+: `pytest point_mutations_test.py`
|
57
|
+
|
58
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
59
|
+
`python -m pytest point_mutations_test.py`
|
60
|
+
|
61
|
+
### Common `pytest` options
|
62
|
+
|
63
|
+
- `-v` : enable verbose output
|
64
|
+
- `-x` : stop running tests on first failure
|
65
|
+
- `--ff` : run failures from previous test before running other test cases
|
66
|
+
|
67
|
+
For other options, see `python -m pytest -h`
|
68
|
+
|
51
69
|
## Submitting Exercises
|
52
70
|
|
53
71
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/point-mutations` directory.
|
@@ -62,4 +80,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
62
80
|
The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
|
63
81
|
|
64
82
|
## Submitting Incomplete Solutions
|
83
|
+
|
65
84
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -13,12 +13,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
13
13
|
a message.
|
14
14
|
|
15
15
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
16
|
-
`raise Exception`, you
|
16
|
+
`raise Exception`, you should write:
|
17
17
|
|
18
18
|
```python
|
19
19
|
raise Exception("Meaningful message indicating the source of the error")
|
20
20
|
```
|
21
21
|
|
22
|
+
## Running the tests
|
23
|
+
|
24
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
25
|
+
|
26
|
+
- Python 2.7: `py.test poker_test.py`
|
27
|
+
- Python 3.3+: `pytest poker_test.py`
|
28
|
+
|
29
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
30
|
+
`python -m pytest poker_test.py`
|
31
|
+
|
32
|
+
### Common `pytest` options
|
33
|
+
|
34
|
+
- `-v` : enable verbose output
|
35
|
+
- `-x` : stop running tests on first failure
|
36
|
+
- `--ff` : run failures from previous test before running other test cases
|
37
|
+
|
38
|
+
For other options, see `python -m pytest -h`
|
39
|
+
|
22
40
|
## Submitting Exercises
|
23
41
|
|
24
42
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/poker` directory.
|
@@ -33,4 +51,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
33
51
|
Inspired by the training course from Udacity. [https://www.udacity.com/course/viewer#!/c-cs212/](https://www.udacity.com/course/viewer#!/c-cs212/)
|
34
52
|
|
35
53
|
## Submitting Incomplete Solutions
|
54
|
+
|
36
55
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -45,12 +45,30 @@ every exercise will require you to raise an exception, but for those that do, th
|
|
45
45
|
a message.
|
46
46
|
|
47
47
|
To raise a message with an exception, just write it as an argument to the exception type. For example, instead of
|
48
|
-
`raise Exception`, you
|
48
|
+
`raise Exception`, you should write:
|
49
49
|
|
50
50
|
```python
|
51
51
|
raise Exception("Meaningful message indicating the source of the error")
|
52
52
|
```
|
53
53
|
|
54
|
+
## Running the tests
|
55
|
+
|
56
|
+
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
57
|
+
|
58
|
+
- Python 2.7: `py.test pov_test.py`
|
59
|
+
- Python 3.3+: `pytest pov_test.py`
|
60
|
+
|
61
|
+
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
62
|
+
`python -m pytest pov_test.py`
|
63
|
+
|
64
|
+
### Common `pytest` options
|
65
|
+
|
66
|
+
- `-v` : enable verbose output
|
67
|
+
- `-x` : stop running tests on first failure
|
68
|
+
- `--ff` : run failures from previous test before running other test cases
|
69
|
+
|
70
|
+
For other options, see `python -m pytest -h`
|
71
|
+
|
54
72
|
## Submitting Exercises
|
55
73
|
|
56
74
|
Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/python/pov` directory.
|
@@ -65,4 +83,5 @@ please see the [help page](http://exercism.io/languages/python).
|
|
65
83
|
Adaptation of exercise from 4clojure [https://www.4clojure.com/](https://www.4clojure.com/)
|
66
84
|
|
67
85
|
## Submitting Incomplete Solutions
|
86
|
+
|
68
87
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|