trackler 2.2.1.44 → 2.2.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/isbn-verifier/canonical-data.json +88 -0
- data/problem-specifications/exercises/isbn-verifier/description.md +35 -0
- data/problem-specifications/exercises/isbn-verifier/metadata.yml +4 -0
- data/problem-specifications/exercises/robot-simulator/canonical-data.json +125 -32
- data/problem-specifications/exercises/sum-of-multiples/description.md +0 -3
- data/problem-specifications/exercises/two-bucket/canonical-data.json +3 -3
- data/tracks/c/config.json +235 -237
- data/tracks/c/exercises/acronym/README.md +0 -1
- data/tracks/c/exercises/all-your-base/README.md +1 -1
- data/tracks/c/exercises/allergies/README.md +0 -1
- data/tracks/c/exercises/atbash-cipher/README.md +2 -1
- data/tracks/c/exercises/beer-song/README.md +1 -1
- data/tracks/c/exercises/binary/README.md +2 -0
- data/tracks/c/exercises/grains/README.md +0 -1
- data/tracks/c/exercises/isogram/README.md +2 -1
- data/tracks/c/exercises/leap/README.md +1 -1
- data/tracks/c/exercises/meetup/README.md +1 -2
- data/tracks/c/exercises/nucleotide-count/README.md +8 -22
- data/tracks/c/exercises/palindrome-products/README.md +12 -6
- data/tracks/c/exercises/pangram/README.md +1 -1
- data/tracks/c/exercises/pascals-triangle/README.md +1 -1
- data/tracks/c/exercises/perfect-numbers/README.md +2 -2
- data/tracks/c/exercises/phone-number/README.md +3 -2
- data/tracks/c/exercises/roman-numerals/README.md +1 -1
- data/tracks/c/exercises/scrabble-score/README.md +3 -1
- data/tracks/c/exercises/space-age/README.md +2 -1
- data/tracks/c/exercises/triangle/README.md +9 -6
- data/tracks/c/exercises/word-count/README.md +1 -2
- data/tracks/csharp/exercises/accumulate/Accumulate.csproj +2 -2
- data/tracks/csharp/exercises/acronym/Acronym.csproj +2 -2
- data/tracks/csharp/exercises/all-your-base/AllYourBase.csproj +2 -2
- data/tracks/csharp/exercises/allergies/Allergies.csproj +2 -2
- data/tracks/csharp/exercises/alphametics/Alphametics.csproj +2 -2
- data/tracks/csharp/exercises/anagram/Anagram.csproj +2 -2
- data/tracks/csharp/exercises/atbash-cipher/AtbashCipher.csproj +2 -2
- data/tracks/csharp/exercises/bank-account/BankAccount.csproj +2 -2
- data/tracks/csharp/exercises/beer-song/BeerSong.csproj +2 -2
- data/tracks/csharp/exercises/binary-search/BinarySearch.csproj +2 -2
- data/tracks/csharp/exercises/binary-search-tree/BinarySearchTree.csproj +2 -2
- data/tracks/csharp/exercises/bob/Bob.csproj +2 -2
- data/tracks/csharp/exercises/book-store/BookStore.csproj +2 -2
- data/tracks/csharp/exercises/bowling/Bowling.csproj +2 -2
- data/tracks/csharp/exercises/bracket-push/BracketPush.csproj +2 -2
- data/tracks/csharp/exercises/change/Change.csproj +2 -2
- data/tracks/csharp/exercises/circular-buffer/CircularBuffer.csproj +2 -2
- data/tracks/csharp/exercises/clock/Clock.csproj +2 -2
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.csproj +2 -2
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbers.csproj +2 -2
- data/tracks/csharp/exercises/connect/Connect.cs +1 -1
- data/tracks/csharp/exercises/connect/Connect.csproj +2 -2
- data/tracks/csharp/exercises/connect/ConnectTest.cs +120 -85
- data/tracks/csharp/exercises/connect/Example.cs +11 -7
- data/tracks/csharp/exercises/crypto-square/CryptoSquare.csproj +2 -2
- data/tracks/csharp/exercises/custom-set/CustomSet.csproj +2 -2
- data/tracks/csharp/exercises/diamond/Diamond.csproj +2 -2
- data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquares.csproj +2 -2
- data/tracks/csharp/exercises/diffie-hellman/DiffieHellman.csproj +2 -2
- data/tracks/csharp/exercises/dominoes/Dominoes.csproj +2 -2
- data/tracks/csharp/exercises/dot-dsl/DotDsl.csproj +2 -2
- data/tracks/csharp/exercises/error-handling/ErrorHandling.csproj +2 -2
- data/tracks/csharp/exercises/etl/Etl.csproj +2 -2
- data/tracks/csharp/exercises/flatten-array/FlattenArray.csproj +2 -2
- data/tracks/csharp/exercises/food-chain/FoodChain.csproj +2 -2
- data/tracks/csharp/exercises/forth/Forth.csproj +2 -2
- data/tracks/csharp/exercises/gigasecond/Gigasecond.csproj +2 -2
- data/tracks/csharp/exercises/go-counting/GoCounting.csproj +2 -2
- data/tracks/csharp/exercises/grade-school/GradeSchool.csproj +2 -2
- data/tracks/csharp/exercises/grains/Grains.csproj +2 -2
- data/tracks/csharp/exercises/grep/Grep.csproj +2 -2
- data/tracks/csharp/exercises/hamming/Hamming.csproj +2 -2
- data/tracks/csharp/exercises/hangman/Hangman.csproj +2 -2
- data/tracks/csharp/exercises/hello-world/HelloWorld.csproj +2 -2
- data/tracks/csharp/exercises/house/House.csproj +2 -2
- data/tracks/csharp/exercises/isogram/Isogram.csproj +2 -2
- data/tracks/csharp/exercises/kindergarten-garden/KindergartenGarden.csproj +2 -2
- data/tracks/csharp/exercises/largest-series-product/LargestSeriesProduct.csproj +2 -2
- data/tracks/csharp/exercises/leap/Leap.csproj +2 -2
- data/tracks/csharp/exercises/ledger/Ledger.csproj +2 -2
- data/tracks/csharp/exercises/linked-list/LinkedList.csproj +2 -2
- data/tracks/csharp/exercises/list-ops/ListOps.csproj +2 -2
- data/tracks/csharp/exercises/luhn/Luhn.csproj +2 -2
- data/tracks/csharp/exercises/markdown/Markdown.csproj +2 -2
- data/tracks/csharp/exercises/matrix/Matrix.csproj +2 -2
- data/tracks/csharp/exercises/meetup/Meetup.csproj +2 -2
- data/tracks/csharp/exercises/minesweeper/Minesweeper.csproj +2 -2
- data/tracks/csharp/exercises/nth-prime/NthPrime.csproj +2 -2
- data/tracks/csharp/exercises/nucleotide-count/NucleotideCount.csproj +2 -2
- data/tracks/csharp/exercises/ocr-numbers/OcrNumbers.csproj +2 -2
- data/tracks/csharp/exercises/palindrome-products/PalindromeProducts.csproj +2 -2
- data/tracks/csharp/exercises/pangram/Pangram.csproj +2 -2
- data/tracks/csharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +2 -2
- data/tracks/csharp/exercises/pascals-triangle/PascalsTriangle.csproj +2 -2
- data/tracks/csharp/exercises/perfect-numbers/PerfectNumbers.csproj +2 -2
- data/tracks/csharp/exercises/phone-number/PhoneNumber.csproj +2 -2
- data/tracks/csharp/exercises/pig-latin/PigLatin.csproj +2 -2
- data/tracks/csharp/exercises/poker/Poker.csproj +2 -2
- data/tracks/csharp/exercises/pov/Pov.csproj +2 -2
- data/tracks/csharp/exercises/prime-factors/PrimeFactors.csproj +2 -2
- data/tracks/csharp/exercises/protein-translation/ProteinTranslation.csproj +2 -2
- data/tracks/csharp/exercises/proverb/Proverb.csproj +2 -2
- data/tracks/csharp/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +2 -2
- data/tracks/csharp/exercises/queen-attack/QueenAttack.csproj +2 -2
- data/tracks/csharp/exercises/rail-fence-cipher/RailFenceCipher.csproj +2 -2
- data/tracks/csharp/exercises/raindrops/Raindrops.csproj +2 -2
- data/tracks/csharp/exercises/react/React.csproj +2 -2
- data/tracks/csharp/exercises/rectangles/Rectangles.csproj +2 -2
- data/tracks/csharp/exercises/rna-transcription/RnaTranscription.csproj +2 -2
- data/tracks/csharp/exercises/robot-name/RobotName.csproj +2 -2
- data/tracks/csharp/exercises/robot-simulator/RobotSimulator.csproj +2 -2
- data/tracks/csharp/exercises/roman-numerals/RomanNumerals.csproj +2 -2
- data/tracks/csharp/exercises/rotational-cipher/RotationalCipher.csproj +2 -2
- data/tracks/csharp/exercises/run-length-encoding/RunLengthEncoding.csproj +2 -2
- data/tracks/csharp/exercises/saddle-points/SaddlePoints.csproj +2 -2
- data/tracks/csharp/exercises/say/Say.csproj +2 -2
- data/tracks/csharp/exercises/scale-generator/ScaleGenerator.csproj +2 -2
- data/tracks/csharp/exercises/scrabble-score/ScrabbleScore.csproj +2 -2
- data/tracks/csharp/exercises/secret-handshake/SecretHandshake.csproj +2 -2
- data/tracks/csharp/exercises/series/Series.csproj +2 -2
- data/tracks/csharp/exercises/series/SeriesTest.cs +17 -17
- data/tracks/csharp/exercises/sgf-parsing/SgfParsing.csproj +2 -2
- data/tracks/csharp/exercises/sieve/Sieve.csproj +2 -2
- data/tracks/csharp/exercises/simple-cipher/SimpleCipher.csproj +2 -2
- data/tracks/csharp/exercises/simple-linked-list/SimpleLinkedList.csproj +2 -2
- data/tracks/csharp/exercises/space-age/SpaceAge.csproj +2 -2
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.csproj +2 -2
- data/tracks/csharp/exercises/strain/Strain.csproj +2 -2
- data/tracks/csharp/exercises/sublist/Sublist.csproj +2 -2
- data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiples.csproj +2 -2
- data/tracks/csharp/exercises/tournament/Tournament.csproj +2 -2
- data/tracks/csharp/exercises/transpose/Transpose.csproj +2 -2
- data/tracks/csharp/exercises/tree-building/TreeBuilding.csproj +2 -2
- data/tracks/csharp/exercises/triangle/Triangle.cs +0 -11
- data/tracks/csharp/exercises/triangle/Triangle.csproj +2 -2
- data/tracks/csharp/exercises/triangle/TriangleTest.cs +17 -17
- data/tracks/csharp/exercises/twelve-days/TwelveDays.csproj +2 -2
- data/tracks/csharp/exercises/two-bucket/TwoBucket.csproj +2 -2
- data/tracks/csharp/exercises/two-fer/TwoFer.csproj +2 -2
- data/tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantity.csproj +2 -2
- data/tracks/csharp/exercises/word-count/WordCount.csproj +2 -2
- data/tracks/csharp/exercises/word-search/WordSearch.csproj +2 -2
- data/tracks/csharp/exercises/wordy/Wordy.csproj +2 -2
- data/tracks/csharp/exercises/zebra-puzzle/ZebraPuzzle.csproj +2 -2
- data/tracks/csharp/exercises/zipper/Zipper.csproj +2 -2
- data/tracks/csharp/generators/Exercises/Connect.cs +47 -0
- data/tracks/csharp/generators/Exercises/Triangle.cs +1 -1
- data/tracks/dart/config/maintainers.json +27 -1
- data/tracks/dart/pubspec.yaml +3 -0
- data/tracks/dart/tool/create-exercise +144 -5
- data/tracks/elm/.gitattributes +1 -0
- data/tracks/elm/bin/install-elm-format +9 -3
- data/tracks/elm/config.json +30 -0
- data/tracks/elm/exercises/all-your-base/AllYourBase.elm +1 -0
- data/tracks/elm/exercises/all-your-base/AllYourBase.example.elm +68 -0
- data/tracks/elm/exercises/all-your-base/README.md +65 -0
- data/tracks/elm/exercises/all-your-base/elm-package.json +15 -0
- data/tracks/elm/exercises/all-your-base/tests/Tests.elm +53 -0
- data/tracks/elm/exercises/all-your-base/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/collatz-conjecture/CollatzConjecture.elm +2 -0
- data/tracks/elm/exercises/collatz-conjecture/CollatzConjecture.example.elm +19 -0
- data/tracks/elm/exercises/collatz-conjecture/elm-package.json +15 -0
- data/tracks/elm/exercises/collatz-conjecture/package.json +14 -0
- data/tracks/elm/exercises/collatz-conjecture/tests/Tests.elm +38 -0
- data/tracks/elm/exercises/collatz-conjecture/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/isogram/Isogram.elm +1 -0
- data/tracks/elm/exercises/isogram/Isogram.example.elm +76 -0
- data/tracks/elm/exercises/isogram/README.md +50 -0
- data/tracks/elm/exercises/isogram/elm-package.json +14 -0
- data/tracks/elm/exercises/isogram/package.json +14 -0
- data/tracks/elm/exercises/isogram/tests/Tests.elm +46 -0
- data/tracks/elm/exercises/isogram/tests/elm-package.json +16 -0
- data/tracks/fsharp/.gitignore +2 -1
- data/tracks/fsharp/exercises/accumulate/Accumulate.fsproj +3 -2
- data/tracks/fsharp/exercises/acronym/Acronym.fs +1 -1
- data/tracks/fsharp/exercises/acronym/Acronym.fsproj +3 -2
- data/tracks/fsharp/exercises/acronym/AcronymTest.fs +13 -38
- data/tracks/fsharp/exercises/acronym/Example.fs +1 -1
- data/tracks/fsharp/exercises/all-your-base/AllYourBase.fsproj +3 -2
- data/tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs +64 -61
- data/tracks/fsharp/exercises/all-your-base/Example.fs +4 -1
- data/tracks/fsharp/exercises/allergies/Allergies.fs +2 -2
- data/tracks/fsharp/exercises/allergies/Allergies.fsproj +3 -2
- data/tracks/fsharp/exercises/allergies/AllergiesTest.fs +28 -37
- data/tracks/fsharp/exercises/allergies/Example.fs +3 -3
- data/tracks/fsharp/exercises/alphametics/Alphametics.fsproj +3 -2
- data/tracks/fsharp/exercises/anagram/Anagram.fsproj +3 -2
- data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fs +4 -2
- data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fsproj +3 -2
- data/tracks/fsharp/exercises/atbash-cipher/AtbashCipherTest.fs +38 -42
- data/tracks/fsharp/exercises/atbash-cipher/Example.fs +5 -3
- data/tracks/fsharp/exercises/bank-account/BankAccount.fsproj +3 -2
- data/tracks/fsharp/exercises/beer-song/BeerSong.fsproj +3 -2
- data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +36 -32
- data/tracks/fsharp/exercises/beer-song/Example.fs +2 -2
- data/tracks/fsharp/exercises/binary-search/BinarySearch.fsproj +3 -2
- data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTree.fsproj +3 -2
- data/tracks/fsharp/exercises/bob/Bob.fs +1 -1
- data/tracks/fsharp/exercises/bob/Bob.fsproj +3 -2
- data/tracks/fsharp/exercises/bob/BobTest.fs +64 -20
- data/tracks/fsharp/exercises/bob/Example.fs +3 -4
- data/tracks/fsharp/exercises/book-store/BookStore.fs +1 -1
- data/tracks/fsharp/exercises/book-store/BookStore.fsproj +3 -2
- data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +32 -25
- data/tracks/fsharp/exercises/book-store/Example.fs +1 -1
- data/tracks/fsharp/exercises/bowling/Bowling.fsproj +3 -2
- data/tracks/fsharp/exercises/bracket-push/BracketPush.fs +1 -1
- data/tracks/fsharp/exercises/bracket-push/BracketPush.fsproj +3 -2
- data/tracks/fsharp/exercises/bracket-push/BracketPushTest.fs +24 -25
- data/tracks/fsharp/exercises/bracket-push/Example.fs +1 -1
- data/tracks/fsharp/exercises/change/Change.fs +1 -1
- data/tracks/fsharp/exercises/change/Change.fsproj +3 -2
- data/tracks/fsharp/exercises/change/ChangeTest.fs +42 -18
- data/tracks/fsharp/exercises/change/Example.fs +7 -4
- data/tracks/fsharp/exercises/circular-buffer/CircularBuffer.fsproj +3 -2
- data/tracks/fsharp/exercises/clock/Clock.fsproj +3 -2
- data/tracks/fsharp/exercises/connect/Connect.fsproj +3 -2
- data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fs +1 -40
- data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fsproj +3 -2
- data/tracks/fsharp/exercises/crypto-square/CryptoSquareTest.fs +16 -40
- data/tracks/fsharp/exercises/crypto-square/Example.fs +13 -16
- data/tracks/fsharp/exercises/custom-set/CustomSet.fs +12 -12
- data/tracks/fsharp/exercises/custom-set/CustomSet.fsproj +3 -2
- data/tracks/fsharp/exercises/diamond/Diamond.fsproj +3 -2
- data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fs +2 -2
- data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fsproj +3 -2
- data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquaresTest.fs +24 -20
- data/tracks/fsharp/exercises/difference-of-squares/Example.fs +3 -3
- data/tracks/fsharp/exercises/diffie-hellman/DiffieHellman.fsproj +3 -2
- data/tracks/fsharp/exercises/dominoes/Dominoes.fsproj +3 -2
- data/tracks/fsharp/exercises/dot-dsl/DotDsl.fsproj +3 -2
- data/tracks/fsharp/exercises/error-handling/ErrorHandling.fsproj +3 -2
- data/tracks/fsharp/exercises/etl/Etl.fsproj +3 -2
- data/tracks/fsharp/exercises/food-chain/FoodChain.fsproj +3 -2
- data/tracks/fsharp/exercises/forth/Forth.fsproj +3 -2
- data/tracks/fsharp/exercises/gigasecond/Example.fs +1 -3
- data/tracks/fsharp/exercises/gigasecond/Gigasecond.fs +1 -1
- data/tracks/fsharp/exercises/gigasecond/Gigasecond.fsproj +3 -2
- data/tracks/fsharp/exercises/gigasecond/GigasecondTest.fs +21 -12
- data/tracks/fsharp/exercises/go-counting/GoCounting.fsproj +3 -2
- data/tracks/fsharp/exercises/grade-school/GradeSchool.fsproj +3 -2
- data/tracks/fsharp/exercises/grains/Grains.fsproj +3 -2
- data/tracks/fsharp/exercises/grep/Grep.fsproj +3 -2
- data/tracks/fsharp/exercises/hamming/Hamming.fsproj +3 -2
- data/tracks/fsharp/exercises/hangman/Hangman.fsproj +3 -2
- data/tracks/fsharp/exercises/hello-world/HelloWorld.fsproj +3 -2
- data/tracks/fsharp/exercises/hello-world/HelloWorldTest.fs +6 -3
- data/tracks/fsharp/exercises/house/House.fsproj +3 -2
- data/tracks/fsharp/exercises/isogram/Example.fs +1 -1
- data/tracks/fsharp/exercises/isogram/Isogram.fs +1 -1
- data/tracks/fsharp/exercises/isogram/Isogram.fsproj +3 -2
- data/tracks/fsharp/exercises/isogram/IsogramTest.fs +16 -40
- data/tracks/fsharp/exercises/kindergarten-garden/Example.fs +6 -4
- data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fs +3 -5
- data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fsproj +3 -2
- data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGardenTest.fs +100 -47
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fsproj +3 -2
- data/tracks/fsharp/exercises/leap/Example.fs +2 -2
- data/tracks/fsharp/exercises/leap/Leap.fs +2 -2
- data/tracks/fsharp/exercises/leap/Leap.fsproj +3 -2
- data/tracks/fsharp/exercises/leap/LeapTest.fs +19 -15
- data/tracks/fsharp/exercises/ledger/Ledger.fsproj +3 -2
- data/tracks/fsharp/exercises/lens-person/LensPerson.fsproj +3 -2
- data/tracks/fsharp/exercises/linked-list/LinkedList.fsproj +3 -2
- data/tracks/fsharp/exercises/list-ops/ListOps.fsproj +3 -2
- data/tracks/fsharp/exercises/luhn/Luhn.fsproj +3 -2
- data/tracks/fsharp/exercises/luhn/LuhnTest.fs +30 -65
- data/tracks/fsharp/exercises/markdown/Markdown.fsproj +3 -2
- data/tracks/fsharp/exercises/matrix/Matrix.fsproj +3 -2
- data/tracks/fsharp/exercises/meetup/Meetup.fsproj +3 -2
- data/tracks/fsharp/exercises/minesweeper/Example.fs +9 -11
- data/tracks/fsharp/exercises/minesweeper/Minesweeper.fsproj +3 -2
- data/tracks/fsharp/exercises/minesweeper/MinesweeperTest.fs +117 -80
- data/tracks/fsharp/exercises/nth-prime/NthPrime.fsproj +3 -2
- data/tracks/fsharp/exercises/nucleotide-count/NucleotideCount.fsproj +3 -2
- data/tracks/fsharp/exercises/ocr-numbers/OcrNumbers.fsproj +3 -2
- data/tracks/fsharp/exercises/palindrome-products/PalindromeProducts.fsproj +3 -2
- data/tracks/fsharp/exercises/pangram/Pangram.fsproj +3 -2
- data/tracks/fsharp/exercises/pangram/PangramTest.fs +15 -27
- data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.fsproj +3 -2
- data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangle.fsproj +3 -2
- data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fsproj +3 -2
- data/tracks/fsharp/exercises/phone-number/PhoneNumber.fsproj +3 -2
- data/tracks/fsharp/exercises/pig-latin/Example.fs +1 -1
- data/tracks/fsharp/exercises/pig-latin/PigLatin.fsproj +3 -2
- data/tracks/fsharp/exercises/pig-latin/PigLatinTest.fs +64 -26
- data/tracks/fsharp/exercises/poker/Poker.fsproj +3 -2
- data/tracks/fsharp/exercises/pov/Pov.fsproj +3 -2
- data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fsproj +3 -2
- data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fsproj +3 -2
- data/tracks/fsharp/exercises/proverb/Proverb.fsproj +3 -2
- data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTriplet.fsproj +3 -2
- data/tracks/fsharp/exercises/queen-attack/Example.fs +3 -1
- data/tracks/fsharp/exercises/queen-attack/QueenAttack.fs +2 -0
- data/tracks/fsharp/exercises/queen-attack/QueenAttack.fsproj +3 -2
- data/tracks/fsharp/exercises/queen-attack/QueenAttackTest.fs +50 -20
- data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipher.fsproj +3 -2
- data/tracks/fsharp/exercises/raindrops/Raindrops.fsproj +3 -2
- data/tracks/fsharp/exercises/raindrops/RaindropsTest.fs +77 -37
- data/tracks/fsharp/exercises/react/React.fsproj +3 -2
- data/tracks/fsharp/exercises/rectangles/Rectangles.fsproj +3 -2
- data/tracks/fsharp/exercises/rna-transcription/Example.fs +15 -7
- data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fs +2 -2
- data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fsproj +3 -2
- data/tracks/fsharp/exercises/rna-transcription/RnaTranscriptionTest.fs +29 -14
- data/tracks/fsharp/exercises/robot-name/RobotName.fsproj +3 -2
- data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fsproj +3 -2
- data/tracks/fsharp/exercises/roman-numerals/Example.fs +2 -2
- data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fs +2 -2
- data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fsproj +3 -2
- data/tracks/fsharp/exercises/roman-numerals/RomanNumeralsTest.fs +79 -26
- data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncoding.fsproj +3 -2
- data/tracks/fsharp/exercises/saddle-points/SaddlePoints.fsproj +3 -2
- data/tracks/fsharp/exercises/say/Say.fsproj +3 -2
- data/tracks/fsharp/exercises/scale-generator/ScaleGenerator.fsproj +3 -2
- data/tracks/fsharp/exercises/scrabble-score/ScrabbleScore.fsproj +3 -2
- data/tracks/fsharp/exercises/scrabble-score/ScrabbleScoreTest.fs +33 -17
- data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fsproj +3 -2
- data/tracks/fsharp/exercises/series/Series.fsproj +3 -2
- data/tracks/fsharp/exercises/sgf-parsing/SgfParsing.fsproj +3 -2
- data/tracks/fsharp/exercises/sieve/Sieve.fsproj +3 -2
- data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fsproj +3 -2
- data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedList.fsproj +3 -2
- data/tracks/fsharp/exercises/space-age/SpaceAge.fsproj +3 -2
- data/tracks/fsharp/exercises/strain/Strain.fsproj +3 -2
- data/tracks/fsharp/exercises/sublist/Sublist.fsproj +3 -2
- data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fsproj +3 -2
- data/tracks/fsharp/exercises/tournament/Tournament.fsproj +3 -2
- data/tracks/fsharp/exercises/transpose/Transpose.fsproj +3 -2
- data/tracks/fsharp/exercises/tree-building/TreeBuilding.fsproj +3 -2
- data/tracks/fsharp/exercises/triangle/Triangle.fsproj +3 -2
- data/tracks/fsharp/exercises/twelve-days/TwelveDays.fsproj +3 -2
- data/tracks/fsharp/exercises/two-bucket/TwoBucket.fsproj +3 -2
- data/tracks/fsharp/exercises/two-fer/TwoFer.fsproj +3 -2
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantity.fsproj +3 -2
- data/tracks/fsharp/exercises/word-count/WordCount.fsproj +3 -2
- data/tracks/fsharp/exercises/word-search/WordSearch.fsproj +3 -2
- data/tracks/fsharp/exercises/wordy/Wordy.fsproj +3 -2
- data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzle.fsproj +3 -2
- data/tracks/fsharp/exercises/zipper/Zipper.fsproj +3 -2
- data/tracks/fsharp/generators/Common.fs +96 -0
- data/tracks/fsharp/generators/Exercise.fs +250 -0
- data/tracks/fsharp/generators/Generators.fs +210 -0
- data/tracks/fsharp/generators/Generators.fsproj +32 -0
- data/tracks/fsharp/generators/Generators.sln +24 -0
- data/tracks/fsharp/generators/Input.fs +99 -0
- data/tracks/fsharp/generators/Options.fs +31 -0
- data/tracks/fsharp/generators/Output.fs +224 -0
- data/tracks/fsharp/generators/Program.fs +35 -0
- data/tracks/fsharp/generators/Properties/launchSettings.json +8 -0
- data/tracks/fsharp/generators/Templates/_AssertEmpty.liquid +1 -0
- data/tracks/fsharp/generators/Templates/_AssertEqual.liquid +1 -0
- data/tracks/fsharp/generators/Templates/_TestClass.liquid +13 -0
- data/tracks/fsharp/generators/Templates/_TestMethod.liquid +3 -0
- data/tracks/fsharp/generators/Templates/_TestMethodBody.liquid +4 -0
- data/tracks/go/.travis.yml +3 -3
- data/tracks/groovy/CONTRIBUTING.md +2 -2
- data/tracks/groovy/config.json +12 -0
- data/tracks/groovy/exercises/scrabble-score/Example.groovy +18 -0
- data/tracks/groovy/exercises/scrabble-score/README.md +63 -0
- data/tracks/groovy/exercises/scrabble-score/ScrabbleScore.groovy +7 -0
- data/tracks/groovy/exercises/scrabble-score/ScrabbleScoreSpec.groovy +45 -0
- data/tracks/groovy/exercises/two-fer/TwoFer.groovy +2 -2
- data/tracks/haskell/exercises/change/README.md +1 -1
- data/tracks/haskell/exercises/lens-person/README.md +1 -1
- data/tracks/haskell/exercises/palindrome-products/README.md +5 -12
- data/tracks/haskell/exercises/sum-of-multiples/README.md +0 -3
- data/tracks/idris/config.json +12 -0
- data/tracks/idris/exercises/accumulate/Accumulate.ipkg +5 -0
- data/tracks/idris/exercises/accumulate/Makefile +23 -0
- data/tracks/idris/exercises/accumulate/README.md +32 -0
- data/tracks/idris/exercises/accumulate/src/Example.idr +6 -0
- data/tracks/idris/exercises/accumulate/src/Test/Accumulate.idr +35 -0
- data/tracks/java/config/maintainers.json +4 -7
- data/tracks/java/config.json +99 -22
- data/tracks/java/exercises/binary-search-tree/.meta/src/reference/java/{BST.java → BinarySearchTree.java} +1 -1
- data/tracks/java/exercises/binary-search-tree/src/test/java/{BSTTest.java → BinarySearchTreeTest.java} +34 -36
- data/tracks/java/exercises/robot-simulator/src/main/java/GridPosition.java +19 -15
- data/tracks/java/exercises/saddle-points/.meta/src/reference/java/MatrixCoordinate.java +7 -1
- data/tracks/java/exercises/saddle-points/src/main/java/MatrixCoordinate.java +7 -1
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/tournament/.meta/src/reference/java/Result.java +5 -0
- data/tracks/java/exercises/tournament/.meta/src/reference/java/TeamResult.java +41 -0
- data/tracks/java/exercises/tournament/.meta/src/reference/java/Tournament.java +62 -0
- data/tracks/java/exercises/tournament/README.md +78 -0
- data/tracks/java/exercises/tournament/build.gradle +18 -0
- data/tracks/java/{.Rhistory → exercises/tournament/src/main/java/.keep} +0 -0
- data/tracks/java/exercises/tournament/src/test/java/TournamentTest.java +160 -0
- data/tracks/php/config.json +14 -0
- data/tracks/php/exercises/collatz-conjecture/collatz-conjecture_test.php +44 -0
- data/tracks/php/exercises/collatz-conjecture/example.php +18 -0
- data/tracks/python/exercises/circular-buffer/circular_buffer.py +1 -1
- data/tracks/python/exercises/clock/clock.py +1 -1
- data/tracks/python/exercises/etl/etl.py +1 -1
- data/tracks/python/exercises/grade-school/grade_school.py +1 -1
- data/tracks/python/exercises/grains/grains.py +2 -2
- data/tracks/python/exercises/kindergarten-garden/kindergarten_garden.py +1 -1
- data/tracks/python/exercises/linked-list/linked_list.py +1 -1
- data/tracks/python/exercises/rectangles/rectangles.py +1 -1
- data/tracks/python/exercises/sum-of-multiples/sum_of_multiples.py +1 -1
- data/tracks/rust/exercises/bob/tests/bob.rs +1 -0
- data/tracks/rust/exercises/crypto-square/tests/crypto-square.rs +7 -0
- data/tracks/rust/exercises/gigasecond/tests/gigasecond.rs +1 -1
- data/tracks/rust/exercises/phone-number/Cargo.lock +1 -1
- data/tracks/rust/exercises/phone-number/Cargo.toml +1 -1
- data/tracks/rust/exercises/phone-number/example.rs +17 -23
- data/tracks/rust/exercises/phone-number/tests/phone-number.rs +31 -40
- data/tracks/rust/exercises/say/tests/say.rs +2 -0
- data/tracks/rust/exercises/sum-of-multiples/README.md +0 -3
- data/tracks/scala/config.json +11 -0
- data/tracks/scala/exercises/collatz-conjecture/README.md +43 -0
- data/tracks/scala/exercises/collatz-conjecture/build.sbt +3 -0
- data/tracks/scala/exercises/collatz-conjecture/example.scala +17 -0
- data/tracks/scala/exercises/collatz-conjecture/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala +34 -0
- data/tracks/scala/testgen/src/main/scala/CollatzConjectureTestGenerator.scala +35 -0
- data/tracks/scheme/config.json +8 -0
- data/tracks/scheme/exercises/word-count/README.md +19 -0
- data/tracks/scheme/exercises/word-count/example.scm +27 -0
- data/tracks/scheme/exercises/word-count/word-count-test.scm +90 -0
- data/tracks/scheme/exercises/word-count/word-count.scm +5 -0
- data/tracks/sml/README.md +20 -1
- data/tracks/sml/bin/generate +74 -20
- data/tracks/sml/exercises/binary/README.md +23 -5
- data/tracks/sml/exercises/binary/binary.sml +2 -0
- data/tracks/sml/exercises/binary/example.sml +10 -21
- data/tracks/sml/exercises/binary/test.sml +55 -30
- data/tracks/sml/exercises/binary/testlib.sml +159 -0
- data/tracks/sml/exercises/flatten-array/HINTS.md +8 -0
- data/tracks/sml/exercises/flatten-array/README.md +31 -6
- data/tracks/sml/exercises/flatten-array/example.sml +3 -4
- data/tracks/sml/exercises/flatten-array/flatten-array.sml +4 -5
- data/tracks/sml/exercises/flatten-array/test.sml +76 -52
- data/tracks/sml/exercises/flatten-array/testlib.sml +159 -0
- data/tracks/sml/exercises/nth-prime/HINTS.md +9 -0
- data/tracks/sml/exercises/nth-prime/README.md +32 -5
- data/tracks/sml/exercises/nth-prime/example.sml +28 -46
- data/tracks/sml/exercises/nth-prime/nth-prime.sml +1 -1
- data/tracks/sml/exercises/nth-prime/test.sml +19 -63
- data/tracks/sml/exercises/nth-prime/testlib.sml +159 -0
- data/tracks/sml/exercises/raindrops/README.md +21 -5
- data/tracks/typescript/config.json +14 -0
- data/tracks/typescript/exercises/triangle/README.md +55 -0
- data/tracks/typescript/exercises/triangle/package.json +36 -0
- data/tracks/typescript/exercises/triangle/triangle.example.ts +56 -0
- data/tracks/typescript/exercises/triangle/triangle.test.ts +79 -0
- data/tracks/typescript/exercises/triangle/triangle.ts +12 -0
- data/tracks/typescript/exercises/triangle/tsconfig.json +22 -0
- data/tracks/typescript/exercises/triangle/tslint.json +127 -0
- data/tracks/typescript/exercises/triangle/yarn.lock +2305 -0
- metadata +85 -6
- data/tracks/d/exercises/crypto-square/.dub/dub.json +0 -6
|
@@ -1,58 +1,33 @@
|
|
|
1
|
+
// This file was auto-generated based on version 1.1.0 of the canonical data.
|
|
2
|
+
|
|
1
3
|
module AcronymTest
|
|
2
4
|
|
|
3
|
-
open Xunit
|
|
4
5
|
open FsUnit.Xunit
|
|
6
|
+
open Xunit
|
|
7
|
+
|
|
5
8
|
open Acronym
|
|
6
9
|
|
|
7
10
|
[<Fact>]
|
|
8
|
-
let ``Empty string abbreviated to empty string`` () =
|
|
9
|
-
acronym "" |> should be EmptyString
|
|
10
|
-
|
|
11
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
12
11
|
let ``Basic`` () =
|
|
13
|
-
|
|
14
|
-
let expected = "PNG"
|
|
15
|
-
let actual = acronym phrase
|
|
16
|
-
expected |> should equal actual
|
|
12
|
+
abbreviate "Portable Network Graphics" |> should equal "PNG"
|
|
17
13
|
|
|
18
14
|
[<Fact(Skip = "Remove to run test")>]
|
|
19
15
|
let ``Lowercase words`` () =
|
|
20
|
-
|
|
21
|
-
let expected = "ROR"
|
|
22
|
-
let actual = acronym phrase
|
|
23
|
-
expected |> should equal actual
|
|
24
|
-
|
|
25
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
26
|
-
let ``Camel case`` () =
|
|
27
|
-
let phrase = "HyperText Markup Language"
|
|
28
|
-
let expected = "HTML"
|
|
29
|
-
let actual = acronym phrase
|
|
30
|
-
expected |> should equal actual
|
|
16
|
+
abbreviate "Ruby on Rails" |> should equal "ROR"
|
|
31
17
|
|
|
32
18
|
[<Fact(Skip = "Remove to run test")>]
|
|
33
19
|
let ``Punctuation`` () =
|
|
34
|
-
|
|
35
|
-
let expected = "FIFO"
|
|
36
|
-
let actual = acronym phrase
|
|
37
|
-
expected |> should equal actual
|
|
20
|
+
abbreviate "First In, First Out" |> should equal "FIFO"
|
|
38
21
|
|
|
39
22
|
[<Fact(Skip = "Remove to run test")>]
|
|
40
|
-
let ``All
|
|
41
|
-
|
|
42
|
-
let expected = "PHP"
|
|
43
|
-
let actual = acronym phrase
|
|
44
|
-
expected |> should equal actual
|
|
23
|
+
let ``All caps words`` () =
|
|
24
|
+
abbreviate "PHP: Hypertext Preprocessor" |> should equal "PHP"
|
|
45
25
|
|
|
46
26
|
[<Fact(Skip = "Remove to run test")>]
|
|
47
|
-
let ``Non-acronym all
|
|
48
|
-
|
|
49
|
-
let expected = "GIMP"
|
|
50
|
-
let actual = acronym phrase
|
|
51
|
-
expected |> should equal actual
|
|
27
|
+
let ``Non-acronym all caps word`` () =
|
|
28
|
+
abbreviate "GNU Image Manipulation Program" |> should equal "GIMP"
|
|
52
29
|
|
|
53
30
|
[<Fact(Skip = "Remove to run test")>]
|
|
54
31
|
let ``Hyphenated`` () =
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
let actual = acronym phrase
|
|
58
|
-
expected |> should equal actual
|
|
32
|
+
abbreviate "Complementary metal-oxide semiconductor" |> should equal "CMOS"
|
|
33
|
+
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
open System
|
|
4
4
|
open System.Text.RegularExpressions
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let abbreviate (phrase:string) =
|
|
7
7
|
let acronymChar = Char.ToUpperInvariant << Seq.head
|
|
8
8
|
let words = Regex.Matches(phrase, "[A-Z]+[a-z]*|[a-z]+")
|
|
9
9
|
let chars = [|for word in words do yield word.Value |> acronymChar|]
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
<ItemGroup>
|
|
16
16
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
|
17
|
-
<PackageReference Include="xunit" Version="2.3.0
|
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0
|
|
17
|
+
<PackageReference Include="xunit" Version="2.3.0" />
|
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
|
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
|
|
20
21
|
</ItemGroup>
|
|
21
22
|
|
|
22
23
|
</Project>
|
|
@@ -1,174 +1,177 @@
|
|
|
1
|
+
// This file was auto-generated based on version 1.1.0 of the canonical data.
|
|
2
|
+
|
|
1
3
|
module AllYourBaseTest
|
|
2
4
|
|
|
3
|
-
open Xunit
|
|
4
5
|
open FsUnit.Xunit
|
|
6
|
+
open Xunit
|
|
5
7
|
|
|
6
8
|
open AllYourBase
|
|
7
9
|
|
|
8
10
|
[<Fact>]
|
|
9
11
|
let ``Single bit one to decimal`` () =
|
|
12
|
+
let expected = Some [1]
|
|
10
13
|
let inputBase = 2
|
|
11
14
|
let inputDigits = [1]
|
|
12
15
|
let outputBase = 10
|
|
13
|
-
|
|
14
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
16
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
15
17
|
|
|
16
18
|
[<Fact(Skip = "Remove to run test")>]
|
|
17
19
|
let ``Binary to single decimal`` () =
|
|
20
|
+
let expected = Some [5]
|
|
18
21
|
let inputBase = 2
|
|
19
22
|
let inputDigits = [1; 0; 1]
|
|
20
23
|
let outputBase = 10
|
|
21
|
-
|
|
22
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
24
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
23
25
|
|
|
24
26
|
[<Fact(Skip = "Remove to run test")>]
|
|
25
27
|
let ``Single decimal to binary`` () =
|
|
28
|
+
let expected = Some [1; 0; 1]
|
|
26
29
|
let inputBase = 10
|
|
27
30
|
let inputDigits = [5]
|
|
28
31
|
let outputBase = 2
|
|
29
|
-
|
|
30
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
32
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
31
33
|
|
|
32
34
|
[<Fact(Skip = "Remove to run test")>]
|
|
33
35
|
let ``Binary to multiple decimal`` () =
|
|
36
|
+
let expected = Some [4; 2]
|
|
34
37
|
let inputBase = 2
|
|
35
38
|
let inputDigits = [1; 0; 1; 0; 1; 0]
|
|
36
39
|
let outputBase = 10
|
|
37
|
-
|
|
38
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
40
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
39
41
|
|
|
40
42
|
[<Fact(Skip = "Remove to run test")>]
|
|
41
43
|
let ``Decimal to binary`` () =
|
|
44
|
+
let expected = Some [1; 0; 1; 0; 1; 0]
|
|
42
45
|
let inputBase = 10
|
|
43
46
|
let inputDigits = [4; 2]
|
|
44
47
|
let outputBase = 2
|
|
45
|
-
|
|
46
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
48
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
47
49
|
|
|
48
50
|
[<Fact(Skip = "Remove to run test")>]
|
|
49
51
|
let ``Trinary to hexadecimal`` () =
|
|
52
|
+
let expected = Some [2; 10]
|
|
50
53
|
let inputBase = 3
|
|
51
54
|
let inputDigits = [1; 1; 2; 0]
|
|
52
55
|
let outputBase = 16
|
|
53
|
-
|
|
54
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
56
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
55
57
|
|
|
56
58
|
[<Fact(Skip = "Remove to run test")>]
|
|
57
59
|
let ``Hexadecimal to trinary`` () =
|
|
60
|
+
let expected = Some [1; 1; 2; 0]
|
|
58
61
|
let inputBase = 16
|
|
59
62
|
let inputDigits = [2; 10]
|
|
60
63
|
let outputBase = 3
|
|
61
|
-
|
|
62
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
64
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
63
65
|
|
|
64
66
|
[<Fact(Skip = "Remove to run test")>]
|
|
65
67
|
let ``15-bit integer`` () =
|
|
68
|
+
let expected = Some [6; 10; 45]
|
|
66
69
|
let inputBase = 97
|
|
67
70
|
let inputDigits = [3; 46; 60]
|
|
68
71
|
let outputBase = 73
|
|
69
|
-
|
|
70
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
72
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
71
73
|
|
|
72
74
|
[<Fact(Skip = "Remove to run test")>]
|
|
73
75
|
let ``Empty list`` () =
|
|
76
|
+
let expected = None
|
|
74
77
|
let inputBase = 2
|
|
75
78
|
let inputDigits = []
|
|
76
79
|
let outputBase = 10
|
|
77
|
-
|
|
78
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
80
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
79
81
|
|
|
80
82
|
[<Fact(Skip = "Remove to run test")>]
|
|
81
83
|
let ``Single zero`` () =
|
|
84
|
+
let expected = None
|
|
82
85
|
let inputBase = 10
|
|
83
86
|
let inputDigits = [0]
|
|
84
87
|
let outputBase = 2
|
|
85
|
-
|
|
86
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
88
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
87
89
|
|
|
88
90
|
[<Fact(Skip = "Remove to run test")>]
|
|
89
91
|
let ``Multiple zeros`` () =
|
|
92
|
+
let expected = None
|
|
90
93
|
let inputBase = 10
|
|
91
94
|
let inputDigits = [0; 0; 0]
|
|
92
95
|
let outputBase = 2
|
|
93
|
-
|
|
94
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
96
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
95
97
|
|
|
96
98
|
[<Fact(Skip = "Remove to run test")>]
|
|
97
99
|
let ``Leading zeros`` () =
|
|
100
|
+
let expected = None
|
|
98
101
|
let inputBase = 7
|
|
99
102
|
let inputDigits = [0; 6; 0]
|
|
100
103
|
let outputBase = 10
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
105
|
+
|
|
106
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
107
|
+
let ``First base is one`` () =
|
|
108
|
+
let expected = None
|
|
109
|
+
let inputBase = 1
|
|
110
|
+
let inputDigits = []
|
|
111
|
+
let outputBase = 10
|
|
112
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
113
|
+
|
|
114
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
115
|
+
let ``First base is zero`` () =
|
|
116
|
+
let expected = None
|
|
117
|
+
let inputBase = 0
|
|
118
|
+
let inputDigits = []
|
|
119
|
+
let outputBase = 10
|
|
120
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
121
|
+
|
|
122
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
123
|
+
let ``First base is negative`` () =
|
|
124
|
+
let expected = None
|
|
125
|
+
let inputBase = -2
|
|
126
|
+
let inputDigits = [1]
|
|
127
|
+
let outputBase = 10
|
|
128
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
103
129
|
|
|
104
130
|
[<Fact(Skip = "Remove to run test")>]
|
|
105
131
|
let ``Negative digit`` () =
|
|
132
|
+
let expected = None
|
|
106
133
|
let inputBase = 2
|
|
107
134
|
let inputDigits = [1; -1; 1; 0; 1; 0]
|
|
108
135
|
let outputBase = 10
|
|
109
|
-
|
|
110
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
136
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
111
137
|
|
|
112
138
|
[<Fact(Skip = "Remove to run test")>]
|
|
113
139
|
let ``Invalid positive digit`` () =
|
|
140
|
+
let expected = None
|
|
114
141
|
let inputBase = 2
|
|
115
142
|
let inputDigits = [1; 2; 1; 0; 1; 0]
|
|
116
143
|
let outputBase = 10
|
|
117
|
-
|
|
118
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
119
|
-
|
|
120
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
121
|
-
let ``First base is one`` () =
|
|
122
|
-
let inputBase = 1
|
|
123
|
-
let inputDigits = []
|
|
124
|
-
let outputBase = 10
|
|
125
|
-
let outputDigits = None
|
|
126
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
144
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
127
145
|
|
|
128
146
|
[<Fact(Skip = "Remove to run test")>]
|
|
129
147
|
let ``Second base is one`` () =
|
|
148
|
+
let expected = None
|
|
130
149
|
let inputBase = 2
|
|
131
150
|
let inputDigits = [1; 0; 1; 0; 1; 0]
|
|
132
151
|
let outputBase = 1
|
|
133
|
-
|
|
134
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
135
|
-
|
|
136
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
137
|
-
let ``First base is zero`` () =
|
|
138
|
-
let inputBase = 0
|
|
139
|
-
let inputDigits = []
|
|
140
|
-
let outputBase = 10
|
|
141
|
-
let outputDigits = None
|
|
142
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
152
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
143
153
|
|
|
144
154
|
[<Fact(Skip = "Remove to run test")>]
|
|
145
155
|
let ``Second base is zero`` () =
|
|
156
|
+
let expected = None
|
|
146
157
|
let inputBase = 10
|
|
147
158
|
let inputDigits = [7]
|
|
148
159
|
let outputBase = 0
|
|
149
|
-
|
|
150
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
151
|
-
|
|
152
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
153
|
-
let ``First base is negative`` () =
|
|
154
|
-
let inputBase = -2
|
|
155
|
-
let inputDigits = [1]
|
|
156
|
-
let outputBase = 10
|
|
157
|
-
let outputDigits = None
|
|
158
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
160
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
159
161
|
|
|
160
162
|
[<Fact(Skip = "Remove to run test")>]
|
|
161
163
|
let ``Second base is negative`` () =
|
|
164
|
+
let expected = None
|
|
162
165
|
let inputBase = 2
|
|
163
166
|
let inputDigits = [1]
|
|
164
167
|
let outputBase = -7
|
|
165
|
-
|
|
166
|
-
rebase inputBase inputDigits outputBase |> should equal outputDigits
|
|
168
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
167
169
|
|
|
168
170
|
[<Fact(Skip = "Remove to run test")>]
|
|
169
171
|
let ``Both bases are negative`` () =
|
|
172
|
+
let expected = None
|
|
170
173
|
let inputBase = -2
|
|
171
174
|
let inputDigits = [1]
|
|
172
175
|
let outputBase = -7
|
|
173
|
-
|
|
174
|
-
|
|
176
|
+
rebase inputBase inputDigits outputBase |> should equal expected
|
|
177
|
+
|
|
@@ -16,7 +16,10 @@ let fromBase b nums =
|
|
|
16
16
|
if digit < 0 then None else
|
|
17
17
|
if digit >= b then None else
|
|
18
18
|
loop (acc * b + digit) rest
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
match nums with
|
|
21
|
+
| [] | 0::_ -> None
|
|
22
|
+
| _ -> loop 0 nums
|
|
20
23
|
|
|
21
24
|
let rebase inB inDigits outB =
|
|
22
25
|
if inB < 2 || outB < 2 then None else
|
|
@@ -4,6 +4,6 @@ open System
|
|
|
4
4
|
|
|
5
5
|
// TODO: define the Allergen type
|
|
6
6
|
|
|
7
|
-
let allergicTo allergen
|
|
7
|
+
let allergicTo codedAllergies allergen = failwith "You need to implement this function."
|
|
8
8
|
|
|
9
|
-
let
|
|
9
|
+
let list codedAllergies = failwith "You need to implement this function."
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
<ItemGroup>
|
|
16
16
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
|
17
|
-
<PackageReference Include="xunit" Version="2.3.0
|
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0
|
|
17
|
+
<PackageReference Include="xunit" Version="2.3.0" />
|
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
|
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
|
|
20
21
|
</ItemGroup>
|
|
21
22
|
|
|
22
23
|
</Project>
|
|
@@ -1,70 +1,61 @@
|
|
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
|
2
|
+
|
|
1
3
|
module AllergiesTest
|
|
2
4
|
|
|
3
|
-
open System
|
|
4
|
-
open Xunit
|
|
5
5
|
open FsUnit.Xunit
|
|
6
|
+
open Xunit
|
|
7
|
+
|
|
6
8
|
open Allergies
|
|
7
9
|
|
|
8
10
|
[<Fact>]
|
|
9
11
|
let ``No allergies means not allergic`` () =
|
|
10
|
-
allergicTo Allergen.Peanuts
|
|
11
|
-
allergicTo Allergen.Cats
|
|
12
|
-
allergicTo Allergen.Strawberries
|
|
12
|
+
allergicTo 0 Allergen.Peanuts |> should equal false
|
|
13
|
+
allergicTo 0 Allergen.Cats |> should equal false
|
|
14
|
+
allergicTo 0 Allergen.Strawberries |> should equal false
|
|
13
15
|
|
|
14
16
|
[<Fact(Skip = "Remove to run test")>]
|
|
15
|
-
let ``
|
|
16
|
-
allergicTo Allergen.Eggs
|
|
17
|
+
let ``Is allergic to eggs`` () =
|
|
18
|
+
allergicTo 1 Allergen.Eggs |> should equal true
|
|
17
19
|
|
|
18
20
|
[<Fact(Skip = "Remove to run test")>]
|
|
19
21
|
let ``Allergic to eggs in addition to other stuff`` () =
|
|
20
|
-
allergicTo Allergen.Eggs
|
|
21
|
-
allergicTo Allergen.Shellfish
|
|
22
|
-
allergicTo Allergen.Strawberries
|
|
22
|
+
allergicTo 5 Allergen.Eggs |> should equal true
|
|
23
|
+
allergicTo 5 Allergen.Shellfish |> should equal true
|
|
24
|
+
allergicTo 5 Allergen.Strawberries |> should equal false
|
|
23
25
|
|
|
24
26
|
[<Fact(Skip = "Remove to run test")>]
|
|
25
27
|
let ``No allergies at all`` () =
|
|
26
|
-
|
|
28
|
+
list 0 |> should be Empty
|
|
27
29
|
|
|
28
30
|
[<Fact(Skip = "Remove to run test")>]
|
|
29
31
|
let ``Allergic to just eggs`` () =
|
|
30
|
-
|
|
32
|
+
list 1 |> should equal [Allergen.Eggs]
|
|
31
33
|
|
|
32
34
|
[<Fact(Skip = "Remove to run test")>]
|
|
33
35
|
let ``Allergic to just peanuts`` () =
|
|
34
|
-
|
|
36
|
+
list 2 |> should equal [Allergen.Peanuts]
|
|
37
|
+
|
|
38
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
39
|
+
let ``Allergic to just strawberries`` () =
|
|
40
|
+
list 8 |> should equal [Allergen.Strawberries]
|
|
35
41
|
|
|
36
42
|
[<Fact(Skip = "Remove to run test")>]
|
|
37
43
|
let ``Allergic to eggs and peanuts`` () =
|
|
38
|
-
|
|
44
|
+
list 3 |> should equal [Allergen.Eggs; Allergen.Peanuts]
|
|
45
|
+
|
|
46
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
47
|
+
let ``Allergic to more than eggs but not peanuts`` () =
|
|
48
|
+
list 5 |> should equal [Allergen.Eggs; Allergen.Shellfish]
|
|
39
49
|
|
|
40
50
|
[<Fact(Skip = "Remove to run test")>]
|
|
41
51
|
let ``Allergic to lots of stuff`` () =
|
|
42
|
-
|
|
43
|
-
[ Allergen.Strawberries;
|
|
44
|
-
Allergen.Tomatoes;
|
|
45
|
-
Allergen.Chocolate;
|
|
46
|
-
Allergen.Pollen;
|
|
47
|
-
Allergen.Cats ]
|
|
52
|
+
list 248 |> should equal [Allergen.Strawberries; Allergen.Tomatoes; Allergen.Chocolate; Allergen.Pollen; Allergen.Cats]
|
|
48
53
|
|
|
49
54
|
[<Fact(Skip = "Remove to run test")>]
|
|
50
55
|
let ``Allergic to everything`` () =
|
|
51
|
-
|
|
52
|
-
[ Allergen.Eggs;
|
|
53
|
-
Allergen.Peanuts;
|
|
54
|
-
Allergen.Shellfish;
|
|
55
|
-
Allergen.Strawberries;
|
|
56
|
-
Allergen.Tomatoes;
|
|
57
|
-
Allergen.Chocolate;
|
|
58
|
-
Allergen.Pollen;
|
|
59
|
-
Allergen.Cats ]
|
|
56
|
+
list 255 |> should equal [Allergen.Eggs; Allergen.Peanuts; Allergen.Shellfish; Allergen.Strawberries; Allergen.Tomatoes; Allergen.Chocolate; Allergen.Pollen; Allergen.Cats]
|
|
60
57
|
|
|
61
58
|
[<Fact(Skip = "Remove to run test")>]
|
|
62
59
|
let ``Ignore non allergen score parts`` () =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
Allergen.Shellfish;
|
|
66
|
-
Allergen.Strawberries;
|
|
67
|
-
Allergen.Tomatoes;
|
|
68
|
-
Allergen.Chocolate;
|
|
69
|
-
Allergen.Pollen;
|
|
70
|
-
Allergen.Cats ]
|
|
60
|
+
list 509 |> should equal [Allergen.Eggs; Allergen.Shellfish; Allergen.Strawberries; Allergen.Tomatoes; Allergen.Chocolate; Allergen.Pollen; Allergen.Cats]
|
|
61
|
+
|
|
@@ -12,10 +12,10 @@ type Allergen =
|
|
|
12
12
|
| Pollen = 64
|
|
13
13
|
| Cats = 128
|
|
14
14
|
|
|
15
|
-
let allergicTo (
|
|
15
|
+
let allergicTo (codedAllergies: int) (allergen: Allergen) = codedAllergies &&& int allergen <> 0
|
|
16
16
|
|
|
17
|
-
let
|
|
17
|
+
let list (codedAllergies: int) =
|
|
18
18
|
Enum.GetValues(typeof<Allergen>)
|
|
19
19
|
|> Seq.cast<Allergen>
|
|
20
20
|
|> List.ofSeq
|
|
21
|
-
|> List.filter (
|
|
21
|
+
|> List.filter (allergicTo codedAllergies)
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
<ItemGroup>
|
|
16
16
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
|
17
|
-
<PackageReference Include="xunit" Version="2.3.0
|
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0
|
|
17
|
+
<PackageReference Include="xunit" Version="2.3.0" />
|
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
|
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
|
|
20
21
|
</ItemGroup>
|
|
21
22
|
|
|
22
23
|
</Project>
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
<ItemGroup>
|
|
16
16
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
|
17
|
-
<PackageReference Include="xunit" Version="2.3.0
|
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0
|
|
17
|
+
<PackageReference Include="xunit" Version="2.3.0" />
|
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
|
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
|
|
20
21
|
</ItemGroup>
|
|
21
22
|
|
|
22
23
|
</Project>
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
<ItemGroup>
|
|
16
16
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
|
17
|
-
<PackageReference Include="xunit" Version="2.3.0
|
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0
|
|
17
|
+
<PackageReference Include="xunit" Version="2.3.0" />
|
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
|
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
|
|
20
21
|
</ItemGroup>
|
|
21
22
|
|
|
22
23
|
</Project>
|
|
@@ -1,61 +1,57 @@
|
|
|
1
|
-
|
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
|
2
|
+
|
|
3
|
+
module AtbashCipherTest
|
|
2
4
|
|
|
3
|
-
open Xunit
|
|
4
5
|
open FsUnit.Xunit
|
|
5
|
-
open
|
|
6
|
+
open Xunit
|
|
7
|
+
|
|
8
|
+
open AtbashCipher
|
|
6
9
|
|
|
7
10
|
[<Fact>]
|
|
8
11
|
let ``Encode yes`` () =
|
|
9
|
-
|
|
10
|
-
let expected = "bvh"
|
|
11
|
-
let actual = encode phrase
|
|
12
|
-
actual |> should equal expected
|
|
12
|
+
encode "yes" |> should equal "bvh"
|
|
13
13
|
|
|
14
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
14
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
15
15
|
let ``Encode no`` () =
|
|
16
|
-
|
|
17
|
-
let expected = "ml"
|
|
18
|
-
let actual = encode phrase
|
|
19
|
-
actual |> should equal expected
|
|
16
|
+
encode "no" |> should equal "ml"
|
|
20
17
|
|
|
21
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
18
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
22
19
|
let ``Encode OMG`` () =
|
|
23
|
-
|
|
24
|
-
let expected = "lnt"
|
|
25
|
-
let actual = encode phrase
|
|
26
|
-
actual |> should equal expected
|
|
20
|
+
encode "OMG" |> should equal "lnt"
|
|
27
21
|
|
|
28
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
22
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
29
23
|
let ``Encode spaces`` () =
|
|
30
|
-
|
|
31
|
-
let expected = "lnt"
|
|
32
|
-
let actual = encode phrase
|
|
33
|
-
actual |> should equal expected
|
|
24
|
+
encode "O M G" |> should equal "lnt"
|
|
34
25
|
|
|
35
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
26
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
36
27
|
let ``Encode mindblowingly`` () =
|
|
37
|
-
|
|
38
|
-
let expected = "nrmwy oldrm tob"
|
|
39
|
-
let actual = encode phrase
|
|
40
|
-
actual |> should equal expected
|
|
28
|
+
encode "mindblowingly" |> should equal "nrmwy oldrm tob"
|
|
41
29
|
|
|
42
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
30
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
43
31
|
let ``Encode numbers`` () =
|
|
44
|
-
|
|
45
|
-
let expected = "gvhgr mt123 gvhgr mt"
|
|
46
|
-
let actual = encode phrase
|
|
47
|
-
actual |> should equal expected
|
|
32
|
+
encode "Testing,1 2 3, testing." |> should equal "gvhgr mt123 gvhgr mt"
|
|
48
33
|
|
|
49
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
34
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
50
35
|
let ``Encode deep thought`` () =
|
|
51
|
-
|
|
52
|
-
let expected = "gifgs rhurx grlm"
|
|
53
|
-
let actual = encode phrase
|
|
54
|
-
actual |> should equal expected
|
|
36
|
+
encode "Truth is fiction." |> should equal "gifgs rhurx grlm"
|
|
55
37
|
|
|
56
|
-
[<Fact(Skip = "Remove to run test")>]
|
|
38
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
57
39
|
let ``Encode all the letters`` () =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
40
|
+
encode "The quick brown fox jumps over the lazy dog." |> should equal "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"
|
|
41
|
+
|
|
42
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
43
|
+
let ``Decode exercism`` () =
|
|
44
|
+
decode "vcvix rhn" |> should equal "exercism"
|
|
45
|
+
|
|
46
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
47
|
+
let ``Decode a sentence`` () =
|
|
48
|
+
decode "zmlyh gzxov rhlug vmzhg vkkrm thglm v" |> should equal "anobstacleisoftenasteppingstone"
|
|
49
|
+
|
|
50
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
51
|
+
let ``Decode numbers`` () =
|
|
52
|
+
decode "gvhgr mt123 gvhgr mt" |> should equal "testing123testing"
|
|
53
|
+
|
|
54
|
+
[<Fact(Skip = "Remove to run test")>]
|
|
55
|
+
let ``Decode all the letters`` () =
|
|
56
|
+
decode "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt" |> should equal "thequickbrownfoxjumpsoverthelazydog"
|
|
57
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module
|
|
1
|
+
module AtbashCipher
|
|
2
2
|
|
|
3
3
|
open System
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ let rec mapMaybe f list =
|
|
|
10
10
|
| Some(a) -> a :: mapMaybe f xs
|
|
11
11
|
| None -> mapMaybe f xs
|
|
12
12
|
|
|
13
|
-
let stringFromChars (chars:char seq) =
|
|
13
|
+
let stringFromChars (chars:char seq) = String(Array.ofSeq chars)
|
|
14
14
|
let chunksOfSize n xs =
|
|
15
15
|
xs
|
|
16
16
|
|> Seq.mapi(fun i x -> i / n, x)
|
|
@@ -24,4 +24,6 @@ let encodeLetter letter = Map.tryFind (Char.ToLower letter) lettersMap
|
|
|
24
24
|
let encodeInChunks = String.concat " " << Seq.map stringFromChars << chunksOfSize 5
|
|
25
25
|
let encodeStr = encodeInChunks << mapMaybe encodeLetter
|
|
26
26
|
|
|
27
|
-
let encode (str:string) = str |> List.ofSeq |> encodeStr
|
|
27
|
+
let encode (str:string) = str |> List.ofSeq |> encodeStr
|
|
28
|
+
|
|
29
|
+
let decode (str:string) = (encode str).Replace(" ", "")
|