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
data/tracks/elm/config.json
CHANGED
|
@@ -322,6 +322,26 @@
|
|
|
322
322
|
|
|
323
323
|
]
|
|
324
324
|
},
|
|
325
|
+
{
|
|
326
|
+
"uuid": "1f52ab74-02d5-db80-8f95-521aba04d183e704422",
|
|
327
|
+
"slug": "collatz-conjecture",
|
|
328
|
+
"core": false,
|
|
329
|
+
"unlocked_by": null,
|
|
330
|
+
"difficulty": 1,
|
|
331
|
+
"topics": [
|
|
332
|
+
|
|
333
|
+
]
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"uuid": "7890045d-0cf5-1980-21ae-7bd0228ad2a2993ae82",
|
|
337
|
+
"slug": "all-your-base",
|
|
338
|
+
"core": false,
|
|
339
|
+
"unlocked_by": null,
|
|
340
|
+
"difficulty": 2,
|
|
341
|
+
"topics": [
|
|
342
|
+
|
|
343
|
+
]
|
|
344
|
+
},
|
|
325
345
|
{
|
|
326
346
|
"uuid": "a730ca85-057d-db80-e44e-25b8028acede6337cca",
|
|
327
347
|
"slug": "pascals-triangle",
|
|
@@ -332,6 +352,16 @@
|
|
|
332
352
|
"Lists",
|
|
333
353
|
"Control-flow"
|
|
334
354
|
]
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"uuid": "5f540090-061e-2f80-40a8-d9782700ed2efdf8965",
|
|
358
|
+
"slug": "isogram",
|
|
359
|
+
"core": false,
|
|
360
|
+
"unlocked_by": null,
|
|
361
|
+
"difficulty": 3,
|
|
362
|
+
"topics": [
|
|
363
|
+
"Lists"
|
|
364
|
+
]
|
|
335
365
|
}
|
|
336
366
|
],
|
|
337
367
|
"foregone": [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module AllYourBase exposing (..)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module AllYourBase exposing (..)
|
|
2
|
+
|
|
3
|
+
import List
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
fromBase : Int -> List Int -> Maybe Int
|
|
7
|
+
fromBase base =
|
|
8
|
+
let
|
|
9
|
+
f x m =
|
|
10
|
+
case m of
|
|
11
|
+
Nothing ->
|
|
12
|
+
Nothing
|
|
13
|
+
|
|
14
|
+
Just n ->
|
|
15
|
+
if x >= 0 && x < base then
|
|
16
|
+
Just (n * base + x)
|
|
17
|
+
else
|
|
18
|
+
Nothing
|
|
19
|
+
in
|
|
20
|
+
List.foldl f (Just 0)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
toBase : Int -> Int -> List Int
|
|
24
|
+
toBase base =
|
|
25
|
+
let
|
|
26
|
+
divMod a b =
|
|
27
|
+
( a // b, a % b )
|
|
28
|
+
|
|
29
|
+
swap ( a, b ) =
|
|
30
|
+
( b, a )
|
|
31
|
+
|
|
32
|
+
unfold f b =
|
|
33
|
+
case f b of
|
|
34
|
+
Just ( a, b_ ) ->
|
|
35
|
+
a :: unfold f b_
|
|
36
|
+
|
|
37
|
+
Nothing ->
|
|
38
|
+
[]
|
|
39
|
+
|
|
40
|
+
f x =
|
|
41
|
+
case x of
|
|
42
|
+
0 ->
|
|
43
|
+
Nothing
|
|
44
|
+
|
|
45
|
+
_ ->
|
|
46
|
+
Just (swap (divMod x base))
|
|
47
|
+
in
|
|
48
|
+
List.reverse << (unfold f)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
rebase : Int -> List Int -> Int -> Maybe (List Int)
|
|
52
|
+
rebase inBase digits outBase =
|
|
53
|
+
let
|
|
54
|
+
length =
|
|
55
|
+
List.length digits
|
|
56
|
+
|
|
57
|
+
numZeros =
|
|
58
|
+
List.length (List.filter (\x -> x == 0) digits)
|
|
59
|
+
in
|
|
60
|
+
if inBase < 2 || outBase < 2 || length == 0 || length == numZeros then
|
|
61
|
+
Nothing
|
|
62
|
+
else
|
|
63
|
+
case fromBase inBase digits of
|
|
64
|
+
Just v ->
|
|
65
|
+
Just (toBase outBase v)
|
|
66
|
+
|
|
67
|
+
Nothing ->
|
|
68
|
+
Nothing
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# All Your Base
|
|
2
|
+
|
|
3
|
+
Convert a number, represented as a sequence of digits in one base, to any other base.
|
|
4
|
+
|
|
5
|
+
Implement general base conversion. Given a number in base **a**,
|
|
6
|
+
represented as a sequence of digits, convert it to base **b**.
|
|
7
|
+
|
|
8
|
+
## Note
|
|
9
|
+
|
|
10
|
+
- Try to implement the conversion yourself.
|
|
11
|
+
Do not use something else to perform the conversion for you.
|
|
12
|
+
|
|
13
|
+
## About [Positional Notation](https://en.wikipedia.org/wiki/Positional_notation)
|
|
14
|
+
|
|
15
|
+
In positional notation, a number in base **b** can be understood as a linear
|
|
16
|
+
combination of powers of **b**.
|
|
17
|
+
|
|
18
|
+
The number 42, *in base 10*, means:
|
|
19
|
+
|
|
20
|
+
(4 * 10^1) + (2 * 10^0)
|
|
21
|
+
|
|
22
|
+
The number 101010, *in base 2*, means:
|
|
23
|
+
|
|
24
|
+
(1 * 2^5) + (0 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0)
|
|
25
|
+
|
|
26
|
+
The number 1120, *in base 3*, means:
|
|
27
|
+
|
|
28
|
+
(1 * 3^3) + (1 * 3^2) + (2 * 3^1) + (0 * 3^0)
|
|
29
|
+
|
|
30
|
+
I think you got the idea!
|
|
31
|
+
|
|
32
|
+
*Yes. Those three numbers above are exactly the same. Congratulations!*
|
|
33
|
+
|
|
34
|
+
## Elm Installation
|
|
35
|
+
|
|
36
|
+
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
|
37
|
+
installation and learning resources.
|
|
38
|
+
|
|
39
|
+
## Writing the Code
|
|
40
|
+
|
|
41
|
+
The first time you start an exercise, you'll need to ensure you have the
|
|
42
|
+
appropriate dependencies installed.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
$ npm install
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Execute the tests with:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
$ npm test
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Automatically run tests again when you save changes:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
$ npm run watch
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
As you work your way through the test suite, be sure to remove the `skip <|`
|
|
61
|
+
calls from each test until you get them all passing!
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## Submitting Incomplete Solutions
|
|
65
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"summary": "helpful summary of your project, less than 80 characters",
|
|
4
|
+
"repository": "https://github.com/user/project.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
"."
|
|
8
|
+
],
|
|
9
|
+
"exposed-modules": [],
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"elm-lang/core": "5.1.1 <= v < 6.0.0",
|
|
12
|
+
"elm-lang/html": "2.0.0 <= v < 3.0.0"
|
|
13
|
+
},
|
|
14
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
15
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Tests exposing (..)
|
|
2
|
+
|
|
3
|
+
import Test exposing (..)
|
|
4
|
+
import Expect
|
|
5
|
+
import AllYourBase exposing (rebase)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
tests : Test
|
|
9
|
+
tests =
|
|
10
|
+
describe "all-your-base"
|
|
11
|
+
[ test "single bit one to decimal" <|
|
|
12
|
+
\() -> Expect.equal (Just [ 1 ]) (rebase 2 [ 1 ] 10)
|
|
13
|
+
, test "binary to single decimal" <|
|
|
14
|
+
\() -> Expect.equal (Just [ 5 ]) (rebase 2 [ 1, 0, 1 ] 10)
|
|
15
|
+
, test "single decimal to binary" <|
|
|
16
|
+
\() -> Expect.equal (Just [ 1, 0, 1 ]) (rebase 10 [ 5 ] 2)
|
|
17
|
+
, test "binary to multiple decimal" <|
|
|
18
|
+
\() -> Expect.equal (Just [ 4, 2 ]) (rebase 2 [ 1, 0, 1, 0, 1, 0 ] 10)
|
|
19
|
+
, test "decimal to binary" <|
|
|
20
|
+
\() -> Expect.equal (Just [ 1, 0, 1, 0, 1, 0 ]) (rebase 10 [ 4, 2 ] 2)
|
|
21
|
+
, test "trinary to hexadecimal" <|
|
|
22
|
+
\() -> Expect.equal (Just [ 2, 10 ]) (rebase 3 [ 1, 1, 2, 0 ] 16)
|
|
23
|
+
, test "hexadecimal to trinary" <|
|
|
24
|
+
\() -> Expect.equal (Just [ 1, 1, 2, 0 ]) (rebase 16 [ 2, 10 ] 3)
|
|
25
|
+
, test "15-bit integer" <|
|
|
26
|
+
\() -> Expect.equal (Just [ 6, 10, 45 ]) (rebase 97 [ 3, 46, 60 ] 73)
|
|
27
|
+
, test "empty list" <|
|
|
28
|
+
\() -> Expect.equal Nothing (rebase 2 [] 10)
|
|
29
|
+
, test "single zero" <|
|
|
30
|
+
\() -> Expect.equal Nothing (rebase 10 [ 0 ] 2)
|
|
31
|
+
, test "multiple zeros" <|
|
|
32
|
+
\() -> Expect.equal Nothing (rebase 10 [ 0, 0, 0 ] 2)
|
|
33
|
+
, test "leading zeros" <|
|
|
34
|
+
\() -> Expect.equal (Just [ 4, 2 ]) (rebase 7 [ 0, 6, 0 ] 10)
|
|
35
|
+
, test "first base is one" <|
|
|
36
|
+
\() -> Expect.equal Nothing (rebase 1 [] 10)
|
|
37
|
+
, test "first base is zero" <|
|
|
38
|
+
\() -> Expect.equal Nothing (rebase 0 [] 10)
|
|
39
|
+
, test "first base is negative" <|
|
|
40
|
+
\() -> Expect.equal Nothing (rebase -1 [] 10)
|
|
41
|
+
, test "negative digit" <|
|
|
42
|
+
\() -> Expect.equal Nothing (rebase 2 [ 1, -1, 1, 0, 1, 0 ] 10)
|
|
43
|
+
, test "invalid positive digit" <|
|
|
44
|
+
\() -> Expect.equal Nothing (rebase 2 [ 1, 2, 1, 0, 1, 0 ] 10)
|
|
45
|
+
, test "second base is one" <|
|
|
46
|
+
\() -> Expect.equal Nothing (rebase 10 [] 1)
|
|
47
|
+
, test "second base is zero" <|
|
|
48
|
+
\() -> Expect.equal Nothing (rebase 10 [ 1 ] 0)
|
|
49
|
+
, test "second base is negative" <|
|
|
50
|
+
\() -> Expect.equal Nothing (rebase 10 [ 1 ] -1)
|
|
51
|
+
, test "both bases are negative" <|
|
|
52
|
+
\() -> Expect.equal Nothing (rebase -1 [ 1 ] -1)
|
|
53
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"summary": "Exercism problems in Elm.",
|
|
4
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
".",
|
|
8
|
+
".."
|
|
9
|
+
],
|
|
10
|
+
"exposed-modules": [],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"elm-lang/core": "5.0.0 <= v < 6.0.0",
|
|
13
|
+
"elm-community/elm-test": "4.0.0 <= v < 5.0.0"
|
|
14
|
+
},
|
|
15
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module CollatzConjecture exposing (collatz)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
collatz : Int -> Result String Int
|
|
5
|
+
collatz start =
|
|
6
|
+
if start <= 0 then
|
|
7
|
+
Err "Only positive numbers are allowed"
|
|
8
|
+
else
|
|
9
|
+
Ok (collatzHelper 0 start)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
collatzHelper : Int -> Int -> Int
|
|
13
|
+
collatzHelper steps start =
|
|
14
|
+
if start == 1 then
|
|
15
|
+
steps
|
|
16
|
+
else if start % 2 == 0 then
|
|
17
|
+
collatzHelper (1 + steps) (start // 2)
|
|
18
|
+
else
|
|
19
|
+
collatzHelper (1 + steps) (3 * start + 1)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"summary": "Exercism problems in Elm.",
|
|
4
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
"."
|
|
8
|
+
],
|
|
9
|
+
"exposed-modules": [],
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"elm-lang/core": "5.0.0 <= v < 6.0.0"
|
|
12
|
+
},
|
|
13
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
14
|
+
}
|
|
15
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Exercism/Elm",
|
|
3
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"postinstall": "elm-package install -y",
|
|
7
|
+
"watch": "elm-test --watch",
|
|
8
|
+
"test": "elm-test"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"elm": "0.18.0",
|
|
12
|
+
"elm-test": "0.18.3"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Tests exposing (..)
|
|
2
|
+
|
|
3
|
+
import Test exposing (..)
|
|
4
|
+
import Expect
|
|
5
|
+
import CollatzConjecture exposing (collatz)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
tests : Test
|
|
9
|
+
tests =
|
|
10
|
+
describe "CollatzConjecture tests"
|
|
11
|
+
[ test "zero steps for one" <|
|
|
12
|
+
\() ->
|
|
13
|
+
Expect.equal (Ok 0) (collatz 1)
|
|
14
|
+
|
|
15
|
+
-- Once you get the first test passing, remove the
|
|
16
|
+
-- `skip <|` (just leave the comma) on the next
|
|
17
|
+
-- lines to continue!
|
|
18
|
+
, skip <|
|
|
19
|
+
test "divide if even" <|
|
|
20
|
+
\() ->
|
|
21
|
+
Expect.equal (Ok 4) (collatz 16)
|
|
22
|
+
, skip <|
|
|
23
|
+
test "even and odd step" <|
|
|
24
|
+
\() ->
|
|
25
|
+
Expect.equal (Ok 9) (collatz 12)
|
|
26
|
+
, skip <|
|
|
27
|
+
test "Large number of even and odd step" <|
|
|
28
|
+
\() ->
|
|
29
|
+
Expect.equal (Ok 152) (collatz 1000000)
|
|
30
|
+
, skip <|
|
|
31
|
+
test "zero is an error" <|
|
|
32
|
+
\() ->
|
|
33
|
+
Expect.equal (Err "Only positive numbers are allowed") (collatz 0)
|
|
34
|
+
, skip <|
|
|
35
|
+
test "negative values is an error" <|
|
|
36
|
+
\() ->
|
|
37
|
+
Expect.equal (Err "Only positive numbers are allowed") (collatz -15)
|
|
38
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"summary": "Exercism problems in Elm.",
|
|
4
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
".",
|
|
8
|
+
".."
|
|
9
|
+
],
|
|
10
|
+
"exposed-modules": [],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"elm-lang/core": "5.0.0 <= v < 6.0.0",
|
|
13
|
+
"elm-community/elm-test": "4.0.0 <= v < 5.0.0"
|
|
14
|
+
},
|
|
15
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module Isogram exposing (..)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Isogram exposing (isIsogram)
|
|
2
|
+
|
|
3
|
+
import String
|
|
4
|
+
import List
|
|
5
|
+
import Char
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
isLetter : Char -> Bool
|
|
9
|
+
isLetter c =
|
|
10
|
+
Char.isHexDigit c && (not <| Char.isDigit c)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
isIsogram : String -> Bool
|
|
14
|
+
isIsogram sentence =
|
|
15
|
+
let
|
|
16
|
+
sanitized =
|
|
17
|
+
String.filter isLetter sentence
|
|
18
|
+
|> String.toLower
|
|
19
|
+
|> String.toList
|
|
20
|
+
|> List.sort
|
|
21
|
+
|> group
|
|
22
|
+
in
|
|
23
|
+
List.all (\x -> List.length x == 1) sanitized
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
-- Adapted from https://github.com/elm-community/list-extra
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
group : List a -> List (List a)
|
|
31
|
+
group list =
|
|
32
|
+
case list of
|
|
33
|
+
[] ->
|
|
34
|
+
[]
|
|
35
|
+
|
|
36
|
+
x :: xs ->
|
|
37
|
+
let
|
|
38
|
+
( ys, zs ) =
|
|
39
|
+
span ((==) x) xs
|
|
40
|
+
in
|
|
41
|
+
(x :: ys) :: group zs
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
span : (a -> Bool) -> List a -> ( List a, List a )
|
|
45
|
+
span p xs =
|
|
46
|
+
( takeWhile p xs, dropWhile p xs )
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
takeWhile : (a -> Bool) -> List a -> List a
|
|
50
|
+
takeWhile predicate =
|
|
51
|
+
let
|
|
52
|
+
takeWhileHelper acc list =
|
|
53
|
+
case list of
|
|
54
|
+
[] ->
|
|
55
|
+
List.reverse acc
|
|
56
|
+
|
|
57
|
+
x :: xs ->
|
|
58
|
+
if (predicate x) then
|
|
59
|
+
takeWhileHelper (x :: acc) xs
|
|
60
|
+
else
|
|
61
|
+
List.reverse acc
|
|
62
|
+
in
|
|
63
|
+
takeWhileHelper []
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
dropWhile : (a -> Bool) -> List a -> List a
|
|
67
|
+
dropWhile predicate list =
|
|
68
|
+
case list of
|
|
69
|
+
[] ->
|
|
70
|
+
[]
|
|
71
|
+
|
|
72
|
+
x :: xs ->
|
|
73
|
+
if (predicate x) then
|
|
74
|
+
dropWhile predicate xs
|
|
75
|
+
else
|
|
76
|
+
list
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Isogram
|
|
2
|
+
|
|
3
|
+
Determine if a word or phrase is an isogram.
|
|
4
|
+
|
|
5
|
+
An isogram (also known as a "nonpattern word") is a word or phrase without a repeating letter, however spaces and hyphens are allowed to appear multiple times.
|
|
6
|
+
|
|
7
|
+
Examples of isograms:
|
|
8
|
+
|
|
9
|
+
- lumberjacks
|
|
10
|
+
- background
|
|
11
|
+
- downstream
|
|
12
|
+
- six-year-old
|
|
13
|
+
|
|
14
|
+
The word *isograms*, however, is not an isogram, because the s repeats.
|
|
15
|
+
|
|
16
|
+
## Elm Installation
|
|
17
|
+
|
|
18
|
+
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
|
19
|
+
installation and learning resources.
|
|
20
|
+
|
|
21
|
+
## Writing the Code
|
|
22
|
+
|
|
23
|
+
The first time you start an exercise, you'll need to ensure you have the
|
|
24
|
+
appropriate dependencies installed.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
$ npm install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Execute the tests with:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
$ npm test
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Automatically run tests again when you save changes:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
$ npm run watch
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
As you work your way through the test suite, be sure to remove the `skip <|`
|
|
43
|
+
calls from each test until you get them all passing!
|
|
44
|
+
|
|
45
|
+
## Source
|
|
46
|
+
|
|
47
|
+
Wikipedia [https://en.wikipedia.org/wiki/Isogram](https://en.wikipedia.org/wiki/Isogram)
|
|
48
|
+
|
|
49
|
+
## Submitting Incomplete Solutions
|
|
50
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"summary": "Exercism problems in Elm.",
|
|
4
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
"."
|
|
8
|
+
],
|
|
9
|
+
"exposed-modules": [],
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"elm-lang/core": "5.0.0 <= v < 6.0.0"
|
|
12
|
+
},
|
|
13
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Exercism/Elm",
|
|
3
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"postinstall": "elm-package install -y",
|
|
7
|
+
"watch": "elm-test --watch",
|
|
8
|
+
"test": "elm-test"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"elm": "0.18.0",
|
|
12
|
+
"elm-test": "0.18.3"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Tests exposing (..)
|
|
2
|
+
|
|
3
|
+
import Test exposing (..)
|
|
4
|
+
import Expect
|
|
5
|
+
import Isogram exposing (isIsogram)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
tests : Test
|
|
9
|
+
tests =
|
|
10
|
+
describe "Isogram"
|
|
11
|
+
[ test "empty string" <|
|
|
12
|
+
\() ->
|
|
13
|
+
Expect.equal True <| isIsogram ""
|
|
14
|
+
, skip <|
|
|
15
|
+
test "isogram with only lower case characters" <|
|
|
16
|
+
\() ->
|
|
17
|
+
Expect.equal True <| isIsogram "isogram"
|
|
18
|
+
, skip <|
|
|
19
|
+
test "word with one duplicated character" <|
|
|
20
|
+
\() ->
|
|
21
|
+
Expect.equal False <| isIsogram "eleven"
|
|
22
|
+
, skip <|
|
|
23
|
+
test "longest reported english isogram" <|
|
|
24
|
+
\() ->
|
|
25
|
+
Expect.equal True <| isIsogram "subdermatoglyphic"
|
|
26
|
+
, skip <|
|
|
27
|
+
test "word with duplicated character in mixed case" <|
|
|
28
|
+
\() ->
|
|
29
|
+
Expect.equal False <| isIsogram "Alphabet"
|
|
30
|
+
, skip <|
|
|
31
|
+
test "hypothetical isogrammic word with hyphen" <|
|
|
32
|
+
\() ->
|
|
33
|
+
Expect.equal True <| isIsogram "thumbscrew-japingly"
|
|
34
|
+
, skip <|
|
|
35
|
+
test "isogram with duplicated non letter character" <|
|
|
36
|
+
\() ->
|
|
37
|
+
Expect.equal True <| isIsogram "Hjelmqvist-Gryb-Zock-Pfund-Wax"
|
|
38
|
+
, skip <|
|
|
39
|
+
test "made-up name that is an isogram" <|
|
|
40
|
+
\() ->
|
|
41
|
+
Expect.equal True <| isIsogram "Emily Jung Schwartzkopf"
|
|
42
|
+
, skip <|
|
|
43
|
+
test "duplicated character in the middle" <|
|
|
44
|
+
\() ->
|
|
45
|
+
Expect.equal False <| isIsogram "accentor"
|
|
46
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"summary": "Exercism problems in Elm.",
|
|
4
|
+
"repository": "https://github.com/exercism/elm.git",
|
|
5
|
+
"license": "BSD3",
|
|
6
|
+
"source-directories": [
|
|
7
|
+
".",
|
|
8
|
+
".."
|
|
9
|
+
],
|
|
10
|
+
"exposed-modules": [],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"elm-lang/core": "5.0.0 <= v < 6.0.0",
|
|
13
|
+
"elm-community/elm-test": "4.0.0 <= v < 5.0.0"
|
|
14
|
+
},
|
|
15
|
+
"elm-version": "0.18.0 <= v < 0.19.0"
|
|
16
|
+
}
|
data/tracks/fsharp/.gitignore
CHANGED
|
@@ -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>
|