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
@@ -3,25 +3,25 @@
|
|
3
3
|
*/
|
4
4
|
component {
|
5
5
|
|
6
|
-
function valid(
|
6
|
+
function valid( value ) {
|
7
7
|
// Remove whitespace
|
8
|
-
|
8
|
+
value = value.reReplace( '\s', '', 'all' );
|
9
9
|
|
10
10
|
// Any non numeric chars means invalid
|
11
|
-
if(
|
11
|
+
if( value.reFindNoCase( '[^0-9]' ) ) {
|
12
12
|
return false;
|
13
13
|
}
|
14
14
|
|
15
15
|
// A single 0 is invalid
|
16
|
-
if( compare(
|
16
|
+
if( compare( value, '0' ) == 0 ) {
|
17
17
|
return false;
|
18
18
|
}
|
19
19
|
|
20
20
|
var accumulator = [];
|
21
21
|
var oddEven = 0;
|
22
22
|
// Loop backwards over the digits
|
23
|
-
for( var i=
|
24
|
-
var digit =
|
23
|
+
for( var i=value.len(); i>0; i-- ) {
|
24
|
+
var digit = value[ i ];
|
25
25
|
// Double every other one
|
26
26
|
if( ++oddEven%2 == 0 ) {
|
27
27
|
var doubleDigit = digit*2;
|
@@ -6,9 +6,9 @@ component {
|
|
6
6
|
/**
|
7
7
|
* @returns
|
8
8
|
*/
|
9
|
-
function parse(required string
|
9
|
+
function parse(required string markdown) {
|
10
10
|
|
11
|
-
var lines = listToArray( arguments.
|
11
|
+
var lines = listToArray( arguments.markdown, chr( 10 ) );
|
12
12
|
var output = [];
|
13
13
|
|
14
14
|
var isInList = false;
|
@@ -49,7 +49,7 @@ component {
|
|
49
49
|
line = "<ul><li>" & trim( replace( matches[1], "*", "", "all" ) ) & "</li>";
|
50
50
|
}
|
51
51
|
else {
|
52
|
-
line = "<ul><li
|
52
|
+
line = "<ul><li>" & trim( replace( matches[1], "*", "", "all" ) ) & "</li>";
|
53
53
|
}
|
54
54
|
|
55
55
|
}
|
@@ -79,7 +79,7 @@ component {
|
|
79
79
|
line = "<li>" & trim( replace( matches[1], "*", "", "all" ) ) & "</li>";
|
80
80
|
}
|
81
81
|
else {
|
82
|
-
line = "<li
|
82
|
+
line = "<li>" & trim( replace( matches[1], "*", "", "all" ) ) & "</li>";
|
83
83
|
}
|
84
84
|
}
|
85
85
|
}
|
@@ -9,39 +9,39 @@ component extends="testbox.system.BaseSpec" {
|
|
9
9
|
describe( "My Markdown class", function(){
|
10
10
|
|
11
11
|
it( 'parses normal text as a paragraph', function(){
|
12
|
-
expect( SUT.parse(
|
12
|
+
expect( SUT.parse( markdown='This will be a paragraph' ) ).toBe( '<p>This will be a paragraph</p>' );
|
13
13
|
});
|
14
14
|
|
15
15
|
it( 'parsing italics', function(){
|
16
|
-
expect( SUT.parse(
|
16
|
+
expect( SUT.parse( markdown='_This will be italic_' ) ).toBe( '<p><em>This will be italic</em></p>' );
|
17
17
|
});
|
18
18
|
|
19
19
|
it( 'parsing bold text', function(){
|
20
|
-
expect( SUT.parse(
|
20
|
+
expect( SUT.parse( markdown='__This will be bold__' ) ).toBe( '<p><strong>This will be bold</strong></p>' );
|
21
21
|
});
|
22
22
|
|
23
23
|
it( 'mixed normal, italics and bold text', function(){
|
24
|
-
expect( SUT.parse(
|
24
|
+
expect( SUT.parse( markdown='This will _be_ __mixed__' ) ).toBe( '<p>This will <em>be</em> <strong>mixed</strong></p>' );
|
25
25
|
});
|
26
26
|
|
27
27
|
it( 'with h1 header level', function(){
|
28
|
-
expect( SUT.parse(
|
28
|
+
expect( SUT.parse( markdown='## This will be an h1' ) ).toBe( '<h1>This will be an h1</h1>' );
|
29
29
|
});
|
30
30
|
|
31
31
|
it( 'with h2 header level', function(){
|
32
|
-
expect( SUT.parse(
|
32
|
+
expect( SUT.parse( markdown='#### This will be an h2' ) ).toBe( '<h2>This will be an h2</h2>' );
|
33
33
|
});
|
34
34
|
|
35
35
|
it( 'with h6 header level', function(){
|
36
|
-
expect( SUT.parse(
|
36
|
+
expect( SUT.parse( markdown='############ This will be an h6' ) ).toBe( '<h6>This will be an h6</h6>' );
|
37
37
|
});
|
38
38
|
|
39
39
|
it( 'unordered lists', function(){
|
40
|
-
expect( SUT.parse(
|
40
|
+
expect( SUT.parse( markdown='* Item 1#chr( 10 )#* Item 2' ) ).toBe( '<ul><li>Item 1</li><li>Item 2</li></ul>' );
|
41
41
|
});
|
42
42
|
|
43
43
|
it( 'With a little bit of everything', function(){
|
44
|
-
expect( SUT.parse(
|
44
|
+
expect( SUT.parse( markdown='## Header!#chr( 10 )#* __Bold Item__#chr( 10 )#* _Italic Item_' ) ).toBe( '<h1>Header!</h1><ul><li><strong>Bold Item</strong></li><li><em>Italic Item</em></li></ul>' );
|
45
45
|
});
|
46
46
|
|
47
47
|
});
|
@@ -6,11 +6,11 @@ component {
|
|
6
6
|
/**
|
7
7
|
* Parse markdown
|
8
8
|
*
|
9
|
-
* @
|
9
|
+
* @markdown.hint markdown to parse
|
10
10
|
*/
|
11
|
-
public string function parse(required string
|
11
|
+
public string function parse(required string markdown) {
|
12
12
|
|
13
|
-
var lines = listToArray( arguments.
|
13
|
+
var lines = listToArray( arguments.markdown, chr( 10 ) );
|
14
14
|
var output = [];
|
15
15
|
var isInList = false;
|
16
16
|
|
@@ -151,7 +151,7 @@ component {
|
|
151
151
|
/* Add a p tag to item if no other tag is present */
|
152
152
|
if ( !reFindNoCase("<li><", output ) ) {
|
153
153
|
var pattern = "<li>(.*)</li>";
|
154
|
-
var replacement = "<li
|
154
|
+
var replacement = "<li>\1</li>";
|
155
155
|
var output = reReplaceNoCase( output, pattern, replacement );
|
156
156
|
}
|
157
157
|
|
@@ -9,23 +9,23 @@ component extends="testbox.system.BaseSpec" {
|
|
9
9
|
describe( "My NthPrime class", function(){
|
10
10
|
|
11
11
|
it( 'first prime', function(){
|
12
|
-
expect( SUT.prime(
|
12
|
+
expect( SUT.prime( number='1' ) ).toBe( '2' );
|
13
13
|
});
|
14
14
|
|
15
15
|
it( 'second prime', function(){
|
16
|
-
expect( SUT.prime(
|
16
|
+
expect( SUT.prime( number='2' ) ).toBe( '3' );
|
17
17
|
});
|
18
18
|
|
19
19
|
it( 'sixth prime', function(){
|
20
|
-
expect( SUT.prime(
|
20
|
+
expect( SUT.prime( number='6' ) ).toBe( '13' );
|
21
21
|
});
|
22
22
|
|
23
23
|
it( 'big prime', function(){
|
24
|
-
expect( SUT.prime(
|
24
|
+
expect( SUT.prime( number='10001' ) ).toBe( '104743' );
|
25
25
|
});
|
26
26
|
|
27
27
|
it( 'there is no zeroth prime', function(){
|
28
|
-
expect( SUT.prime(
|
28
|
+
expect( function(){ SUT.prime( number='0' ); } ).toThrow( message='there is no zeroth prime' );
|
29
29
|
});
|
30
30
|
|
31
31
|
});
|
@@ -3,13 +3,13 @@
|
|
3
3
|
*/
|
4
4
|
component {
|
5
5
|
|
6
|
-
function prime(
|
7
|
-
if(
|
8
|
-
|
6
|
+
function prime( number ) {
|
7
|
+
if( number == 0 ) {
|
8
|
+
throw( 'there is no zeroth prime' );
|
9
9
|
}
|
10
10
|
var primes = [];
|
11
11
|
var candidate = 1;
|
12
|
-
while( primes.len() <
|
12
|
+
while( primes.len() < number ) {
|
13
13
|
candidate ++;
|
14
14
|
if( candidate % 2 == 0 && candidate != 2 ) {
|
15
15
|
continue;
|
@@ -11,39 +11,43 @@ component extends="testbox.system.BaseSpec" {
|
|
11
11
|
describe( 'Check if the given string is an pangram', function(){
|
12
12
|
|
13
13
|
it( 'sentence empty', function(){
|
14
|
-
expect( SUT.isPangram(
|
14
|
+
expect( SUT.isPangram( sentence='' ) ).toBeFalse();
|
15
|
+
});
|
16
|
+
|
17
|
+
it( 'recognizes a perfect lower case pangram', function(){
|
18
|
+
expect( SUT.isPangram( sentence='abcdefghijklmnopqrstuvwxyz' ) ).toBeTrue();
|
15
19
|
});
|
16
20
|
|
17
21
|
it( 'pangram with only lower case', function(){
|
18
|
-
expect( SUT.isPangram(
|
22
|
+
expect( SUT.isPangram( sentence='the quick brown fox jumps over the lazy dog' ) ).toBeTrue();
|
19
23
|
});
|
20
24
|
|
21
25
|
it( 'missing character ''x''', function(){
|
22
|
-
expect( SUT.isPangram(
|
26
|
+
expect( SUT.isPangram( sentence='a quick movement of the enemy will jeopardize five gunboats' ) ).toBeFalse();
|
23
27
|
});
|
24
28
|
|
25
|
-
it( 'another missing character ''
|
26
|
-
expect( SUT.isPangram(
|
29
|
+
it( 'another missing character, e.g. ''h''', function(){
|
30
|
+
expect( SUT.isPangram( sentence='five boxing wizards jump quickly at it' ) ).toBeFalse();
|
27
31
|
});
|
28
32
|
|
29
33
|
it( 'pangram with underscores', function(){
|
30
|
-
expect( SUT.isPangram(
|
34
|
+
expect( SUT.isPangram( sentence='the_quick_brown_fox_jumps_over_the_lazy_dog' ) ).toBeTrue();
|
31
35
|
});
|
32
36
|
|
33
37
|
it( 'pangram with numbers', function(){
|
34
|
-
expect( SUT.isPangram(
|
38
|
+
expect( SUT.isPangram( sentence='the 1 quick brown fox jumps over the 2 lazy dogs' ) ).toBeTrue();
|
35
39
|
});
|
36
40
|
|
37
41
|
it( 'missing letters replaced by numbers', function(){
|
38
|
-
expect( SUT.isPangram(
|
42
|
+
expect( SUT.isPangram( sentence='7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog' ) ).toBeFalse();
|
39
43
|
});
|
40
44
|
|
41
45
|
it( 'pangram with mixed case and punctuation', function(){
|
42
|
-
expect( SUT.isPangram(
|
46
|
+
expect( SUT.isPangram( sentence='"Five quacking Zephyrs jolt my wax bed."' ) ).toBeTrue();
|
43
47
|
});
|
44
48
|
|
45
49
|
it( 'upper and lower case versions of the same character should not be counted separately', function(){
|
46
|
-
expect( SUT.isPangram(
|
50
|
+
expect( SUT.isPangram( sentence='the quick brown fox jumps over with lazy FX' ) ).toBeFalse();
|
47
51
|
});
|
48
52
|
|
49
53
|
});
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
|
4
4
|
"every letter") is a sentence using every letter of the alphabet at least once.
|
5
|
-
The best known English pangram is:
|
5
|
+
The best known English pangram is:
|
6
6
|
> The quick brown fox jumps over the lazy dog.
|
7
7
|
|
8
8
|
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
|
@@ -3,14 +3,14 @@
|
|
3
3
|
*/
|
4
4
|
component {
|
5
5
|
|
6
|
-
function isPangram(
|
7
|
-
// Lowercase
|
8
|
-
|
6
|
+
function isPangram( sentence ) {
|
7
|
+
// Lowercase sentence to simplify search
|
8
|
+
sentence = sentence.lCase();
|
9
9
|
var i = 96;
|
10
10
|
// ASCII codes 97-122 are a-z
|
11
11
|
while( ++i <= 122 ) {
|
12
12
|
// If any letter is missing, then quit
|
13
|
-
if( !
|
13
|
+
if( !sentence.find( chr( i ) ) ) {
|
14
14
|
return false;
|
15
15
|
}
|
16
16
|
}
|
@@ -11,27 +11,27 @@ component extends="testbox.system.BaseSpec" {
|
|
11
11
|
describe( 'ay is added to words that start with vowels', function(){
|
12
12
|
|
13
13
|
it( 'word beginning with a', function(){
|
14
|
-
expect( SUT.translate(
|
14
|
+
expect( SUT.translate( phrase='apple' ) ).toBe( 'appleay' );
|
15
15
|
});
|
16
16
|
|
17
17
|
it( 'word beginning with e', function(){
|
18
|
-
expect( SUT.translate(
|
18
|
+
expect( SUT.translate( phrase='ear' ) ).toBe( 'earay' );
|
19
19
|
});
|
20
20
|
|
21
21
|
it( 'word beginning with i', function(){
|
22
|
-
expect( SUT.translate(
|
22
|
+
expect( SUT.translate( phrase='igloo' ) ).toBe( 'iglooay' );
|
23
23
|
});
|
24
24
|
|
25
25
|
it( 'word beginning with o', function(){
|
26
|
-
expect( SUT.translate(
|
26
|
+
expect( SUT.translate( phrase='object' ) ).toBe( 'objectay' );
|
27
27
|
});
|
28
28
|
|
29
29
|
it( 'word beginning with u', function(){
|
30
|
-
expect( SUT.translate(
|
30
|
+
expect( SUT.translate( phrase='under' ) ).toBe( 'underay' );
|
31
31
|
});
|
32
32
|
|
33
33
|
it( 'word beginning with a vowel and followed by a qu', function(){
|
34
|
-
expect( SUT.translate(
|
34
|
+
expect( SUT.translate( phrase='equal' ) ).toBe( 'equalay' );
|
35
35
|
});
|
36
36
|
|
37
37
|
});
|
@@ -39,23 +39,19 @@ component extends="testbox.system.BaseSpec" {
|
|
39
39
|
describe( 'first letter and ay are moved to the end of words that start with consonants', function(){
|
40
40
|
|
41
41
|
it( 'word beginning with p', function(){
|
42
|
-
expect( SUT.translate(
|
42
|
+
expect( SUT.translate( phrase='pig' ) ).toBe( 'igpay' );
|
43
43
|
});
|
44
44
|
|
45
45
|
it( 'word beginning with k', function(){
|
46
|
-
expect( SUT.translate(
|
47
|
-
});
|
48
|
-
|
49
|
-
it( 'word beginning with y', function(){
|
50
|
-
expect( SUT.translate( input='yellow' ) ).toBe( 'ellowyay' );
|
46
|
+
expect( SUT.translate( phrase='koala' ) ).toBe( 'oalakay' );
|
51
47
|
});
|
52
48
|
|
53
49
|
it( 'word beginning with x', function(){
|
54
|
-
expect( SUT.translate(
|
50
|
+
expect( SUT.translate( phrase='xenon' ) ).toBe( 'enonxay' );
|
55
51
|
});
|
56
52
|
|
57
53
|
it( 'word beginning with q without a following u', function(){
|
58
|
-
expect( SUT.translate(
|
54
|
+
expect( SUT.translate( phrase='qat' ) ).toBe( 'atqay' );
|
59
55
|
});
|
60
56
|
|
61
57
|
});
|
@@ -63,27 +59,27 @@ component extends="testbox.system.BaseSpec" {
|
|
63
59
|
describe( 'some letter clusters are treated like a single consonant', function(){
|
64
60
|
|
65
61
|
it( 'word beginning with ch', function(){
|
66
|
-
expect( SUT.translate(
|
62
|
+
expect( SUT.translate( phrase='chair' ) ).toBe( 'airchay' );
|
67
63
|
});
|
68
64
|
|
69
65
|
it( 'word beginning with qu', function(){
|
70
|
-
expect( SUT.translate(
|
66
|
+
expect( SUT.translate( phrase='queen' ) ).toBe( 'eenquay' );
|
71
67
|
});
|
72
68
|
|
73
69
|
it( 'word beginning with qu and a preceding consonant', function(){
|
74
|
-
expect( SUT.translate(
|
70
|
+
expect( SUT.translate( phrase='square' ) ).toBe( 'aresquay' );
|
75
71
|
});
|
76
72
|
|
77
73
|
it( 'word beginning with th', function(){
|
78
|
-
expect( SUT.translate(
|
74
|
+
expect( SUT.translate( phrase='therapy' ) ).toBe( 'erapythay' );
|
79
75
|
});
|
80
76
|
|
81
77
|
it( 'word beginning with thr', function(){
|
82
|
-
expect( SUT.translate(
|
78
|
+
expect( SUT.translate( phrase='thrush' ) ).toBe( 'ushthray' );
|
83
79
|
});
|
84
80
|
|
85
81
|
it( 'word beginning with sch', function(){
|
86
|
-
expect( SUT.translate(
|
82
|
+
expect( SUT.translate( phrase='school' ) ).toBe( 'oolschay' );
|
87
83
|
});
|
88
84
|
|
89
85
|
});
|
@@ -91,11 +87,27 @@ component extends="testbox.system.BaseSpec" {
|
|
91
87
|
describe( 'some letter clusters are treated like a single vowel', function(){
|
92
88
|
|
93
89
|
it( 'word beginning with yt', function(){
|
94
|
-
expect( SUT.translate(
|
90
|
+
expect( SUT.translate( phrase='yttria' ) ).toBe( 'yttriaay' );
|
95
91
|
});
|
96
92
|
|
97
93
|
it( 'word beginning with xr', function(){
|
98
|
-
expect( SUT.translate(
|
94
|
+
expect( SUT.translate( phrase='xray' ) ).toBe( 'xrayay' );
|
95
|
+
});
|
96
|
+
|
97
|
+
});
|
98
|
+
|
99
|
+
describe( 'position of y in a word determines if it is a consonant or a vowel', function(){
|
100
|
+
|
101
|
+
it( 'y is treated like a consonant at the beginning of a word', function(){
|
102
|
+
expect( SUT.translate( phrase='yellow' ) ).toBe( 'ellowyay' );
|
103
|
+
});
|
104
|
+
|
105
|
+
it( 'y is treated like a vowel at the end of a consonant cluster', function(){
|
106
|
+
expect( SUT.translate( phrase='rhythm' ) ).toBe( 'ythmrhay' );
|
107
|
+
});
|
108
|
+
|
109
|
+
it( 'y as second letter in two letter word', function(){
|
110
|
+
expect( SUT.translate( phrase='my' ) ).toBe( 'ymay' );
|
99
111
|
});
|
100
112
|
|
101
113
|
});
|
@@ -103,7 +115,7 @@ component extends="testbox.system.BaseSpec" {
|
|
103
115
|
describe( 'phrases are translated', function(){
|
104
116
|
|
105
117
|
it( 'a whole phrase', function(){
|
106
|
-
expect( SUT.translate(
|
118
|
+
expect( SUT.translate( phrase='quick fast run' ) ).toBe( 'ickquay astfay unray' );
|
107
119
|
});
|
108
120
|
|
109
121
|
});
|
@@ -3,11 +3,11 @@
|
|
3
3
|
*/
|
4
4
|
component {
|
5
5
|
|
6
|
-
function translate(
|
6
|
+
function translate( phrase ) {
|
7
7
|
var response = '';
|
8
8
|
|
9
9
|
// Loop over each work
|
10
|
-
return
|
10
|
+
return phrase
|
11
11
|
.listToArray( ' ' )
|
12
12
|
.map( function( word ) {
|
13
13
|
|
@@ -15,8 +15,8 @@ component {
|
|
15
15
|
if( word.reFindNoCase( '^(a|e|i|o|u|yt|xr)' ) ) {
|
16
16
|
return word & 'ay';
|
17
17
|
// Consonate sounds
|
18
|
-
} else if( word.reFindNoCase( '^(ch|squ|qu|thr|th|sch)' ) ) {
|
19
|
-
return word.reReplaceNoCase( '^(ch|squ|qu|thr|th|sch)(.*)', '\2\1ay' );
|
18
|
+
} else if( word.reFindNoCase( '^(ch|squ|qu|thr|th|sch|rh)' ) ) {
|
19
|
+
return word.reReplaceNoCase( '^(ch|squ|qu|thr|th|sch|rh)(.*)', '\2\1ay' );
|
20
20
|
// Everything else
|
21
21
|
} else {
|
22
22
|
return word.right( -1 ) & word.left( 1 ) & 'ay';
|