trackler 2.2.1.104 → 2.2.1.105
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/.travis.yml +41 -1
- data/problem-specifications/README.md +5 -5
- data/problem-specifications/canonical-schema.json +11 -6
- data/problem-specifications/exercises/all-your-base/canonical-data.json +2 -2
- data/problem-specifications/exercises/circular-buffer/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/complex-numbers/canonical-data.json +9 -1
- data/problem-specifications/exercises/forth/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/grains/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/grep/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/house/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/isogram/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/list-ops/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/pov/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/scale-generator/canonical-data.json +181 -0
- data/problem-specifications/exercises/trinary/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/word-search/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/zipper/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/old-schema.json +137 -0
- data/tracks/bash/config.json +13 -1
- data/tracks/bash/exercises/scrabble-score/.meta/version +1 -0
- data/tracks/bash/exercises/scrabble-score/README.md +55 -0
- data/tracks/bash/exercises/scrabble-score/example.sh +14 -0
- data/tracks/bash/exercises/scrabble-score/scrabble_score_test.sh +89 -0
- data/tracks/c/config/exercise_readme.go.tmpl +31 -4
- data/tracks/c/exercises/all-your-base/README.md +0 -1
- data/tracks/c/exercises/beer-song/README.md +1 -1
- data/tracks/c/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/c/exercises/complex-numbers/README.md +21 -18
- data/tracks/c/exercises/nucleotide-count/README.md +2 -2
- data/tracks/c/exercises/palindrome-products/README.md +5 -12
- data/tracks/c/exercises/pangram/test/test_pangram.c +11 -22
- data/tracks/c/exercises/pascals-triangle/README.md +1 -1
- data/tracks/c/exercises/phone-number/README.md +1 -1
- data/tracks/c/exercises/react/README.md +0 -1
- data/tracks/c/exercises/rna-transcription/README.md +2 -2
- data/tracks/c/exercises/sublist/README.md +0 -1
- data/tracks/c/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/ceylon/config/exercise_readme.go.tmpl +15 -4
- data/tracks/ceylon/exercises/react/README.md +0 -1
- data/tracks/cfml/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
- data/tracks/cfml/exercises/acronym/AcronymTest.cfc +2 -6
- data/tracks/cfml/exercises/acronym/README.md +0 -1
- data/tracks/cfml/exercises/anagram/AnagramTest.cfc +0 -16
- data/tracks/cfml/exercises/atbash-cipher/README.md +2 -1
- data/tracks/cfml/exercises/bob/Bob.cfc +1 -1
- data/tracks/cfml/exercises/bob/BobTest.cfc +25 -25
- data/tracks/cfml/exercises/bob/README.md +2 -0
- data/tracks/cfml/exercises/bob/Solution.cfc +17 -5
- data/tracks/cfml/exercises/diamond/Diamond.cfc +1 -1
- data/tracks/cfml/exercises/diamond/DiamondTest.cfc +5 -5
- data/tracks/cfml/exercises/diamond/README.md +6 -6
- data/tracks/cfml/exercises/diamond/Solution.cfc +2 -2
- data/tracks/cfml/exercises/flatten-array/FlattenArray.cfc +1 -1
- data/tracks/cfml/exercises/flatten-array/FlattenArrayTest.cfc +6 -9
- data/tracks/cfml/exercises/flatten-array/README.md +1 -2
- data/tracks/cfml/exercises/flatten-array/Solution.cfc +2 -2
- data/tracks/cfml/exercises/gigasecond/Gigasecond.cfc +1 -1
- data/tracks/cfml/exercises/gigasecond/GigasecondTest.cfc +5 -5
- data/tracks/cfml/exercises/gigasecond/Solution.cfc +3 -3
- data/tracks/cfml/exercises/grains/README.md +0 -1
- data/tracks/cfml/exercises/grains/Solution.cfc +4 -1
- data/tracks/cfml/exercises/hamming/HammingTest.cfc +2 -2
- data/tracks/cfml/exercises/hello-world/HelloWorld.cfc +1 -1
- data/tracks/cfml/exercises/hello-world/HelloWorldTest.cfc +5 -4
- data/tracks/cfml/exercises/hello-world/Solution.cfc +1 -1
- data/tracks/cfml/exercises/isogram/IsogramTest.cfc +2 -2
- data/tracks/cfml/exercises/isogram/README.md +2 -1
- data/tracks/cfml/exercises/leap/Leap.cfc +1 -1
- data/tracks/cfml/exercises/leap/LeapTest.cfc +14 -22
- data/tracks/cfml/exercises/leap/README.md +1 -1
- data/tracks/cfml/exercises/leap/Solution.cfc +1 -1
- data/tracks/cfml/exercises/luhn/Luhn.cfc +1 -1
- data/tracks/cfml/exercises/luhn/LuhnTest.cfc +14 -14
- data/tracks/cfml/exercises/luhn/README.md +7 -7
- data/tracks/cfml/exercises/luhn/Solution.cfc +6 -6
- data/tracks/cfml/exercises/markdown/Markdown.cfc +4 -4
- data/tracks/cfml/exercises/markdown/MarkdownTest.cfc +9 -9
- data/tracks/cfml/exercises/markdown/Solution.cfc +4 -4
- data/tracks/cfml/exercises/nth-prime/NthPrime.cfc +1 -1
- data/tracks/cfml/exercises/nth-prime/NthPrimeTest.cfc +5 -5
- data/tracks/cfml/exercises/nth-prime/Solution.cfc +4 -4
- data/tracks/cfml/exercises/pangram/Pangram.cfc +1 -1
- data/tracks/cfml/exercises/pangram/PangramTest.cfc +14 -10
- data/tracks/cfml/exercises/pangram/README.md +1 -1
- data/tracks/cfml/exercises/pangram/Solution.cfc +4 -4
- data/tracks/cfml/exercises/pig-latin/PigLatin.cfc +1 -1
- data/tracks/cfml/exercises/pig-latin/PigLatinTest.cfc +35 -23
- data/tracks/cfml/exercises/pig-latin/Solution.cfc +4 -4
- data/tracks/cfml/exercises/rna-transcription/README.md +2 -2
- data/tracks/cfml/exercises/rna-transcription/RnaTranscriptionTest.cfc +0 -12
- data/tracks/cfml/exercises/saddle-points/README.md +2 -2
- data/tracks/cfml/exercises/saddle-points/SaddlePoints.cfc +1 -1
- data/tracks/cfml/exercises/saddle-points/SaddlePointsTest.cfc +5 -5
- data/tracks/cfml/exercises/saddle-points/Solution.cfc +10 -10
- data/tracks/cfml/exercises/scrabble-score/README.md +3 -1
- data/tracks/cfml/exercises/scrabble-score/ScrabbleScore.cfc +1 -1
- data/tracks/cfml/exercises/scrabble-score/ScrabbleScoreTest.cfc +11 -11
- data/tracks/cfml/exercises/scrabble-score/Solution.cfc +2 -2
- data/tracks/cfml/exercises/secret-handshake/README.md +2 -2
- data/tracks/cfml/exercises/secret-handshake/SecretHandshake.cfc +1 -1
- data/tracks/cfml/exercises/secret-handshake/SecretHandshakeTest.cfc +11 -11
- data/tracks/cfml/exercises/secret-handshake/Solution.cfc +6 -6
- data/tracks/cfml/exercises/space-age/README.md +1 -2
- data/tracks/cfml/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/cfml/exercises/sum-of-multiples/SumOfMultiplesTest.cfc +4 -0
- data/tracks/cfml/exercises/triangle/README.md +9 -6
- data/tracks/cfml/exercises/word-count/README.md +1 -2
- data/tracks/cfml/exercises/word-count/Solution.cfc +2 -2
- data/tracks/cfml/exercises/word-count/WordCount.cfc +1 -1
- data/tracks/cfml/exercises/word-count/WordCountTest.cfc +14 -10
- data/tracks/cfml/tasks/GenerateReadme.cfc +2 -2
- data/tracks/cfml/tasks/GenerateTests.cfc +17 -4
- data/tracks/cfml/tasks/TestAllSolutions.cfc +3 -0
- data/tracks/common-lisp/config/exercise_readme.go.tmpl +46 -4
- data/tracks/common-lisp/exercises/acronym/README.md +1 -1
- data/tracks/common-lisp/exercises/beer-song/README.md +1 -1
- data/tracks/common-lisp/exercises/crypto-square/README.md +6 -4
- data/tracks/common-lisp/exercises/etl/README.md +2 -2
- data/tracks/common-lisp/exercises/isogram/README.md +3 -1
- data/tracks/common-lisp/exercises/meetup/README.md +16 -12
- data/tracks/common-lisp/exercises/nucleotide-count/README.md +2 -2
- data/tracks/common-lisp/exercises/pascals-triangle/README.md +1 -1
- data/tracks/common-lisp/exercises/phone-number/README.md +1 -1
- data/tracks/common-lisp/exercises/rna-transcription/README.md +2 -2
- data/tracks/common-lisp/exercises/space-age/README.md +1 -2
- data/tracks/common-lisp/exercises/sublist/README.md +2 -0
- data/tracks/crystal/config/exercise_readme.go.tmpl +22 -4
- data/tracks/crystal/exercises/acronym/README.md +0 -1
- data/tracks/crystal/exercises/atbash-cipher/README.md +2 -1
- data/tracks/crystal/exercises/binary/README.md +2 -0
- data/tracks/{php → crystal}/exercises/bob/.meta/description.md +0 -0
- data/tracks/crystal/exercises/flatten-array/README.md +1 -2
- data/tracks/crystal/exercises/forth/README.md +0 -1
- data/tracks/crystal/exercises/leap/README.md +1 -1
- data/tracks/crystal/exercises/pangram/README.md +1 -1
- data/tracks/crystal/exercises/pascals-triangle/README.md +2 -2
- data/tracks/crystal/exercises/react/README.md +0 -1
- data/tracks/crystal/exercises/rna-transcription/README.md +2 -2
- data/tracks/crystal/exercises/roman-numerals/README.md +1 -1
- data/tracks/crystal/exercises/run-length-encoding/README.md +4 -4
- data/tracks/csharp/config/exercise_readme.go.tmpl +0 -3
- data/tracks/csharp/exercises/accumulate/README.md +0 -3
- data/tracks/csharp/exercises/acronym/README.md +0 -3
- data/tracks/csharp/exercises/all-your-base/README.md +0 -3
- data/tracks/csharp/exercises/allergies/README.md +0 -3
- data/tracks/csharp/exercises/alphametics/README.md +0 -3
- data/tracks/csharp/exercises/anagram/README.md +0 -3
- data/tracks/csharp/exercises/armstrong-numbers/README.md +0 -3
- data/tracks/csharp/exercises/atbash-cipher/README.md +0 -3
- data/tracks/csharp/exercises/bank-account/README.md +0 -3
- data/tracks/csharp/exercises/beer-song/README.md +0 -3
- data/tracks/csharp/exercises/binary-search-tree/README.md +0 -3
- data/tracks/csharp/exercises/binary-search/README.md +0 -3
- data/tracks/csharp/exercises/binary/README.md +0 -3
- data/tracks/csharp/exercises/bob/README.md +0 -3
- data/tracks/csharp/exercises/book-store/README.md +0 -3
- data/tracks/csharp/exercises/bowling/README.md +0 -3
- data/tracks/csharp/exercises/bracket-push/README.md +0 -3
- data/tracks/csharp/exercises/change/README.md +0 -3
- data/tracks/csharp/exercises/circular-buffer/README.md +0 -3
- data/tracks/csharp/exercises/clock/README.md +0 -3
- data/tracks/csharp/exercises/collatz-conjecture/README.md +0 -3
- data/tracks/csharp/exercises/complex-numbers/README.md +0 -3
- data/tracks/csharp/exercises/connect/README.md +0 -3
- data/tracks/csharp/exercises/crypto-square/README.md +0 -3
- data/tracks/csharp/exercises/custom-set/README.md +0 -3
- data/tracks/csharp/exercises/diamond/README.md +0 -3
- data/tracks/csharp/exercises/difference-of-squares/README.md +0 -3
- data/tracks/csharp/exercises/diffie-hellman/README.md +0 -3
- data/tracks/csharp/exercises/dominoes/README.md +0 -3
- data/tracks/csharp/exercises/dot-dsl/README.md +0 -3
- data/tracks/csharp/exercises/error-handling/README.md +0 -3
- data/tracks/csharp/exercises/etl/README.md +0 -3
- data/tracks/csharp/exercises/flatten-array/README.md +0 -3
- data/tracks/csharp/exercises/food-chain/README.md +0 -3
- data/tracks/csharp/exercises/forth/README.md +0 -3
- data/tracks/csharp/exercises/gigasecond/README.md +0 -3
- data/tracks/csharp/exercises/go-counting/README.md +0 -3
- data/tracks/csharp/exercises/grade-school/README.md +0 -3
- data/tracks/csharp/exercises/grains/README.md +0 -3
- data/tracks/csharp/exercises/grep/README.md +0 -3
- data/tracks/csharp/exercises/hamming/README.md +0 -3
- data/tracks/csharp/exercises/hangman/README.md +0 -3
- data/tracks/csharp/exercises/hello-world/README.md +0 -3
- data/tracks/csharp/exercises/hexadecimal/README.md +0 -3
- data/tracks/csharp/exercises/house/README.md +0 -3
- data/tracks/csharp/exercises/isbn-verifier/README.md +0 -3
- data/tracks/csharp/exercises/isogram/README.md +0 -3
- data/tracks/csharp/exercises/kindergarten-garden/README.md +0 -3
- data/tracks/csharp/exercises/largest-series-product/README.md +0 -3
- data/tracks/csharp/exercises/leap/README.md +0 -3
- data/tracks/csharp/exercises/ledger/README.md +0 -3
- data/tracks/csharp/exercises/linked-list/README.md +0 -3
- data/tracks/csharp/exercises/list-ops/README.md +0 -3
- data/tracks/csharp/exercises/luhn/README.md +0 -3
- data/tracks/csharp/exercises/markdown/README.md +0 -3
- data/tracks/csharp/exercises/matrix/README.md +0 -3
- data/tracks/csharp/exercises/meetup/README.md +0 -3
- data/tracks/csharp/exercises/minesweeper/README.md +0 -3
- data/tracks/csharp/exercises/nth-prime/README.md +0 -3
- data/tracks/csharp/exercises/nucleotide-count/README.md +0 -3
- data/tracks/csharp/exercises/ocr-numbers/README.md +0 -3
- data/tracks/csharp/exercises/octal/README.md +0 -3
- data/tracks/csharp/exercises/palindrome-products/README.md +0 -3
- data/tracks/csharp/exercises/pangram/README.md +0 -3
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +0 -3
- data/tracks/csharp/exercises/pascals-triangle/README.md +0 -3
- data/tracks/csharp/exercises/perfect-numbers/README.md +0 -3
- data/tracks/csharp/exercises/phone-number/README.md +0 -3
- data/tracks/csharp/exercises/pig-latin/README.md +0 -3
- data/tracks/csharp/exercises/poker/README.md +0 -3
- data/tracks/csharp/exercises/pov/README.md +0 -3
- data/tracks/csharp/exercises/prime-factors/README.md +0 -3
- data/tracks/csharp/exercises/protein-translation/README.md +0 -3
- data/tracks/csharp/exercises/proverb/README.md +0 -3
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +0 -3
- data/tracks/csharp/exercises/queen-attack/README.md +0 -3
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +0 -3
- data/tracks/csharp/exercises/raindrops/README.md +0 -3
- data/tracks/csharp/exercises/react/README.md +0 -3
- data/tracks/csharp/exercises/rectangles/README.md +0 -3
- data/tracks/csharp/exercises/reverse-string/README.md +0 -3
- data/tracks/csharp/exercises/rna-transcription/README.md +0 -3
- data/tracks/csharp/exercises/robot-name/README.md +0 -3
- data/tracks/csharp/exercises/robot-simulator/README.md +0 -3
- data/tracks/csharp/exercises/roman-numerals/README.md +0 -3
- data/tracks/csharp/exercises/rotational-cipher/README.md +0 -3
- data/tracks/csharp/exercises/run-length-encoding/README.md +0 -3
- data/tracks/csharp/exercises/saddle-points/README.md +0 -3
- data/tracks/csharp/exercises/say/README.md +0 -3
- data/tracks/csharp/exercises/scale-generator/README.md +0 -3
- data/tracks/csharp/exercises/scrabble-score/README.md +0 -3
- data/tracks/csharp/exercises/secret-handshake/README.md +0 -3
- data/tracks/csharp/exercises/series/README.md +0 -3
- data/tracks/csharp/exercises/sgf-parsing/README.md +0 -3
- data/tracks/csharp/exercises/sieve/README.md +0 -3
- data/tracks/csharp/exercises/simple-cipher/README.md +0 -3
- data/tracks/csharp/exercises/simple-linked-list/README.md +0 -3
- data/tracks/csharp/exercises/space-age/README.md +0 -3
- data/tracks/csharp/exercises/spiral-matrix/README.md +0 -3
- data/tracks/csharp/exercises/strain/README.md +0 -3
- data/tracks/csharp/exercises/sublist/README.md +0 -3
- data/tracks/csharp/exercises/sum-of-multiples/README.md +0 -3
- data/tracks/csharp/exercises/tournament/README.md +0 -3
- data/tracks/csharp/exercises/transpose/README.md +0 -3
- data/tracks/csharp/exercises/tree-building/README.md +0 -3
- data/tracks/csharp/exercises/triangle/README.md +0 -3
- data/tracks/csharp/exercises/trinary/README.md +0 -3
- data/tracks/csharp/exercises/twelve-days/README.md +0 -3
- data/tracks/csharp/exercises/two-bucket/README.md +0 -3
- data/tracks/csharp/exercises/two-fer/README.md +0 -3
- data/tracks/csharp/exercises/variable-length-quantity/README.md +0 -3
- data/tracks/csharp/exercises/word-count/README.md +0 -3
- data/tracks/csharp/exercises/word-search/README.md +0 -3
- data/tracks/csharp/exercises/wordy/README.md +0 -3
- data/tracks/csharp/exercises/zebra-puzzle/README.md +0 -3
- data/tracks/csharp/exercises/zipper/README.md +0 -3
- data/tracks/dart/config/exercise_readme.go.tmpl +9 -4
- data/tracks/dart/exercises/anagram/README.md +0 -1
- data/tracks/dart/exercises/difference-of-squares/README.md +0 -1
- data/tracks/dart/exercises/gigasecond/README.md +0 -1
- data/tracks/dart/exercises/hamming/README.md +0 -1
- data/tracks/dart/exercises/hello-world/README.md +0 -1
- data/tracks/dart/exercises/leap/README.md +0 -1
- data/tracks/dart/exercises/phone-number/.meta/hints.md +24 -0
- data/tracks/dart/exercises/phone-number/README.md +17 -2
- data/tracks/dart/exercises/raindrops/README.md +0 -1
- data/tracks/dart/exercises/rna-transcription/README.md +2 -3
- data/tracks/dart/exercises/word-count/README.md +0 -1
- data/tracks/delphi/config/exercise_readme.go.tmpl +20 -4
- data/tracks/delphi/exercises/bank-account/README.md +0 -1
- data/tracks/delphi/exercises/minesweeper/README.md +0 -1
- data/tracks/delphi/exercises/two-fer/README.md +1 -1
- data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +1 -2
- data/tracks/elm/README.md +23 -20
- data/tracks/elm/bin/build.sh +1 -1
- data/tracks/elm/bin/install-elm-format +2 -2
- data/tracks/elm/exercises/accumulate/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/all-your-base/AllYourBase.example.elm +10 -10
- data/tracks/elm/exercises/all-your-base/tests/Tests.elm +62 -42
- data/tracks/elm/exercises/allergies/Allergies.example.elm +1 -1
- data/tracks/elm/exercises/allergies/tests/Tests.elm +4 -4
- data/tracks/elm/exercises/anagram/Anagram.example.elm +2 -2
- data/tracks/elm/exercises/anagram/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/atbash-cipher/AtbashCipher.example.elm +11 -11
- data/tracks/elm/exercises/atbash-cipher/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/bob/Bob.example.elm +1 -1
- data/tracks/elm/exercises/bob/tests/Tests.elm +5 -5
- data/tracks/elm/exercises/collatz-conjecture/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.example.elm +1 -1
- data/tracks/elm/exercises/difference-of-squares/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/gigasecond/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/grade-school/GradeSchool.example.elm +2 -2
- data/tracks/elm/exercises/grade-school/tests/Tests.elm +3 -3
- data/tracks/elm/exercises/hamming/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/hello-world/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/isogram/Isogram.example.elm +7 -7
- data/tracks/elm/exercises/isogram/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/largest-series-product/LargestSeriesProduct.example.elm +4 -4
- data/tracks/elm/exercises/largest-series-product/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/leap/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/list-ops/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/nucleotide-count/NucleotideCount.elm +1 -1
- data/tracks/elm/exercises/nucleotide-count/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/pangram/Pangram.example.elm +2 -2
- data/tracks/elm/exercises/pangram/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/pascals-triangle/Triangle.example.elm +4 -4
- data/tracks/elm/exercises/phone-number/PhoneNumber.example.elm +3 -3
- data/tracks/elm/exercises/phone-number/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/raindrops/Raindrops.example.elm +4 -4
- data/tracks/elm/exercises/raindrops/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/rna-transcription/tests/Tests.elm +1 -7
- data/tracks/elm/exercises/robot-simulator/RobotSimulator.example.elm +5 -5
- data/tracks/elm/exercises/robot-simulator/tests/Tests.elm +65 -65
- data/tracks/elm/exercises/roman-numerals/RomanNumerals.example.elm +1 -1
- data/tracks/elm/exercises/roman-numerals/tests/Tests.elm +19 -19
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.elm +1 -1
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.example.elm +2 -2
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm +3 -3
- data/tracks/elm/exercises/run-length-encoding/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/say/Say.example.elm +4 -4
- data/tracks/elm/exercises/say/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.example.elm +16 -16
- data/tracks/elm/exercises/scrabble-score/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/series/Series.example.elm +5 -5
- data/tracks/elm/exercises/series/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/space-age/SpaceAge.elm +9 -8
- data/tracks/elm/exercises/space-age/SpaceAge.example.elm +3 -2
- data/tracks/elm/exercises/space-age/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/strain/tests/Tests.elm +3 -3
- data/tracks/elm/exercises/sublist/Sublist.elm +1 -1
- data/tracks/elm/exercises/sublist/Sublist.example.elm +6 -6
- data/tracks/elm/exercises/sublist/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/sum-of-multiples/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/triangle/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/word-count/WordCount.example.elm +2 -2
- data/tracks/elm/exercises/word-count/tests/Tests.elm +2 -2
- data/tracks/factor/config/exercise_readme.go.tmpl +12 -4
- data/tracks/factor/exercises/isogram/README.md +4 -3
- data/tracks/factor/exercises/leap/README.md +1 -1
- data/tracks/factor/exercises/two-fer/README.md +3 -32
- data/tracks/fsharp/config.json +10 -0
- data/tracks/fsharp/exercises/Exercises.sln +6 -0
- data/tracks/fsharp/exercises/rational-numbers/Example.fs +46 -0
- data/tracks/fsharp/exercises/rational-numbers/Program.fs +1 -0
- data/tracks/fsharp/exercises/rational-numbers/README.md +29 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbers.fs +19 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbers.fsproj +23 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbersTest.fs +153 -0
- data/tracks/fsharp/exercises/two-bucket/Example.fs +49 -57
- data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +40 -25
- data/tracks/fsharp/exercises/variable-length-quantity/Example.fs +21 -17
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +85 -42
- data/tracks/fsharp/exercises/word-search/Example.fs +20 -14
- data/tracks/fsharp/exercises/word-search/WordSearch.fs +1 -1
- data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +303 -48
- data/tracks/fsharp/generators/Formatting.fs +7 -2
- data/tracks/fsharp/generators/Generators.fs +97 -2
- data/tracks/fsharp/generators/Templates/_AssertEqualWithin.liquid +1 -0
- data/tracks/go/config.json +14 -0
- data/tracks/go/exercises/all-your-base/.meta/gen.go +2 -2
- data/tracks/go/exercises/all-your-base/cases_test.go +2 -2
- data/tracks/go/exercises/rectangles/.meta/gen.go +57 -0
- data/tracks/go/exercises/rectangles/README.md +85 -0
- data/tracks/go/exercises/rectangles/cases_test.go +134 -0
- data/tracks/go/exercises/rectangles/example.go +51 -0
- data/tracks/go/exercises/rectangles/rectangles_test.go +22 -0
- data/tracks/go/exercises/reverse-string/.meta/gen.go +4 -2
- data/tracks/go/exercises/reverse-string/cases_test.go +4 -2
- data/tracks/go/exercises/reverse-string/reverse_string_test.go +12 -1
- data/tracks/haskell/exercises/matrix/package.yaml +1 -1
- data/tracks/haskell/exercises/matrix/test/Tests.hs +1 -1
- data/tracks/java/config.json +12 -0
- data/tracks/java/config/exercise_readme.go.tmpl +10 -4
- data/tracks/java/exercises/all-your-base/README.md +0 -1
- data/tracks/java/exercises/alphametics/README.md +0 -1
- data/tracks/java/exercises/bank-account/README.md +0 -1
- data/tracks/java/exercises/complex-numbers/src/test/java/ComplexNumberTest.java +17 -15
- data/tracks/java/exercises/custom-set/README.md +0 -1
- data/tracks/java/exercises/diamond/.meta/version +1 -1
- data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +9 -11
- data/tracks/java/exercises/forth/README.md +0 -11
- data/tracks/java/exercises/list-ops/README.md +0 -1
- data/tracks/java/exercises/markdown/README.md +0 -1
- data/tracks/java/exercises/minesweeper/README.md +0 -1
- data/tracks/java/exercises/palindrome-products/.meta/src/reference/java/PalindromeCalculator.java +9 -0
- data/tracks/java/exercises/palindrome-products/.meta/version +1 -0
- data/tracks/java/exercises/palindrome-products/src/test/java/PalindromeCalculatorTest.java +110 -15
- data/tracks/java/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/java/exercises/pig-latin/.meta/src/reference/java/PigLatinTranslator.java +16 -0
- data/tracks/java/exercises/pig-latin/.meta/version +1 -0
- data/tracks/java/exercises/pig-latin/src/test/java/PigLatinTranslatorTest.java +15 -1
- data/tracks/java/exercises/prime-factors/.meta/version +1 -1
- data/tracks/java/exercises/rational-numbers/.meta/src/reference/java/Rational.java +128 -0
- data/tracks/java/exercises/rational-numbers/.meta/version +1 -0
- data/tracks/java/exercises/rational-numbers/README.md +47 -0
- data/tracks/java/exercises/rational-numbers/build.gradle +17 -0
- data/tracks/java/exercises/rational-numbers/src/main/java/Rational.java +40 -0
- data/tracks/java/exercises/rational-numbers/src/test/java/RationalTest.java +288 -0
- data/tracks/java/exercises/rectangles/README.md +0 -1
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/sublist/README.md +0 -1
- data/tracks/java/exercises/tournament/README.md +0 -1
- data/tracks/java/exercises/two-fer/README.md +1 -1
- data/tracks/java/exercises/word-search/README.md +0 -1
- data/tracks/lua/config/exercise_readme.go.tmpl +9 -4
- data/tracks/lua/exercises/all-your-base/README.md +0 -1
- data/tracks/lua/exercises/alphametics/README.md +0 -1
- data/tracks/lua/exercises/bank-account/README.md +0 -1
- data/tracks/lua/exercises/custom-set/README.md +0 -1
- data/tracks/lua/exercises/isbn-verifier/README.md +1 -1
- data/tracks/lua/exercises/list-ops/README.md +0 -1
- data/tracks/lua/exercises/minesweeper/README.md +0 -1
- data/tracks/lua/exercises/protein-translation/README.md +2 -2
- data/tracks/lua/exercises/react/README.md +0 -1
- data/tracks/lua/exercises/rectangles/README.md +0 -1
- data/tracks/lua/exercises/reverse-string/README.md +1 -1
- data/tracks/lua/exercises/rna-transcription/README.md +1 -1
- data/tracks/lua/exercises/sublist/README.md +0 -1
- data/tracks/lua/exercises/tournament/README.md +0 -1
- data/tracks/lua/exercises/word-search/README.md +0 -1
- data/tracks/perl5/bin/exercise-gen.pl +4 -1
- data/tracks/perl5/exercises/bob/bob.t +9 -15
- data/tracks/perl5/exercises/bob/example.yaml +0 -4
- data/tracks/perl5/exercises/hello-world/example.yaml +0 -4
- data/tracks/perl5/exercises/hello-world/hello-world.t +9 -15
- data/tracks/perl5/exercises/leap/example.yaml +0 -4
- data/tracks/perl5/exercises/leap/leap.t +9 -15
- data/tracks/perl5/exercises/luhn/luhn.t +9 -13
- data/tracks/perl5/exercises/phone-number/phone-number.t +9 -13
- data/tracks/perl5/templates/test.mustache +10 -18
- data/tracks/perl6/bin/exercise-gen.pl6 +12 -2
- data/tracks/perl6/config/exercise_readme.go.tmpl +18 -4
- data/tracks/perl6/exercises/all-your-base/README.md +0 -1
- data/tracks/perl6/exercises/raindrops/.meta/exercise-data.yaml +2 -2
- data/tracks/perl6/exercises/raindrops/raindrops.t +57 -21
- data/tracks/perl6/exercises/two-fer/README.md +1 -1
- data/tracks/php/.travis.yml +1 -0
- data/tracks/php/exercises/bob/README.md +2 -0
- data/tracks/php/exercises/bob/bob_test.php +4 -1
- data/tracks/php/exercises/bob/example.php +4 -0
- data/tracks/php/exercises/connect/example.php +3 -4
- data/tracks/python/config.json +12 -12
- data/tracks/python/exercises/beer-song/beer_song.py +1 -5
- data/tracks/python/exercises/beer-song/beer_song_test.py +376 -57
- data/tracks/python/exercises/beer-song/example.py +18 -13
- data/tracks/r/config/exercise_readme.go.tmpl +9 -4
- data/tracks/r/exercises/allergies/README.md +0 -1
- data/tracks/r/exercises/beer-song/README.md +2 -2
- data/tracks/r/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/r/exercises/diamond/README.md +6 -6
- data/tracks/r/exercises/grains/README.md +0 -1
- data/tracks/r/exercises/isogram/README.md +2 -1
- data/tracks/r/exercises/leap/README.md +1 -1
- data/tracks/r/exercises/luhn/README.md +7 -7
- data/tracks/r/exercises/nucleotide-count/README.md +8 -22
- data/tracks/r/exercises/pangram/README.md +1 -1
- data/tracks/r/exercises/pascals-triangle/README.md +2 -2
- data/tracks/r/exercises/perfect-numbers/README.md +2 -2
- data/tracks/r/exercises/phone-number/README.md +4 -3
- data/tracks/r/exercises/rna-transcription/README.md +2 -2
- data/tracks/r/exercises/rotational-cipher/README.md +2 -1
- data/tracks/r/exercises/scrabble-score/README.md +3 -1
- data/tracks/r/exercises/secret-handshake/README.md +2 -2
- data/tracks/r/exercises/space-age/README.md +1 -1
- data/tracks/r/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/r/exercises/tournament/README.md +5 -6
- data/tracks/r/exercises/triangle/README.md +9 -6
- data/tracks/r/exercises/word-count/README.md +1 -2
- data/tracks/rust/.gitignore +1 -0
- data/tracks/rust/exercises/reverse-string/.meta/hints.md +3 -0
- data/tracks/rust/exercises/reverse-string/README.md +5 -0
- data/tracks/rust/exercises/reverse-string/tests/reverse-string.rs +7 -0
- data/tracks/scala/config/exercise_readme.go.tmpl +10 -4
- data/tracks/scala/exercises/accumulate/README.md +0 -3
- data/tracks/scala/exercises/acronym/README.md +0 -1
- data/tracks/scala/exercises/acronym/src/test/scala/AcronymTest.scala +6 -12
- data/tracks/scala/exercises/all-your-base/README.md +1 -2
- data/tracks/scala/exercises/all-your-base/example.scala +5 -4
- data/tracks/scala/exercises/all-your-base/src/test/scala/AllYourBaseTest.scala +26 -27
- data/tracks/scala/exercises/allergies/README.md +0 -1
- data/tracks/scala/exercises/allergies/src/test/scala/AllergiesTest.scala +1 -1
- data/tracks/scala/exercises/alphametics/README.md +2 -3
- data/tracks/scala/exercises/alphametics/example.scala +25 -25
- data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +58 -42
- data/tracks/scala/exercises/anagram/src/test/scala/AnagramTest.scala +4 -30
- data/tracks/scala/exercises/atbash-cipher/README.md +2 -1
- data/tracks/scala/exercises/atbash-cipher/src/test/scala/AtbashCipherTest.scala +18 -14
- data/tracks/scala/exercises/bank-account/README.md +0 -1
- data/tracks/scala/exercises/beer-song/README.md +2 -2
- data/tracks/scala/exercises/binary/README.md +2 -0
- data/tracks/scala/exercises/bob/example.scala +11 -0
- data/tracks/scala/exercises/bob/src/test/scala/BobTest.scala +3 -2
- data/tracks/scala/exercises/book-store/README.md +5 -5
- data/tracks/scala/exercises/bowling/README.md +20 -6
- data/tracks/scala/exercises/change/README.md +1 -1
- data/tracks/scala/exercises/collatz-conjecture/README.md +4 -3
- data/tracks/scala/exercises/connect/README.md +1 -2
- data/tracks/scala/exercises/crypto-square/README.md +10 -8
- data/tracks/scala/exercises/custom-set/README.md +0 -1
- data/tracks/scala/exercises/dominoes/README.md +3 -4
- data/tracks/scala/exercises/etl/README.md +3 -1
- data/tracks/scala/exercises/flatten-array/README.md +7 -8
- data/tracks/scala/exercises/food-chain/README.md +1 -1
- data/tracks/scala/exercises/forth/README.md +0 -1
- data/tracks/scala/exercises/grade-school/README.md +0 -1
- data/tracks/scala/exercises/grains/README.md +0 -1
- data/tracks/scala/exercises/house/README.md +2 -3
- data/tracks/scala/exercises/isogram/README.md +2 -1
- data/tracks/scala/exercises/kindergarten-garden/README.md +13 -13
- data/tracks/scala/exercises/leap/README.md +1 -1
- data/tracks/scala/exercises/lens-person/README.md +1 -2
- data/tracks/scala/exercises/linked-list/README.md +10 -10
- data/tracks/scala/exercises/luhn/README.md +7 -7
- data/tracks/scala/exercises/matrix/README.md +6 -4
- data/tracks/scala/exercises/meetup/README.md +16 -13
- data/tracks/scala/exercises/minesweeper/README.md +0 -1
- data/tracks/scala/exercises/nucleotide-count/README.md +8 -22
- data/tracks/scala/exercises/ocr-numbers/README.md +6 -6
- data/tracks/scala/exercises/octal/README.md +6 -2
- data/tracks/scala/exercises/palindrome-products/README.md +15 -16
- data/tracks/scala/exercises/pangram/README.md +1 -1
- data/tracks/scala/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/scala/exercises/pascals-triangle/README.md +2 -2
- data/tracks/scala/exercises/perfect-numbers/README.md +2 -2
- data/tracks/scala/exercises/phone-number/README.md +4 -3
- data/tracks/scala/exercises/protein-translation/README.md +5 -6
- data/tracks/scala/exercises/pythagorean-triplet/README.md +3 -3
- data/tracks/scala/exercises/queen-attack/README.md +1 -1
- data/tracks/scala/exercises/rail-fence-cipher/README.md +12 -7
- data/tracks/scala/exercises/rna-transcription/README.md +2 -2
- data/tracks/scala/exercises/roman-numerals/README.md +1 -1
- data/tracks/scala/exercises/run-length-encoding/README.md +4 -4
- data/tracks/scala/exercises/saddle-points/README.md +2 -2
- data/tracks/scala/exercises/scrabble-score/README.md +3 -1
- data/tracks/scala/exercises/secret-handshake/README.md +2 -2
- data/tracks/scala/exercises/sgf-parsing/README.md +4 -5
- data/tracks/scala/exercises/simple-cipher/README.md +5 -7
- data/tracks/scala/exercises/space-age/README.md +1 -1
- data/tracks/scala/exercises/spiral-matrix/README.md +2 -2
- data/tracks/scala/exercises/sublist/README.md +0 -1
- data/tracks/scala/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/scala/exercises/triangle/README.md +9 -6
- data/tracks/scala/exercises/trinary/README.md +1 -1
- data/tracks/scala/exercises/variable-length-quantity/README.md +6 -7
- data/tracks/scala/exercises/word-count/README.md +1 -2
- data/tracks/scala/exercises/wordy/README.md +0 -5
- data/tracks/scala/exercises/zipper/README.md +1 -2
- data/tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala +3 -5
- data/tracks/scala/testgen/src/main/scala/AllergiesTestGenerator.scala +8 -5
- data/tracks/scala/testgen/src/main/scala/{AlphametricsTestGenerator.scala → AlphameticsTestGenerator.scala} +5 -5
- data/tracks/scala/testgen/src/main/scala/AnagramTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/AtbashCipherTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/BobTestGenerator.scala +4 -3
- data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +35 -0
- data/tracks/sml/config/exercise_readme.go.tmpl +29 -4
- data/tracks/sml/exercises/accumulate/README.md +2 -2
- data/tracks/sml/exercises/all-your-base/README.md +13 -10
- data/tracks/sml/exercises/atbash-cipher/README.md +2 -1
- data/tracks/sml/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/sml/exercises/diamond/README.md +6 -6
- data/tracks/sml/exercises/leap/README.md +1 -1
- data/tracks/sml/exercises/list-ops/README.md +0 -1
- data/tracks/sml/exercises/nth-prime/README.md +1 -1
- data/tracks/sml/exercises/pangram/README.md +1 -1
- data/tracks/sml/exercises/perfect-numbers/README.md +2 -2
- data/tracks/sml/exercises/phone-number/README.md +4 -3
- data/tracks/sml/exercises/rna-transcription/README.md +2 -2
- data/tracks/sml/exercises/roman-numerals/README.md +1 -1
- data/tracks/sml/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/sml/exercises/two-fer/README.md +2 -31
- data/tracks/vimscript/config/exercise_readme.go.tmpl +8 -4
- data/tracks/vimscript/exercises/allergies/README.md +0 -1
- data/tracks/vimscript/exercises/atbash-cipher/README.md +2 -1
- data/tracks/vimscript/exercises/beer-song/README.md +2 -2
- data/tracks/vimscript/exercises/etl/README.md +3 -1
- data/tracks/vimscript/exercises/leap/README.md +1 -1
- data/tracks/vimscript/exercises/nucleotide-count/README.md +8 -22
- data/tracks/vimscript/exercises/pangram/README.md +1 -1
- data/tracks/vimscript/exercises/phone-number/README.md +4 -3
- data/tracks/vimscript/exercises/rna-transcription/README.md +2 -2
- data/tracks/vimscript/exercises/roman-numerals/README.md +1 -1
- data/tracks/vimscript/exercises/scrabble-score/README.md +3 -1
- data/tracks/vimscript/exercises/triangle/README.md +9 -6
- data/tracks/vimscript/exercises/word-count/README.md +1 -2
- metadata +44 -78
- data/tracks/c/docs/EXERCISE_README_INSERT.md +0 -30
- data/tracks/ceylon/config/exercise-readme-insert.md +0 -1
- data/tracks/common-lisp/docs/EXERCISE_README_INSERT.md +0 -45
- data/tracks/crystal/docs/EXERCISE_README_INSERT.md +0 -21
- data/tracks/dart/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/delphi/docs/EXERCISE_README_INSERT.md +0 -19
- data/tracks/factor/docs/EXERCISE_README_INSERT.md +0 -12
- data/tracks/java/config/exercise-readme-insert.md +0 -9
- data/tracks/lua/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/perl6/docs/EXERCISE_README_INSERT.md +0 -17
- data/tracks/r/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/rust/exercises/binary-search/Cargo.lock +0 -4
- data/tracks/rust/exercises/collatz-conjecture/Cargo.lock +0 -4
- data/tracks/rust/exercises/isbn-verifier/Cargo.lock +0 -4
- data/tracks/rust/exercises/two-bucket/Cargo.lock +0 -4
- data/tracks/scala/docs/EXERCISE_README_INSERT.md +0 -9
- data/tracks/scala/exercises/bob/.meta/description.md +0 -10
- data/tracks/sml/docs/EXERCISE_README_INSERT.md +0 -28
- data/tracks/vimscript/docs/EXERCISE_README_INSERT.md +0 -7
@@ -14,7 +14,6 @@ use Test::More{{#plan}} tests => {{&plan}}{{/plan}};{{#plan_comment}} {{&plan_co
|
|
14
14
|
|
15
15
|
use_ok $module or BAIL_OUT;{{#use_test_comment}} {{&use_test_comment}}{{/use_test_comment}}
|
16
16
|
{{#version_test_comment}}
|
17
|
-
|
18
17
|
{{&version_test_comment}}{{/version_test_comment}}
|
19
18
|
my $exercise_version = $exercise->VERSION // 0;
|
20
19
|
if ($exercise_version != $test_version) {
|
@@ -31,28 +30,21 @@ foreach ( qw({{&subs}}) ) {
|
|
31
30
|
$subs{$_} = $exercise->can($_);
|
32
31
|
}
|
33
32
|
{{/subs}}{{#cdata}}
|
34
|
-
my $C_DATA;{{/cdata}}
|
33
|
+
my $C_DATA = do { local $/; decode_json(<DATA>); };{{/cdata}}
|
35
34
|
{{&tests}}
|
36
35
|
{{#cdata}}{{#cdata_test_comment}}
|
37
36
|
{{&cdata_test_comment}}{{/cdata_test_comment}}
|
38
37
|
SKIP: {
|
39
38
|
skip '', 1 unless $ENV{EXERCISM};
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
TODO: {
|
40
|
+
local $TODO = 'update canonical-data';
|
41
|
+
is_deeply eval q{
|
42
|
+
use Path::Tiny;
|
43
|
+
decode_json path("$dir/../../problem-specifications/exercises/".path($dir)->basename.'/canonical-data.json')->realpath->slurp;
|
44
|
+
}, $C_DATA, 'canonical-data';
|
45
|
+
}
|
44
46
|
}
|
45
|
-
{{/cdata}}
|
46
|
-
|
47
|
-
done_testing;{{#done_testing_comment}} {{&done_testing_comment}}{{/done_testing_comment}}{{#after_done_testing}}
|
48
|
-
|
49
|
-
{{&after_done_testing}}{{/after_done_testing}}{{#cdata}}
|
50
|
-
{{#INIT_comment}}
|
51
|
-
|
52
|
-
{{&INIT_comment}}{{/INIT_comment}}
|
53
|
-
INIT {
|
54
|
-
$C_DATA = decode_json <<'EOF';
|
55
47
|
|
48
|
+
__DATA__
|
56
49
|
{{&json}}
|
57
|
-
|
58
|
-
}{{/cdata}}
|
50
|
+
{{/cdata}}
|
@@ -15,20 +15,30 @@ given $base-dir {
|
|
15
15
|
}
|
16
16
|
}
|
17
17
|
|
18
|
-
|
18
|
+
#| Displays this message.
|
19
|
+
multi MAIN ( Bool:D :h(:help(:$man)) ) {
|
20
|
+
say $*USAGE;
|
21
|
+
}
|
22
|
+
|
23
|
+
#| Runs the generator for everything in the exercises directory.
|
24
|
+
multi sub MAIN (Bool:D :a(:$all) where *.so) {
|
19
25
|
generate .basename for $base-dir.add('exercises').dir;
|
20
26
|
}
|
21
27
|
|
28
|
+
#| The generator will run for each exercise given as an argument.
|
22
29
|
multi sub MAIN (*@exercises) {
|
23
30
|
@exercises».&generate;
|
24
31
|
}
|
25
32
|
|
33
|
+
#|[The generator will attempt to run using the current directory.
|
34
|
+
Exits if a '.meta/exercise-data.yaml' file is not found.]
|
26
35
|
multi sub MAIN {
|
27
36
|
say 'No args given; working in current directory.';
|
28
37
|
if '.meta/exercise-data.yaml'.IO ~~ :f {
|
29
38
|
generate $*CWD.IO.basename;
|
30
39
|
} else {
|
31
|
-
say
|
40
|
+
say "exercise-data.yaml not found in .meta of current directory; exiting.\n";
|
41
|
+
say $*USAGE;
|
32
42
|
exit;
|
33
43
|
}
|
34
44
|
}
|
@@ -4,10 +4,24 @@
|
|
4
4
|
{{- with .Hints }}
|
5
5
|
{{ . }}
|
6
6
|
{{ end }}
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
## Resources
|
8
|
+
|
9
|
+
Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
|
10
|
+
[resources](https://perl6.org/resources/) pages for information, tips, and
|
11
|
+
examples if you get stuck.
|
12
|
+
|
13
|
+
## Running the tests
|
14
|
+
|
15
|
+
There is a test suite and module included with the exercise.
|
16
|
+
The test suite (a file with the extension `.t`) will attempt to run routines
|
17
|
+
from the module (a file with the extension `.pm6`).
|
18
|
+
Add/modify routines in the module so that the tests will pass! You can view the
|
19
|
+
test data by executing the command `perl6 --doc *.t` (\* being the name of the
|
20
|
+
test suite), and run the test suite for the exercise by executing the command
|
21
|
+
`prove . --exec=perl6` in the exercise directory.
|
22
|
+
You can also add the `-v` flag e.g. `prove . --exec=perl6 -v` to display all
|
23
|
+
tests, including any optional tests marked as 'TODO'.
|
24
|
+
{{ with .Spec.Credits }}
|
11
25
|
## Source
|
12
26
|
|
13
27
|
{{ . }}
|
@@ -49,6 +49,5 @@ test suite), and run the test suite for the exercise by executing the command
|
|
49
49
|
You can also add the `-v` flag e.g. `prove . --exec=perl6 -v` to display all
|
50
50
|
tests, including any optional tests marked as 'TODO'.
|
51
51
|
|
52
|
-
|
53
52
|
## Submitting Incomplete Solutions
|
54
53
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -18,8 +18,8 @@ my $c-data = from-json $=pod.pop.contents;
|
|
18
18
|
for @($c-data<cases>) {
|
19
19
|
subtest {
|
20
20
|
plan 2;
|
21
|
-
is .<number>.&convert, |.<expected description>;
|
22
|
-
isa-ok .<number>.&convert, Str;
|
21
|
+
is .<input><number>.&convert, |.<expected description>;
|
22
|
+
isa-ok .<input><number>.&convert, Str;
|
23
23
|
}
|
24
24
|
}
|
25
25
|
|
@@ -27,114 +27,150 @@ for @($c-data<cases>) {
|
|
27
27
|
=begin code
|
28
28
|
{
|
29
29
|
"exercise": "raindrops",
|
30
|
-
"version": "1.
|
30
|
+
"version": "1.1.0",
|
31
31
|
"cases": [
|
32
32
|
{
|
33
33
|
"description": "the sound for 1 is 1",
|
34
34
|
"property": "convert",
|
35
|
-
"
|
35
|
+
"input": {
|
36
|
+
"number": 1
|
37
|
+
},
|
36
38
|
"expected": "1"
|
37
39
|
},
|
38
40
|
{
|
39
41
|
"description": "the sound for 3 is Pling",
|
40
42
|
"property": "convert",
|
41
|
-
"
|
43
|
+
"input": {
|
44
|
+
"number": 3
|
45
|
+
},
|
42
46
|
"expected": "Pling"
|
43
47
|
},
|
44
48
|
{
|
45
49
|
"description": "the sound for 5 is Plang",
|
46
50
|
"property": "convert",
|
47
|
-
"
|
51
|
+
"input": {
|
52
|
+
"number": 5
|
53
|
+
},
|
48
54
|
"expected": "Plang"
|
49
55
|
},
|
50
56
|
{
|
51
57
|
"description": "the sound for 7 is Plong",
|
52
58
|
"property": "convert",
|
53
|
-
"
|
59
|
+
"input": {
|
60
|
+
"number": 7
|
61
|
+
},
|
54
62
|
"expected": "Plong"
|
55
63
|
},
|
56
64
|
{
|
57
65
|
"description": "the sound for 6 is Pling as it has a factor 3",
|
58
66
|
"property": "convert",
|
59
|
-
"
|
67
|
+
"input": {
|
68
|
+
"number": 6
|
69
|
+
},
|
60
70
|
"expected": "Pling"
|
61
71
|
},
|
62
72
|
{
|
63
73
|
"description": "2 to the power 3 does not make a raindrop sound as 3 is the exponent not the base",
|
64
74
|
"property": "convert",
|
65
|
-
"
|
75
|
+
"input": {
|
76
|
+
"number": 8
|
77
|
+
},
|
66
78
|
"expected": "8"
|
67
79
|
},
|
68
80
|
{
|
69
81
|
"description": "the sound for 9 is Pling as it has a factor 3",
|
70
82
|
"property": "convert",
|
71
|
-
"
|
83
|
+
"input": {
|
84
|
+
"number": 9
|
85
|
+
},
|
72
86
|
"expected": "Pling"
|
73
87
|
},
|
74
88
|
{
|
75
89
|
"description": "the sound for 10 is Plang as it has a factor 5",
|
76
90
|
"property": "convert",
|
77
|
-
"
|
91
|
+
"input": {
|
92
|
+
"number": 10
|
93
|
+
},
|
78
94
|
"expected": "Plang"
|
79
95
|
},
|
80
96
|
{
|
81
97
|
"description": "the sound for 14 is Plong as it has a factor of 7",
|
82
98
|
"property": "convert",
|
83
|
-
"
|
99
|
+
"input": {
|
100
|
+
"number": 14
|
101
|
+
},
|
84
102
|
"expected": "Plong"
|
85
103
|
},
|
86
104
|
{
|
87
105
|
"description": "the sound for 15 is PlingPlang as it has factors 3 and 5",
|
88
106
|
"property": "convert",
|
89
|
-
"
|
107
|
+
"input": {
|
108
|
+
"number": 15
|
109
|
+
},
|
90
110
|
"expected": "PlingPlang"
|
91
111
|
},
|
92
112
|
{
|
93
113
|
"description": "the sound for 21 is PlingPlong as it has factors 3 and 7",
|
94
114
|
"property": "convert",
|
95
|
-
"
|
115
|
+
"input": {
|
116
|
+
"number": 21
|
117
|
+
},
|
96
118
|
"expected": "PlingPlong"
|
97
119
|
},
|
98
120
|
{
|
99
121
|
"description": "the sound for 25 is Plang as it has a factor 5",
|
100
122
|
"property": "convert",
|
101
|
-
"
|
123
|
+
"input": {
|
124
|
+
"number": 25
|
125
|
+
},
|
102
126
|
"expected": "Plang"
|
103
127
|
},
|
104
128
|
{
|
105
129
|
"description": "the sound for 27 is Pling as it has a factor 3",
|
106
130
|
"property": "convert",
|
107
|
-
"
|
131
|
+
"input": {
|
132
|
+
"number": 27
|
133
|
+
},
|
108
134
|
"expected": "Pling"
|
109
135
|
},
|
110
136
|
{
|
111
137
|
"description": "the sound for 35 is PlangPlong as it has factors 5 and 7",
|
112
138
|
"property": "convert",
|
113
|
-
"
|
139
|
+
"input": {
|
140
|
+
"number": 35
|
141
|
+
},
|
114
142
|
"expected": "PlangPlong"
|
115
143
|
},
|
116
144
|
{
|
117
145
|
"description": "the sound for 49 is Plong as it has a factor 7",
|
118
146
|
"property": "convert",
|
119
|
-
"
|
147
|
+
"input": {
|
148
|
+
"number": 49
|
149
|
+
},
|
120
150
|
"expected": "Plong"
|
121
151
|
},
|
122
152
|
{
|
123
153
|
"description": "the sound for 52 is 52",
|
124
154
|
"property": "convert",
|
125
|
-
"
|
155
|
+
"input": {
|
156
|
+
"number": 52
|
157
|
+
},
|
126
158
|
"expected": "52"
|
127
159
|
},
|
128
160
|
{
|
129
161
|
"description": "the sound for 105 is PlingPlangPlong as it has factors 3, 5 and 7",
|
130
162
|
"property": "convert",
|
131
|
-
"
|
163
|
+
"input": {
|
164
|
+
"number": 105
|
165
|
+
},
|
132
166
|
"expected": "PlingPlangPlong"
|
133
167
|
},
|
134
168
|
{
|
135
169
|
"description": "the sound for 3125 is Plang as it has a factor 5",
|
136
170
|
"property": "convert",
|
137
|
-
"
|
171
|
+
"input": {
|
172
|
+
"number": 3125
|
173
|
+
},
|
138
174
|
"expected": "Plang"
|
139
175
|
}
|
140
176
|
]
|
@@ -32,7 +32,7 @@ tests, including any optional tests marked as 'TODO'.
|
|
32
32
|
|
33
33
|
## Source
|
34
34
|
|
35
|
-
|
35
|
+
[https://en.wikipedia.org/wiki/Two-fer](https://en.wikipedia.org/wiki/Two-fer)
|
36
36
|
|
37
37
|
## Submitting Incomplete Solutions
|
38
38
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
data/tracks/php/.travis.yml
CHANGED
@@ -6,6 +6,8 @@ Bob answers 'Sure.' if you ask him a question.
|
|
6
6
|
|
7
7
|
He answers 'Whoa, chill out!' if you yell at him.
|
8
8
|
|
9
|
+
He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
|
10
|
+
|
9
11
|
He says 'Fine. Be that way!' if you address him without actually saying
|
10
12
|
anything.
|
11
13
|
|
@@ -72,7 +72,10 @@ class BobTest extends PHPUnit\Framework\TestCase
|
|
72
72
|
{
|
73
73
|
$this->markTestSkipped();
|
74
74
|
|
75
|
-
$this->assertEquals(
|
75
|
+
$this->assertEquals(
|
76
|
+
"Calm down, I know what I'm doing!",
|
77
|
+
$this->bob->respondTo("WHAT THE HELL WERE YOU THINKING?")
|
78
|
+
);
|
76
79
|
}
|
77
80
|
|
78
81
|
public function testShoutingNumbers()
|
@@ -21,14 +21,13 @@ class Board
|
|
21
21
|
public function __construct(array $lines)
|
22
22
|
{
|
23
23
|
$this->height = count($lines);
|
24
|
-
|
24
|
+
|
25
25
|
$this->width = strlen($lines[0]);
|
26
|
-
|
26
|
+
|
27
27
|
$this->fields = array_map(function ($line) {
|
28
28
|
$row = array();
|
29
29
|
for ($i = 0; $i < strlen($line); $i++) {
|
30
|
-
switch ($line[$i])
|
31
|
-
{
|
30
|
+
switch ($line[$i]) {
|
32
31
|
case "O":
|
33
32
|
array_push($row, WHITE);
|
34
33
|
break;
|
data/tracks/python/config.json
CHANGED
@@ -80,18 +80,6 @@
|
|
80
80
|
"transforming"
|
81
81
|
]
|
82
82
|
},
|
83
|
-
{
|
84
|
-
"uuid": "ca970fee-71b4-41e1-a5c3-b23bf574eb33",
|
85
|
-
"slug": "bowling",
|
86
|
-
"core": false,
|
87
|
-
"unlocked_by": null,
|
88
|
-
"difficulty": 5,
|
89
|
-
"topics": [
|
90
|
-
"classes",
|
91
|
-
"exception_handling",
|
92
|
-
"logic"
|
93
|
-
]
|
94
|
-
},
|
95
83
|
{
|
96
84
|
"uuid": "7961c852-c87a-44b0-b152-efea3ac8555c",
|
97
85
|
"slug": "isbn-verifier",
|
@@ -1017,6 +1005,18 @@
|
|
1017
1005
|
"searching"
|
1018
1006
|
]
|
1019
1007
|
},
|
1008
|
+
{
|
1009
|
+
"uuid": "ca970fee-71b4-41e1-a5c3-b23bf574eb33",
|
1010
|
+
"slug": "bowling",
|
1011
|
+
"core": false,
|
1012
|
+
"unlocked_by": null,
|
1013
|
+
"difficulty": 5,
|
1014
|
+
"topics": [
|
1015
|
+
"classes",
|
1016
|
+
"exception_handling",
|
1017
|
+
"logic"
|
1018
|
+
]
|
1019
|
+
},
|
1020
1020
|
{
|
1021
1021
|
"uuid": "dc2917d5-aaa9-43d9-b9f4-a32919fdbe18",
|
1022
1022
|
"slug": "word-search",
|
@@ -1,70 +1,389 @@
|
|
1
1
|
import unittest
|
2
2
|
|
3
|
-
from beer_song import
|
3
|
+
from beer_song import recite
|
4
4
|
|
5
5
|
|
6
|
+
# Tests adapted from `problem-specifications//canonical-data.json` @ v2.1.0
|
7
|
+
|
6
8
|
class BeerTest(unittest.TestCase):
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
"
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
def test_first_generic_verse(self):
|
10
|
+
expected = [
|
11
|
+
"99 bottles of beer on the wall, 99 bottles of beer.",
|
12
|
+
"Take one down and pass it around, 98 bottles of beer on the wall."
|
13
|
+
]
|
14
|
+
self.assertEqual(recite(start=99), expected)
|
15
|
+
|
16
|
+
def test_last_generic_verse(self):
|
17
|
+
expected = [
|
18
|
+
"3 bottles of beer on the wall, 3 bottles of beer.",
|
19
|
+
"Take one down and pass it around, 2 bottles of beer on the wall."
|
20
|
+
]
|
21
|
+
self.assertEqual(recite(start=3), expected)
|
22
|
+
|
23
|
+
def test_verse_with_two_bottles(self):
|
24
|
+
expected = [
|
25
|
+
"2 bottles of beer on the wall, 2 bottles of beer.",
|
26
|
+
"Take one down and pass it around, 1 bottle of beer on the wall."
|
27
|
+
]
|
28
|
+
self.assertEqual(recite(start=2), expected)
|
29
|
+
|
30
|
+
def test_verse_with_one_bottle(self):
|
31
|
+
expected = [
|
32
|
+
"1 bottle of beer on the wall, 1 bottle of beer.",
|
33
|
+
(
|
34
|
+
"Take it down and pass it around, "
|
35
|
+
"no more bottles of beer on the wall."
|
36
|
+
)
|
37
|
+
]
|
38
|
+
self.assertEqual(recite(start=1), expected)
|
39
|
+
|
40
|
+
def test_verse_with_zero_bottles(self):
|
41
|
+
expected = [
|
42
|
+
"No more bottles of beer on the wall, no more bottles of beer.",
|
43
|
+
(
|
44
|
+
"Go to the store and buy some more, "
|
45
|
+
"99 bottles of beer on the wall."
|
46
|
+
)
|
47
|
+
]
|
48
|
+
self.assertEqual(recite(start=0), expected)
|
14
49
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
50
|
+
def test_first_two_verses(self):
|
51
|
+
expected = [
|
52
|
+
"99 bottles of beer on the wall, 99 bottles of beer.",
|
53
|
+
(
|
54
|
+
"Take one down and pass it around, "
|
55
|
+
"98 bottles of beer on the wall."
|
56
|
+
),
|
57
|
+
"",
|
58
|
+
"98 bottles of beer on the wall, 98 bottles of beer.",
|
59
|
+
"Take one down and pass it around, 97 bottles of beer on the wall."
|
60
|
+
]
|
61
|
+
self.assertEqual(recite(start=99, take=2), expected)
|
22
62
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
"
|
27
|
-
"
|
28
|
-
|
63
|
+
def test_last_three_verses(self):
|
64
|
+
expected = [
|
65
|
+
"2 bottles of beer on the wall, 2 bottles of beer.",
|
66
|
+
"Take one down and pass it around, 1 bottle of beer on the wall.",
|
67
|
+
"",
|
68
|
+
"1 bottle of beer on the wall, 1 bottle of beer.",
|
69
|
+
(
|
70
|
+
"Take it down and pass it around, "
|
71
|
+
"no more bottles of beer on the wall."
|
72
|
+
),
|
73
|
+
"",
|
74
|
+
"No more bottles of beer on the wall, no more bottles of beer.",
|
75
|
+
(
|
76
|
+
"Go to the store and buy some more, "
|
77
|
+
"99 bottles of beer on the wall."
|
78
|
+
)
|
79
|
+
]
|
80
|
+
self.assertEqual(recite(start=2, take=3), expected)
|
29
81
|
|
30
|
-
def
|
31
|
-
self.assertEqual(
|
32
|
-
verse(0),
|
33
|
-
"No more bottles of beer on the wall, no more bottles of beer.\n"
|
34
|
-
"Go to the store and buy some more, "
|
35
|
-
"99 bottles of beer on the wall.\n"
|
36
|
-
)
|
82
|
+
def test_all_verses(self):
|
83
|
+
self.assertEqual(recite(start=99, take=100), SONG)
|
37
84
|
|
38
|
-
def test_songing_several_verses(self):
|
39
|
-
self.assertEqual(
|
40
|
-
song(8, 6),
|
41
|
-
"8 bottles of beer on the wall, 8 bottles of beer.\n"
|
42
|
-
"Take one down and pass it around, "
|
43
|
-
"7 bottles of beer on the wall.\n\n"
|
44
|
-
"7 bottles of beer on the wall, 7 bottles of beer.\n"
|
45
|
-
"Take one down and pass it around, "
|
46
|
-
"6 bottles of beer on the wall.\n\n"
|
47
|
-
"6 bottles of beer on the wall, 6 bottles of beer.\n"
|
48
|
-
"Take one down and pass it around, "
|
49
|
-
"5 bottles of beer on the wall.\n\n"
|
50
|
-
)
|
51
85
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
86
|
+
SONG = [
|
87
|
+
"99 bottles of beer on the wall, 99 bottles of beer.",
|
88
|
+
"Take one down and pass it around, 98 bottles of beer on the wall.",
|
89
|
+
"",
|
90
|
+
"98 bottles of beer on the wall, 98 bottles of beer.",
|
91
|
+
"Take one down and pass it around, 97 bottles of beer on the wall.",
|
92
|
+
"",
|
93
|
+
"97 bottles of beer on the wall, 97 bottles of beer.",
|
94
|
+
"Take one down and pass it around, 96 bottles of beer on the wall.",
|
95
|
+
"",
|
96
|
+
"96 bottles of beer on the wall, 96 bottles of beer.",
|
97
|
+
"Take one down and pass it around, 95 bottles of beer on the wall.",
|
98
|
+
"",
|
99
|
+
"95 bottles of beer on the wall, 95 bottles of beer.",
|
100
|
+
"Take one down and pass it around, 94 bottles of beer on the wall.",
|
101
|
+
"",
|
102
|
+
"94 bottles of beer on the wall, 94 bottles of beer.",
|
103
|
+
"Take one down and pass it around, 93 bottles of beer on the wall.",
|
104
|
+
"",
|
105
|
+
"93 bottles of beer on the wall, 93 bottles of beer.",
|
106
|
+
"Take one down and pass it around, 92 bottles of beer on the wall.",
|
107
|
+
"",
|
108
|
+
"92 bottles of beer on the wall, 92 bottles of beer.",
|
109
|
+
"Take one down and pass it around, 91 bottles of beer on the wall.",
|
110
|
+
"",
|
111
|
+
"91 bottles of beer on the wall, 91 bottles of beer.",
|
112
|
+
"Take one down and pass it around, 90 bottles of beer on the wall.",
|
113
|
+
"",
|
114
|
+
"90 bottles of beer on the wall, 90 bottles of beer.",
|
115
|
+
"Take one down and pass it around, 89 bottles of beer on the wall.",
|
116
|
+
"",
|
117
|
+
"89 bottles of beer on the wall, 89 bottles of beer.",
|
118
|
+
"Take one down and pass it around, 88 bottles of beer on the wall.",
|
119
|
+
"",
|
120
|
+
"88 bottles of beer on the wall, 88 bottles of beer.",
|
121
|
+
"Take one down and pass it around, 87 bottles of beer on the wall.",
|
122
|
+
"",
|
123
|
+
"87 bottles of beer on the wall, 87 bottles of beer.",
|
124
|
+
"Take one down and pass it around, 86 bottles of beer on the wall.",
|
125
|
+
"",
|
126
|
+
"86 bottles of beer on the wall, 86 bottles of beer.",
|
127
|
+
"Take one down and pass it around, 85 bottles of beer on the wall.",
|
128
|
+
"",
|
129
|
+
"85 bottles of beer on the wall, 85 bottles of beer.",
|
130
|
+
"Take one down and pass it around, 84 bottles of beer on the wall.",
|
131
|
+
"",
|
132
|
+
"84 bottles of beer on the wall, 84 bottles of beer.",
|
133
|
+
"Take one down and pass it around, 83 bottles of beer on the wall.",
|
134
|
+
"",
|
135
|
+
"83 bottles of beer on the wall, 83 bottles of beer.",
|
136
|
+
"Take one down and pass it around, 82 bottles of beer on the wall.",
|
137
|
+
"",
|
138
|
+
"82 bottles of beer on the wall, 82 bottles of beer.",
|
139
|
+
"Take one down and pass it around, 81 bottles of beer on the wall.",
|
140
|
+
"",
|
141
|
+
"81 bottles of beer on the wall, 81 bottles of beer.",
|
142
|
+
"Take one down and pass it around, 80 bottles of beer on the wall.",
|
143
|
+
"",
|
144
|
+
"80 bottles of beer on the wall, 80 bottles of beer.",
|
145
|
+
"Take one down and pass it around, 79 bottles of beer on the wall.",
|
146
|
+
"",
|
147
|
+
"79 bottles of beer on the wall, 79 bottles of beer.",
|
148
|
+
"Take one down and pass it around, 78 bottles of beer on the wall.",
|
149
|
+
"",
|
150
|
+
"78 bottles of beer on the wall, 78 bottles of beer.",
|
151
|
+
"Take one down and pass it around, 77 bottles of beer on the wall.",
|
152
|
+
"",
|
153
|
+
"77 bottles of beer on the wall, 77 bottles of beer.",
|
154
|
+
"Take one down and pass it around, 76 bottles of beer on the wall.",
|
155
|
+
"",
|
156
|
+
"76 bottles of beer on the wall, 76 bottles of beer.",
|
157
|
+
"Take one down and pass it around, 75 bottles of beer on the wall.",
|
158
|
+
"",
|
159
|
+
"75 bottles of beer on the wall, 75 bottles of beer.",
|
160
|
+
"Take one down and pass it around, 74 bottles of beer on the wall.",
|
161
|
+
"",
|
162
|
+
"74 bottles of beer on the wall, 74 bottles of beer.",
|
163
|
+
"Take one down and pass it around, 73 bottles of beer on the wall.",
|
164
|
+
"",
|
165
|
+
"73 bottles of beer on the wall, 73 bottles of beer.",
|
166
|
+
"Take one down and pass it around, 72 bottles of beer on the wall.",
|
167
|
+
"",
|
168
|
+
"72 bottles of beer on the wall, 72 bottles of beer.",
|
169
|
+
"Take one down and pass it around, 71 bottles of beer on the wall.",
|
170
|
+
"",
|
171
|
+
"71 bottles of beer on the wall, 71 bottles of beer.",
|
172
|
+
"Take one down and pass it around, 70 bottles of beer on the wall.",
|
173
|
+
"",
|
174
|
+
"70 bottles of beer on the wall, 70 bottles of beer.",
|
175
|
+
"Take one down and pass it around, 69 bottles of beer on the wall.",
|
176
|
+
"",
|
177
|
+
"69 bottles of beer on the wall, 69 bottles of beer.",
|
178
|
+
"Take one down and pass it around, 68 bottles of beer on the wall.",
|
179
|
+
"",
|
180
|
+
"68 bottles of beer on the wall, 68 bottles of beer.",
|
181
|
+
"Take one down and pass it around, 67 bottles of beer on the wall.",
|
182
|
+
"",
|
183
|
+
"67 bottles of beer on the wall, 67 bottles of beer.",
|
184
|
+
"Take one down and pass it around, 66 bottles of beer on the wall.",
|
185
|
+
"",
|
186
|
+
"66 bottles of beer on the wall, 66 bottles of beer.",
|
187
|
+
"Take one down and pass it around, 65 bottles of beer on the wall.",
|
188
|
+
"",
|
189
|
+
"65 bottles of beer on the wall, 65 bottles of beer.",
|
190
|
+
"Take one down and pass it around, 64 bottles of beer on the wall.",
|
191
|
+
"",
|
192
|
+
"64 bottles of beer on the wall, 64 bottles of beer.",
|
193
|
+
"Take one down and pass it around, 63 bottles of beer on the wall.",
|
194
|
+
"",
|
195
|
+
"63 bottles of beer on the wall, 63 bottles of beer.",
|
196
|
+
"Take one down and pass it around, 62 bottles of beer on the wall.",
|
197
|
+
"",
|
198
|
+
"62 bottles of beer on the wall, 62 bottles of beer.",
|
199
|
+
"Take one down and pass it around, 61 bottles of beer on the wall.",
|
200
|
+
"",
|
201
|
+
"61 bottles of beer on the wall, 61 bottles of beer.",
|
202
|
+
"Take one down and pass it around, 60 bottles of beer on the wall.",
|
203
|
+
"",
|
204
|
+
"60 bottles of beer on the wall, 60 bottles of beer.",
|
205
|
+
"Take one down and pass it around, 59 bottles of beer on the wall.",
|
206
|
+
"",
|
207
|
+
"59 bottles of beer on the wall, 59 bottles of beer.",
|
208
|
+
"Take one down and pass it around, 58 bottles of beer on the wall.",
|
209
|
+
"",
|
210
|
+
"58 bottles of beer on the wall, 58 bottles of beer.",
|
211
|
+
"Take one down and pass it around, 57 bottles of beer on the wall.",
|
212
|
+
"",
|
213
|
+
"57 bottles of beer on the wall, 57 bottles of beer.",
|
214
|
+
"Take one down and pass it around, 56 bottles of beer on the wall.",
|
215
|
+
"",
|
216
|
+
"56 bottles of beer on the wall, 56 bottles of beer.",
|
217
|
+
"Take one down and pass it around, 55 bottles of beer on the wall.",
|
218
|
+
"",
|
219
|
+
"55 bottles of beer on the wall, 55 bottles of beer.",
|
220
|
+
"Take one down and pass it around, 54 bottles of beer on the wall.",
|
221
|
+
"",
|
222
|
+
"54 bottles of beer on the wall, 54 bottles of beer.",
|
223
|
+
"Take one down and pass it around, 53 bottles of beer on the wall.",
|
224
|
+
"",
|
225
|
+
"53 bottles of beer on the wall, 53 bottles of beer.",
|
226
|
+
"Take one down and pass it around, 52 bottles of beer on the wall.",
|
227
|
+
"",
|
228
|
+
"52 bottles of beer on the wall, 52 bottles of beer.",
|
229
|
+
"Take one down and pass it around, 51 bottles of beer on the wall.",
|
230
|
+
"",
|
231
|
+
"51 bottles of beer on the wall, 51 bottles of beer.",
|
232
|
+
"Take one down and pass it around, 50 bottles of beer on the wall.",
|
233
|
+
"",
|
234
|
+
"50 bottles of beer on the wall, 50 bottles of beer.",
|
235
|
+
"Take one down and pass it around, 49 bottles of beer on the wall.",
|
236
|
+
"",
|
237
|
+
"49 bottles of beer on the wall, 49 bottles of beer.",
|
238
|
+
"Take one down and pass it around, 48 bottles of beer on the wall.",
|
239
|
+
"",
|
240
|
+
"48 bottles of beer on the wall, 48 bottles of beer.",
|
241
|
+
"Take one down and pass it around, 47 bottles of beer on the wall.",
|
242
|
+
"",
|
243
|
+
"47 bottles of beer on the wall, 47 bottles of beer.",
|
244
|
+
"Take one down and pass it around, 46 bottles of beer on the wall.",
|
245
|
+
"",
|
246
|
+
"46 bottles of beer on the wall, 46 bottles of beer.",
|
247
|
+
"Take one down and pass it around, 45 bottles of beer on the wall.",
|
248
|
+
"",
|
249
|
+
"45 bottles of beer on the wall, 45 bottles of beer.",
|
250
|
+
"Take one down and pass it around, 44 bottles of beer on the wall.",
|
251
|
+
"",
|
252
|
+
"44 bottles of beer on the wall, 44 bottles of beer.",
|
253
|
+
"Take one down and pass it around, 43 bottles of beer on the wall.",
|
254
|
+
"",
|
255
|
+
"43 bottles of beer on the wall, 43 bottles of beer.",
|
256
|
+
"Take one down and pass it around, 42 bottles of beer on the wall.",
|
257
|
+
"",
|
258
|
+
"42 bottles of beer on the wall, 42 bottles of beer.",
|
259
|
+
"Take one down and pass it around, 41 bottles of beer on the wall.",
|
260
|
+
"",
|
261
|
+
"41 bottles of beer on the wall, 41 bottles of beer.",
|
262
|
+
"Take one down and pass it around, 40 bottles of beer on the wall.",
|
263
|
+
"",
|
264
|
+
"40 bottles of beer on the wall, 40 bottles of beer.",
|
265
|
+
"Take one down and pass it around, 39 bottles of beer on the wall.",
|
266
|
+
"",
|
267
|
+
"39 bottles of beer on the wall, 39 bottles of beer.",
|
268
|
+
"Take one down and pass it around, 38 bottles of beer on the wall.",
|
269
|
+
"",
|
270
|
+
"38 bottles of beer on the wall, 38 bottles of beer.",
|
271
|
+
"Take one down and pass it around, 37 bottles of beer on the wall.",
|
272
|
+
"",
|
273
|
+
"37 bottles of beer on the wall, 37 bottles of beer.",
|
274
|
+
"Take one down and pass it around, 36 bottles of beer on the wall.",
|
275
|
+
"",
|
276
|
+
"36 bottles of beer on the wall, 36 bottles of beer.",
|
277
|
+
"Take one down and pass it around, 35 bottles of beer on the wall.",
|
278
|
+
"",
|
279
|
+
"35 bottles of beer on the wall, 35 bottles of beer.",
|
280
|
+
"Take one down and pass it around, 34 bottles of beer on the wall.",
|
281
|
+
"",
|
282
|
+
"34 bottles of beer on the wall, 34 bottles of beer.",
|
283
|
+
"Take one down and pass it around, 33 bottles of beer on the wall.",
|
284
|
+
"",
|
285
|
+
"33 bottles of beer on the wall, 33 bottles of beer.",
|
286
|
+
"Take one down and pass it around, 32 bottles of beer on the wall.",
|
287
|
+
"",
|
288
|
+
"32 bottles of beer on the wall, 32 bottles of beer.",
|
289
|
+
"Take one down and pass it around, 31 bottles of beer on the wall.",
|
290
|
+
"",
|
291
|
+
"31 bottles of beer on the wall, 31 bottles of beer.",
|
292
|
+
"Take one down and pass it around, 30 bottles of beer on the wall.",
|
293
|
+
"",
|
294
|
+
"30 bottles of beer on the wall, 30 bottles of beer.",
|
295
|
+
"Take one down and pass it around, 29 bottles of beer on the wall.",
|
296
|
+
"",
|
297
|
+
"29 bottles of beer on the wall, 29 bottles of beer.",
|
298
|
+
"Take one down and pass it around, 28 bottles of beer on the wall.",
|
299
|
+
"",
|
300
|
+
"28 bottles of beer on the wall, 28 bottles of beer.",
|
301
|
+
"Take one down and pass it around, 27 bottles of beer on the wall.",
|
302
|
+
"",
|
303
|
+
"27 bottles of beer on the wall, 27 bottles of beer.",
|
304
|
+
"Take one down and pass it around, 26 bottles of beer on the wall.",
|
305
|
+
"",
|
306
|
+
"26 bottles of beer on the wall, 26 bottles of beer.",
|
307
|
+
"Take one down and pass it around, 25 bottles of beer on the wall.",
|
308
|
+
"",
|
309
|
+
"25 bottles of beer on the wall, 25 bottles of beer.",
|
310
|
+
"Take one down and pass it around, 24 bottles of beer on the wall.",
|
311
|
+
"",
|
312
|
+
"24 bottles of beer on the wall, 24 bottles of beer.",
|
313
|
+
"Take one down and pass it around, 23 bottles of beer on the wall.",
|
314
|
+
"",
|
315
|
+
"23 bottles of beer on the wall, 23 bottles of beer.",
|
316
|
+
"Take one down and pass it around, 22 bottles of beer on the wall.",
|
317
|
+
"",
|
318
|
+
"22 bottles of beer on the wall, 22 bottles of beer.",
|
319
|
+
"Take one down and pass it around, 21 bottles of beer on the wall.",
|
320
|
+
"",
|
321
|
+
"21 bottles of beer on the wall, 21 bottles of beer.",
|
322
|
+
"Take one down and pass it around, 20 bottles of beer on the wall.",
|
323
|
+
"",
|
324
|
+
"20 bottles of beer on the wall, 20 bottles of beer.",
|
325
|
+
"Take one down and pass it around, 19 bottles of beer on the wall.",
|
326
|
+
"",
|
327
|
+
"19 bottles of beer on the wall, 19 bottles of beer.",
|
328
|
+
"Take one down and pass it around, 18 bottles of beer on the wall.",
|
329
|
+
"",
|
330
|
+
"18 bottles of beer on the wall, 18 bottles of beer.",
|
331
|
+
"Take one down and pass it around, 17 bottles of beer on the wall.",
|
332
|
+
"",
|
333
|
+
"17 bottles of beer on the wall, 17 bottles of beer.",
|
334
|
+
"Take one down and pass it around, 16 bottles of beer on the wall.",
|
335
|
+
"",
|
336
|
+
"16 bottles of beer on the wall, 16 bottles of beer.",
|
337
|
+
"Take one down and pass it around, 15 bottles of beer on the wall.",
|
338
|
+
"",
|
339
|
+
"15 bottles of beer on the wall, 15 bottles of beer.",
|
340
|
+
"Take one down and pass it around, 14 bottles of beer on the wall.",
|
341
|
+
"",
|
342
|
+
"14 bottles of beer on the wall, 14 bottles of beer.",
|
343
|
+
"Take one down and pass it around, 13 bottles of beer on the wall.",
|
344
|
+
"",
|
345
|
+
"13 bottles of beer on the wall, 13 bottles of beer.",
|
346
|
+
"Take one down and pass it around, 12 bottles of beer on the wall.",
|
347
|
+
"",
|
348
|
+
"12 bottles of beer on the wall, 12 bottles of beer.",
|
349
|
+
"Take one down and pass it around, 11 bottles of beer on the wall.",
|
350
|
+
"",
|
351
|
+
"11 bottles of beer on the wall, 11 bottles of beer.",
|
352
|
+
"Take one down and pass it around, 10 bottles of beer on the wall.",
|
353
|
+
"",
|
354
|
+
"10 bottles of beer on the wall, 10 bottles of beer.",
|
355
|
+
"Take one down and pass it around, 9 bottles of beer on the wall.",
|
356
|
+
"",
|
357
|
+
"9 bottles of beer on the wall, 9 bottles of beer.",
|
358
|
+
"Take one down and pass it around, 8 bottles of beer on the wall.",
|
359
|
+
"",
|
360
|
+
"8 bottles of beer on the wall, 8 bottles of beer.",
|
361
|
+
"Take one down and pass it around, 7 bottles of beer on the wall.",
|
362
|
+
"",
|
363
|
+
"7 bottles of beer on the wall, 7 bottles of beer.",
|
364
|
+
"Take one down and pass it around, 6 bottles of beer on the wall.",
|
365
|
+
"",
|
366
|
+
"6 bottles of beer on the wall, 6 bottles of beer.",
|
367
|
+
"Take one down and pass it around, 5 bottles of beer on the wall.",
|
368
|
+
"",
|
369
|
+
"5 bottles of beer on the wall, 5 bottles of beer.",
|
370
|
+
"Take one down and pass it around, 4 bottles of beer on the wall.",
|
371
|
+
"",
|
372
|
+
"4 bottles of beer on the wall, 4 bottles of beer.",
|
373
|
+
"Take one down and pass it around, 3 bottles of beer on the wall.",
|
374
|
+
"",
|
375
|
+
"3 bottles of beer on the wall, 3 bottles of beer.",
|
376
|
+
"Take one down and pass it around, 2 bottles of beer on the wall.",
|
377
|
+
"",
|
378
|
+
"2 bottles of beer on the wall, 2 bottles of beer.",
|
379
|
+
"Take one down and pass it around, 1 bottle of beer on the wall.",
|
380
|
+
"",
|
381
|
+
"1 bottle of beer on the wall, 1 bottle of beer.",
|
382
|
+
"Take it down and pass it around, no more bottles of beer on the wall.",
|
383
|
+
"",
|
384
|
+
"No more bottles of beer on the wall, no more bottles of beer.",
|
385
|
+
"Go to the store and buy some more, 99 bottles of beer on the wall."
|
386
|
+
]
|
68
387
|
|
69
388
|
|
70
389
|
if __name__ == '__main__':
|