trackler 2.2.1.64 → 2.2.1.65
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/all-your-base/canonical-data.json +7 -7
- data/tracks/c/config.json +1 -1
- data/tracks/csharp/config.json +10 -0
- data/tracks/csharp/docs/GENERATORS.md +3 -3
- data/tracks/csharp/exercises/Exercises.sln +8 -2
- data/tracks/csharp/exercises/accumulate/Accumulate.csproj +3 -3
- data/tracks/csharp/exercises/acronym/Acronym.csproj +3 -3
- data/tracks/csharp/exercises/all-your-base/AllYourBase.csproj +3 -3
- data/tracks/csharp/exercises/allergies/Allergies.csproj +3 -3
- data/tracks/csharp/exercises/alphametics/Alphametics.csproj +3 -3
- data/tracks/csharp/exercises/anagram/Anagram.csproj +3 -3
- data/tracks/csharp/exercises/atbash-cipher/AtbashCipher.csproj +3 -3
- data/tracks/csharp/exercises/bank-account/BankAccount.csproj +3 -3
- data/tracks/csharp/exercises/beer-song/BeerSong.csproj +3 -3
- data/tracks/csharp/exercises/binary-search-tree/BinarySearchTree.csproj +3 -3
- data/tracks/csharp/exercises/binary-search/BinarySearch.csproj +3 -3
- data/tracks/csharp/exercises/bob/Bob.csproj +3 -3
- data/tracks/csharp/exercises/book-store/BookStore.csproj +3 -3
- data/tracks/csharp/exercises/bowling/Bowling.csproj +3 -3
- data/tracks/csharp/exercises/bracket-push/BracketPush.csproj +3 -3
- data/tracks/csharp/exercises/change/Change.csproj +3 -3
- data/tracks/csharp/exercises/circular-buffer/CircularBuffer.csproj +3 -3
- data/tracks/csharp/exercises/clock/Clock.csproj +3 -3
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.csproj +3 -3
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbers.csproj +3 -3
- data/tracks/csharp/exercises/connect/Connect.csproj +3 -3
- data/tracks/csharp/exercises/crypto-square/CryptoSquare.csproj +3 -3
- data/tracks/csharp/exercises/custom-set/CustomSet.csproj +3 -3
- data/tracks/csharp/exercises/diamond/Diamond.csproj +3 -3
- data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquares.csproj +3 -3
- data/tracks/csharp/exercises/diffie-hellman/DiffieHellman.csproj +3 -3
- data/tracks/csharp/exercises/dominoes/Dominoes.csproj +3 -3
- data/tracks/csharp/exercises/dot-dsl/DotDsl.csproj +3 -3
- data/tracks/csharp/exercises/error-handling/ErrorHandling.csproj +3 -3
- data/tracks/csharp/exercises/etl/Etl.csproj +3 -3
- data/tracks/csharp/exercises/flatten-array/FlattenArray.csproj +3 -3
- data/tracks/csharp/exercises/food-chain/FoodChain.csproj +3 -3
- data/tracks/csharp/exercises/forth/Forth.csproj +3 -3
- data/tracks/csharp/exercises/gigasecond/Gigasecond.csproj +3 -3
- data/tracks/csharp/exercises/go-counting/GoCounting.csproj +3 -3
- data/tracks/csharp/exercises/grade-school/GradeSchool.csproj +3 -3
- data/tracks/csharp/exercises/grains/Grains.csproj +3 -3
- data/tracks/csharp/exercises/grep/Grep.csproj +3 -3
- data/tracks/csharp/exercises/hamming/Hamming.csproj +3 -3
- data/tracks/csharp/exercises/hangman/Hangman.csproj +3 -3
- data/tracks/csharp/exercises/hello-world/HelloWorld.csproj +3 -3
- data/tracks/csharp/exercises/house/House.csproj +3 -3
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.csproj +1 -1
- data/tracks/csharp/exercises/isogram/Isogram.csproj +3 -3
- data/tracks/csharp/exercises/kindergarten-garden/KindergartenGarden.csproj +3 -3
- data/tracks/csharp/exercises/largest-series-product/LargestSeriesProduct.csproj +3 -3
- data/tracks/csharp/exercises/leap/Leap.csproj +3 -3
- data/tracks/csharp/exercises/ledger/Ledger.csproj +3 -3
- data/tracks/csharp/exercises/linked-list/LinkedList.csproj +3 -3
- data/tracks/csharp/exercises/list-ops/ListOps.csproj +3 -3
- data/tracks/csharp/exercises/luhn/Luhn.csproj +3 -3
- data/tracks/csharp/exercises/markdown/Markdown.csproj +3 -3
- data/tracks/csharp/exercises/matrix/Matrix.csproj +3 -3
- data/tracks/csharp/exercises/meetup/Meetup.csproj +3 -3
- data/tracks/csharp/exercises/minesweeper/Minesweeper.csproj +3 -3
- data/tracks/csharp/exercises/nth-prime/NthPrime.csproj +3 -3
- data/tracks/csharp/exercises/nucleotide-count/NucleotideCount.csproj +3 -3
- data/tracks/csharp/exercises/ocr-numbers/OcrNumbers.csproj +3 -3
- data/tracks/csharp/exercises/palindrome-products/PalindromeProducts.csproj +3 -3
- data/tracks/csharp/exercises/pangram/Pangram.csproj +3 -3
- data/tracks/csharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +3 -3
- data/tracks/csharp/exercises/pascals-triangle/PascalsTriangle.csproj +3 -3
- data/tracks/csharp/exercises/perfect-numbers/PerfectNumbers.csproj +3 -3
- data/tracks/csharp/exercises/phone-number/PhoneNumber.csproj +3 -3
- data/tracks/csharp/exercises/pig-latin/PigLatin.csproj +3 -3
- data/tracks/csharp/exercises/poker/Poker.csproj +3 -3
- data/tracks/csharp/exercises/pov/Pov.csproj +3 -3
- data/tracks/csharp/exercises/prime-factors/PrimeFactors.csproj +3 -3
- data/tracks/csharp/exercises/protein-translation/ProteinTranslation.csproj +3 -3
- data/tracks/csharp/exercises/proverb/Proverb.csproj +3 -3
- data/tracks/csharp/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +3 -3
- data/tracks/csharp/exercises/queen-attack/QueenAttack.csproj +3 -3
- data/tracks/csharp/exercises/rail-fence-cipher/RailFenceCipher.csproj +3 -3
- data/tracks/csharp/exercises/raindrops/Raindrops.csproj +3 -3
- data/tracks/csharp/exercises/react/React.csproj +3 -3
- data/tracks/csharp/exercises/rectangles/Rectangles.csproj +3 -3
- data/tracks/csharp/exercises/reverse-string/Example.cs +10 -0
- data/tracks/csharp/exercises/reverse-string/README.md +3 -0
- data/tracks/csharp/exercises/reverse-string/ReverseString.cs +9 -0
- data/tracks/csharp/exercises/reverse-string/ReverseString.csproj +17 -0
- data/tracks/csharp/exercises/reverse-string/ReverseStringTest.cs +36 -0
- data/tracks/csharp/exercises/rna-transcription/RnaTranscription.csproj +3 -3
- data/tracks/csharp/exercises/robot-name/RobotName.csproj +3 -3
- data/tracks/csharp/exercises/robot-simulator/RobotSimulator.csproj +3 -3
- data/tracks/csharp/exercises/roman-numerals/RomanNumerals.csproj +3 -3
- data/tracks/csharp/exercises/rotational-cipher/RotationalCipher.csproj +3 -3
- data/tracks/csharp/exercises/run-length-encoding/RunLengthEncoding.csproj +3 -3
- data/tracks/csharp/exercises/saddle-points/SaddlePoints.csproj +3 -3
- data/tracks/csharp/exercises/say/Say.csproj +3 -3
- data/tracks/csharp/exercises/scale-generator/ScaleGenerator.csproj +3 -3
- data/tracks/csharp/exercises/scrabble-score/ScrabbleScore.csproj +3 -3
- data/tracks/csharp/exercises/secret-handshake/SecretHandshake.csproj +3 -3
- data/tracks/csharp/exercises/series/Series.csproj +3 -3
- data/tracks/csharp/exercises/sgf-parsing/SgfParsing.csproj +3 -3
- data/tracks/csharp/exercises/sieve/Sieve.csproj +3 -3
- data/tracks/csharp/exercises/simple-cipher/SimpleCipher.csproj +3 -3
- data/tracks/csharp/exercises/simple-linked-list/SimpleLinkedList.csproj +3 -3
- data/tracks/csharp/exercises/space-age/SpaceAge.csproj +3 -3
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.csproj +3 -3
- data/tracks/csharp/exercises/strain/Strain.csproj +3 -3
- data/tracks/csharp/exercises/sublist/Sublist.csproj +3 -3
- data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiples.csproj +3 -3
- data/tracks/csharp/exercises/tournament/Tournament.csproj +3 -3
- data/tracks/csharp/exercises/transpose/Transpose.csproj +3 -3
- data/tracks/csharp/exercises/tree-building/TreeBuilding.csproj +3 -3
- data/tracks/csharp/exercises/triangle/Triangle.csproj +3 -3
- data/tracks/csharp/exercises/twelve-days/TwelveDays.csproj +3 -3
- data/tracks/csharp/exercises/two-bucket/TwoBucket.csproj +3 -3
- data/tracks/csharp/exercises/two-fer/TwoFer.csproj +3 -3
- data/tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantity.csproj +3 -3
- data/tracks/csharp/exercises/word-count/WordCount.csproj +3 -3
- data/tracks/csharp/exercises/word-search/WordSearch.csproj +3 -3
- data/tracks/csharp/exercises/wordy/Wordy.csproj +3 -3
- data/tracks/csharp/exercises/zebra-puzzle/ZebraPuzzle.csproj +3 -3
- data/tracks/csharp/exercises/zipper/Zipper.csproj +3 -3
- data/tracks/csharp/generators/CustomExercise.cs +9 -0
- data/tracks/csharp/generators/Exercise.cs +3 -110
- data/tracks/csharp/generators/ExerciseCollection.cs +33 -14
- data/tracks/csharp/generators/Exercises/Acronym.cs +1 -1
- data/tracks/csharp/generators/Exercises/AllYourBase.cs +1 -1
- data/tracks/csharp/generators/Exercises/Allergies.cs +1 -1
- data/tracks/csharp/generators/Exercises/Alphametics.cs +1 -1
- data/tracks/csharp/generators/Exercises/Anagram.cs +1 -1
- data/tracks/csharp/generators/Exercises/AtbashCipher.cs +1 -1
- data/tracks/csharp/generators/Exercises/BeerSong.cs +1 -1
- data/tracks/csharp/generators/Exercises/BinarySearch.cs +1 -1
- data/tracks/csharp/generators/Exercises/Bob.cs +1 -1
- data/tracks/csharp/generators/Exercises/BookStore.cs +1 -1
- data/tracks/csharp/generators/Exercises/Bowling.cs +1 -2
- data/tracks/csharp/generators/Exercises/BracketPush.cs +1 -1
- data/tracks/csharp/generators/Exercises/Clock.cs +1 -1
- data/tracks/csharp/generators/Exercises/CollatzConjecture.cs +1 -1
- data/tracks/csharp/generators/Exercises/ComplexNumbers.cs +1 -1
- data/tracks/csharp/generators/Exercises/Connect.cs +2 -4
- data/tracks/csharp/generators/Exercises/CryptoSquare.cs +1 -1
- data/tracks/csharp/generators/Exercises/Diamond.cs +9 -0
- data/tracks/csharp/generators/Exercises/DifferenceOfSquares.cs +1 -2
- data/tracks/csharp/generators/Exercises/Dominoes.cs +1 -1
- data/tracks/csharp/generators/Exercises/Etl.cs +1 -1
- data/tracks/csharp/generators/Exercises/FlattenArray.cs +1 -2
- data/tracks/csharp/generators/Exercises/FoodChain.cs +1 -1
- data/tracks/csharp/generators/Exercises/Gigasecond.cs +1 -1
- data/tracks/csharp/generators/Exercises/Grains.cs +1 -1
- data/tracks/csharp/generators/Exercises/Hamming.cs +1 -1
- data/tracks/csharp/generators/Exercises/HelloWorld.cs +1 -1
- data/tracks/csharp/generators/Exercises/House.cs +1 -1
- data/tracks/csharp/generators/Exercises/IsbnVerifier.cs +2 -4
- data/tracks/csharp/generators/Exercises/Isogram.cs +1 -1
- data/tracks/csharp/generators/Exercises/KindergartenGarden.cs +1 -1
- data/tracks/csharp/generators/Exercises/LargestSeriesProduct.cs +1 -1
- data/tracks/csharp/generators/Exercises/Leap.cs +1 -1
- data/tracks/csharp/generators/Exercises/Luhn.cs +1 -1
- data/tracks/csharp/generators/Exercises/Meetup.cs +1 -1
- data/tracks/csharp/generators/Exercises/Minesweeper.cs +1 -1
- data/tracks/csharp/generators/Exercises/NthPrime.cs +1 -1
- data/tracks/csharp/generators/Exercises/NucleotideCount.cs +1 -1
- data/tracks/csharp/generators/Exercises/OcrNumbers.cs +1 -1
- data/tracks/csharp/generators/Exercises/Pangram.cs +1 -1
- data/tracks/csharp/generators/Exercises/PascalsTriangle.cs +1 -1
- data/tracks/csharp/generators/Exercises/PerfectNumbers.cs +1 -1
- data/tracks/csharp/generators/Exercises/PhoneNumber.cs +1 -1
- data/tracks/csharp/generators/Exercises/PigLatin.cs +1 -1
- data/tracks/csharp/generators/Exercises/Poker.cs +1 -1
- data/tracks/csharp/generators/Exercises/PrimeFactors.cs +1 -1
- data/tracks/csharp/generators/Exercises/QueenAttack.cs +1 -1
- data/tracks/csharp/generators/Exercises/RailFenceCipher.cs +1 -1
- data/tracks/csharp/generators/Exercises/Raindrops.cs +1 -1
- data/tracks/csharp/generators/Exercises/ReverseString.cs +6 -0
- data/tracks/csharp/generators/Exercises/RnaTranscription.cs +1 -1
- data/tracks/csharp/generators/Exercises/RomanNumerals.cs +1 -1
- data/tracks/csharp/generators/Exercises/RotationalCipher.cs +1 -1
- data/tracks/csharp/generators/Exercises/RunLengthEncoding.cs +1 -1
- data/tracks/csharp/generators/Exercises/SaddlePoints.cs +1 -1
- data/tracks/csharp/generators/Exercises/Say.cs +1 -1
- data/tracks/csharp/generators/Exercises/ScrabbleScore.cs +1 -1
- data/tracks/csharp/generators/Exercises/SecretHandshake.cs +1 -1
- data/tracks/csharp/generators/Exercises/Sieve.cs +1 -1
- data/tracks/csharp/generators/Exercises/SpaceAge.cs +1 -1
- data/tracks/csharp/generators/Exercises/SumOfMultiples.cs +1 -1
- data/tracks/csharp/generators/Exercises/Tournament.cs +1 -1
- data/tracks/csharp/generators/Exercises/Transpose.cs +1 -1
- data/tracks/csharp/generators/Exercises/Triangle.cs +1 -2
- data/tracks/csharp/generators/Exercises/TwoBucket.cs +1 -1
- data/tracks/csharp/generators/Exercises/TwoFer.cs +1 -1
- data/tracks/csharp/generators/Exercises/WordCount.cs +1 -1
- data/tracks/csharp/generators/Exercises/Wordy.cs +1 -1
- data/tracks/csharp/generators/GeneratorExercise.cs +114 -0
- data/tracks/csharp/generators/GeneratorStatus.cs +11 -0
- data/tracks/csharp/generators/Generators.csproj +1 -1
- data/tracks/csharp/generators/Input/CanonicalDataFile.cs +11 -9
- data/tracks/csharp/generators/Input/CanonicalDataParser.cs +5 -6
- data/tracks/csharp/generators/Input/ConfigFile.cs +29 -0
- data/tracks/csharp/generators/MissingDataExercise.cs +9 -0
- data/tracks/csharp/generators/Options.cs +18 -5
- data/tracks/csharp/generators/Output/ExerciseWriter.cs +5 -8
- data/tracks/csharp/generators/Output/NameExtensions.cs +3 -1
- data/tracks/csharp/generators/Program.cs +54 -15
- data/tracks/csharp/generators/UnimplementedExercise.cs +9 -0
- data/tracks/dart/README.md +6 -0
- data/tracks/dart/config.json +1 -1
- data/tracks/fsharp/config.json +24 -0
- data/tracks/fsharp/exercises/Exercises.sln +12 -0
- data/tracks/fsharp/exercises/accumulate/Accumulate.fsproj +4 -4
- data/tracks/fsharp/exercises/acronym/Acronym.fsproj +4 -4
- data/tracks/fsharp/exercises/all-your-base/AllYourBase.fsproj +4 -4
- data/tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs +5 -5
- data/tracks/fsharp/exercises/all-your-base/Example.fs +9 -7
- data/tracks/fsharp/exercises/allergies/Allergies.fsproj +4 -4
- data/tracks/fsharp/exercises/alphametics/Alphametics.fsproj +4 -4
- data/tracks/fsharp/exercises/alphametics/AlphameticsTest.fs +32 -32
- data/tracks/fsharp/exercises/anagram/Anagram.fsproj +4 -4
- data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fsproj +4 -4
- data/tracks/fsharp/exercises/bank-account/BankAccount.fsproj +4 -4
- data/tracks/fsharp/exercises/beer-song/BeerSong.fsproj +4 -4
- data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTree.fsproj +4 -4
- data/tracks/fsharp/exercises/binary-search/BinarySearch.fsproj +4 -4
- data/tracks/fsharp/exercises/bob/Bob.fsproj +4 -4
- data/tracks/fsharp/exercises/book-store/BookStore.fsproj +4 -4
- data/tracks/fsharp/exercises/bowling/Bowling.fsproj +4 -4
- data/tracks/fsharp/exercises/bracket-push/BracketPush.fsproj +4 -4
- data/tracks/fsharp/exercises/change/Change.fsproj +4 -4
- data/tracks/fsharp/exercises/circular-buffer/CircularBuffer.fsproj +4 -4
- data/tracks/fsharp/exercises/clock/Clock.fsproj +4 -4
- data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjecture.fs +3 -0
- data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjecture.fsproj +23 -0
- data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjectureTest.fs +33 -0
- data/tracks/fsharp/exercises/collatz-conjecture/Example.fs +15 -0
- data/tracks/fsharp/exercises/collatz-conjecture/Program.fs +1 -0
- data/tracks/fsharp/exercises/collatz-conjecture/README.md +32 -0
- data/tracks/fsharp/exercises/connect/Connect.fsproj +4 -4
- data/tracks/fsharp/exercises/connect/ConnectTest.fs +35 -35
- data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fsproj +4 -4
- data/tracks/fsharp/exercises/custom-set/CustomSet.fsproj +4 -4
- data/tracks/fsharp/exercises/diamond/Diamond.fsproj +4 -4
- data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fsproj +4 -4
- data/tracks/fsharp/exercises/diffie-hellman/DiffieHellman.fsproj +4 -4
- data/tracks/fsharp/exercises/dominoes/Dominoes.fsproj +4 -4
- data/tracks/fsharp/exercises/dot-dsl/DotDsl.fsproj +4 -4
- data/tracks/fsharp/exercises/error-handling/ErrorHandling.fsproj +4 -4
- data/tracks/fsharp/exercises/etl/Etl.fsproj +4 -4
- data/tracks/fsharp/exercises/etl/EtlTest.fs +39 -39
- data/tracks/fsharp/exercises/food-chain/FoodChain.fsproj +4 -4
- data/tracks/fsharp/exercises/forth/Forth.fsproj +4 -4
- data/tracks/fsharp/exercises/gigasecond/Gigasecond.fsproj +4 -4
- data/tracks/fsharp/exercises/go-counting/GoCounting.fsproj +4 -4
- data/tracks/fsharp/exercises/grade-school/GradeSchool.fsproj +4 -4
- data/tracks/fsharp/exercises/grains/Grains.fsproj +4 -4
- data/tracks/fsharp/exercises/grep/Grep.fsproj +4 -4
- data/tracks/fsharp/exercises/hamming/Hamming.fsproj +4 -4
- data/tracks/fsharp/exercises/hangman/Hangman.fsproj +4 -4
- data/tracks/fsharp/exercises/hello-world/HelloWorld.fsproj +4 -4
- data/tracks/fsharp/exercises/house/House.fsproj +4 -4
- data/tracks/fsharp/exercises/isogram/Isogram.fsproj +4 -4
- data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fsproj +4 -4
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fsproj +4 -4
- data/tracks/fsharp/exercises/leap/Leap.fsproj +4 -4
- data/tracks/fsharp/exercises/ledger/Ledger.fsproj +4 -4
- data/tracks/fsharp/exercises/lens-person/LensPerson.fsproj +4 -4
- data/tracks/fsharp/exercises/linked-list/LinkedList.fsproj +4 -4
- data/tracks/fsharp/exercises/list-ops/ListOps.fsproj +4 -4
- data/tracks/fsharp/exercises/luhn/Luhn.fsproj +4 -4
- data/tracks/fsharp/exercises/markdown/Markdown.fsproj +4 -4
- data/tracks/fsharp/exercises/matrix/Matrix.fsproj +4 -4
- data/tracks/fsharp/exercises/meetup/Meetup.fsproj +4 -4
- data/tracks/fsharp/exercises/minesweeper/Minesweeper.fsproj +4 -4
- data/tracks/fsharp/exercises/minesweeper/MinesweeperTest.fs +50 -50
- data/tracks/fsharp/exercises/nth-prime/NthPrime.fsproj +4 -4
- data/tracks/fsharp/exercises/nucleotide-count/NucleotideCount.fsproj +4 -4
- data/tracks/fsharp/exercises/nucleotide-count/NucleotideCountTest.fs +12 -12
- data/tracks/fsharp/exercises/ocr-numbers/OcrNumbers.fsproj +4 -4
- data/tracks/fsharp/exercises/ocr-numbers/OcrNumbersTest.fs +58 -58
- data/tracks/fsharp/exercises/palindrome-products/PalindromeProducts.fsproj +4 -4
- data/tracks/fsharp/exercises/pangram/Pangram.fsproj +4 -4
- data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.fsproj +4 -4
- data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangle.fsproj +4 -4
- data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangleTest.fs +64 -7
- data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fsproj +4 -4
- data/tracks/fsharp/exercises/phone-number/PhoneNumber.fsproj +4 -4
- data/tracks/fsharp/exercises/pig-latin/PigLatin.fsproj +4 -4
- data/tracks/fsharp/exercises/poker/Poker.fsproj +4 -4
- data/tracks/fsharp/exercises/pov/Pov.fsproj +4 -4
- data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fsproj +4 -4
- data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fsproj +4 -4
- data/tracks/fsharp/exercises/proverb/Proverb.fsproj +4 -4
- data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTriplet.fsproj +4 -4
- data/tracks/fsharp/exercises/queen-attack/QueenAttack.fsproj +4 -4
- data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipher.fsproj +4 -4
- data/tracks/fsharp/exercises/raindrops/Raindrops.fsproj +4 -4
- data/tracks/fsharp/exercises/react/React.fsproj +4 -4
- data/tracks/fsharp/exercises/rectangles/Rectangles.fsproj +4 -4
- data/tracks/fsharp/exercises/reverse-string/Example.fs +5 -0
- data/tracks/fsharp/exercises/reverse-string/Program.fs +1 -0
- data/tracks/fsharp/exercises/reverse-string/README.md +3 -0
- data/tracks/fsharp/exercises/reverse-string/ReverseString.fs +3 -0
- data/tracks/fsharp/exercises/reverse-string/ReverseString.fsproj +23 -0
- data/tracks/fsharp/exercises/reverse-string/ReverseStringTest.fs +29 -0
- data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fsproj +4 -4
- data/tracks/fsharp/exercises/robot-name/RobotName.fsproj +4 -4
- data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fsproj +4 -4
- data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fsproj +4 -4
- data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncoding.fsproj +4 -4
- data/tracks/fsharp/exercises/saddle-points/SaddlePoints.fsproj +4 -4
- data/tracks/fsharp/exercises/say/Say.fsproj +4 -4
- data/tracks/fsharp/exercises/scale-generator/ScaleGenerator.fsproj +4 -4
- data/tracks/fsharp/exercises/scrabble-score/ScrabbleScore.fsproj +4 -4
- data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fsproj +4 -4
- data/tracks/fsharp/exercises/series/Series.fsproj +4 -4
- data/tracks/fsharp/exercises/sgf-parsing/SgfParsing.fsproj +4 -4
- data/tracks/fsharp/exercises/sieve/Sieve.fsproj +4 -4
- data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fsproj +4 -4
- data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedList.fsproj +4 -4
- data/tracks/fsharp/exercises/space-age/SpaceAge.fsproj +4 -4
- data/tracks/fsharp/exercises/strain/Strain.fsproj +4 -4
- data/tracks/fsharp/exercises/sublist/Sublist.fsproj +4 -4
- data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fsproj +4 -4
- data/tracks/fsharp/exercises/tournament/Tournament.fsproj +4 -4
- data/tracks/fsharp/exercises/transpose/Transpose.fsproj +4 -4
- data/tracks/fsharp/exercises/tree-building/TreeBuilding.fsproj +4 -4
- data/tracks/fsharp/exercises/triangle/Triangle.fsproj +4 -4
- data/tracks/fsharp/exercises/twelve-days/TwelveDays.fsproj +4 -4
- data/tracks/fsharp/exercises/two-bucket/TwoBucket.fsproj +4 -4
- data/tracks/fsharp/exercises/two-fer/TwoFer.fsproj +4 -4
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantity.fsproj +4 -4
- data/tracks/fsharp/exercises/word-count/WordCount.fsproj +4 -4
- data/tracks/fsharp/exercises/word-search/WordSearch.fsproj +4 -4
- data/tracks/fsharp/exercises/wordy/Wordy.fsproj +4 -4
- data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzle.fsproj +4 -4
- data/tracks/fsharp/exercises/zipper/Zipper.fsproj +4 -4
- data/tracks/fsharp/generators/Common.fs +4 -1
- data/tracks/fsharp/generators/Generators.fs +29 -6
- data/tracks/fsharp/generators/Generators.fsproj +1 -1
- data/tracks/go/exercises/book-store/.meta/gen.go +54 -0
- data/tracks/go/exercises/book-store/book_store_test.go +0 -67
- data/tracks/go/exercises/book-store/cases_test.go +77 -0
- data/tracks/go/exercises/forth/cases_test.go +41 -6
- data/tracks/go/exercises/hamming/.meta/gen.go +16 -6
- data/tracks/go/exercises/hamming/cases_test.go +7 -7
- data/tracks/go/exercises/isbn-verifier/.meta/gen.go +44 -0
- data/tracks/go/exercises/isbn-verifier/cases_test.go +25 -0
- data/tracks/go/exercises/isbn-verifier/example.go +2 -2
- data/tracks/go/exercises/isbn-verifier/isbn_verifier_test.go +3 -22
- data/tracks/go/exercises/perfect-numbers/.meta/gen.go +88 -0
- data/tracks/go/exercises/perfect-numbers/.meta/hints.md +19 -0
- data/tracks/go/exercises/perfect-numbers/README.md +23 -2
- data/tracks/go/exercises/perfect-numbers/cases_test.go +89 -0
- data/tracks/go/exercises/perfect-numbers/example.go +4 -4
- data/tracks/go/exercises/perfect-numbers/perfect_numbers_test.go +13 -18
- data/tracks/go/exercises/wordy/.meta/gen.go +76 -0
- data/tracks/go/exercises/wordy/cases_test.go +111 -0
- data/tracks/go/exercises/wordy/wordy_test.go +7 -29
- data/tracks/groovy/config.json +4 -4
- data/tracks/haskell/exercises/all-your-base/package.yaml +1 -1
- data/tracks/haskell/exercises/all-your-base/test/Tests.hs +2 -2
- data/tracks/haskell/exercises/beer-song/README.md +1 -1
- data/tracks/haskell/exercises/forth/package.yaml +1 -1
- data/tracks/haskell/exercises/forth/test/Tests.hs +21 -3
- data/tracks/haskell/exercises/isbn-verifier/package.yaml +1 -1
- data/tracks/haskell/exercises/meetup/README.md +16 -12
- data/tracks/haskell/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/javascript/exercises/bowling/README.md +6 -6
- data/tracks/javascript/exercises/bowling/bowling.spec.js +14 -14
- data/tracks/javascript/exercises/saddle-points/README.md +1 -1
- data/tracks/javascript/exercises/sum-of-multiples/README.md +1 -1
- data/tracks/javascript/exercises/two-bucket/two-bucket.spec.js +2 -2
- data/tracks/julia/config.json +6 -6
- data/tracks/python/.gitignore +2 -0
- data/tracks/python/config.json +14 -0
- data/tracks/python/exercises/binary-search-tree/README.md +71 -0
- data/tracks/python/exercises/binary-search-tree/binary_search_tree.py +14 -0
- data/tracks/python/exercises/binary-search-tree/binary_search_tree_test.py +58 -0
- data/tracks/python/exercises/binary-search-tree/example.py +61 -0
- data/tracks/python/exercises/go-counting/go_counting_test.py +23 -23
- data/tracks/python/exercises/minesweeper/example.py +10 -14
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +108 -119
- data/tracks/rust/config.json +12 -0
- data/tracks/rust/exercises/beer-song/README.md +1 -1
- data/tracks/rust/exercises/proverb/README.md +5 -2
- data/tracks/rust/exercises/reverse-string/.gitignore +3 -0
- data/tracks/rust/exercises/reverse-string/Cargo.toml +6 -0
- data/tracks/rust/exercises/reverse-string/README.md +46 -0
- data/tracks/rust/exercises/reverse-string/example.rs +7 -0
- data/tracks/rust/exercises/reverse-string/src/lib.rs +3 -0
- data/tracks/rust/exercises/reverse-string/tests/reverse-string.rs +57 -0
- data/tracks/rust/exercises/sum-of-multiples/README.md +3 -3
- metadata +46 -3
- data/tracks/csharp/generators/Input/CanonicalDataOptions.cs +0 -8
@@ -5,7 +5,7 @@
|
|
5
5
|
</PropertyGroup>
|
6
6
|
<ItemGroup>
|
7
7
|
<PackageReference Include="CommandLineParser" Version="2.1.1-beta" />
|
8
|
-
<PackageReference Include="DotLiquid" Version="2.0.
|
8
|
+
<PackageReference Include="DotLiquid" Version="2.0.200" />
|
9
9
|
<PackageReference Include="Humanizer" Version="2.2.0" />
|
10
10
|
<PackageReference Include="LibGit2Sharp.Portable" Version="0.24.10" />
|
11
11
|
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
@@ -1,4 +1,5 @@
|
|
1
|
-
using System
|
1
|
+
using System;
|
2
|
+
using System.IO;
|
2
3
|
using System.Linq;
|
3
4
|
using LibGit2Sharp;
|
4
5
|
using Serilog;
|
@@ -12,18 +13,19 @@ public class CanonicalDataFile
|
|
12
13
|
private const string ProblemSpecificationsRemote = "origin";
|
13
14
|
private const string ProblemSpecificationsRemoteBranch = ProblemSpecificationsRemote + "/" + ProblemSpecificationsBranch;
|
14
15
|
|
15
|
-
private readonly
|
16
|
+
private readonly Options _options;
|
16
17
|
|
17
|
-
public CanonicalDataFile(
|
18
|
+
public CanonicalDataFile(Options options)
|
18
19
|
{
|
19
20
|
_options = options;
|
20
21
|
}
|
21
|
-
|
22
|
-
public
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
|
23
|
+
public bool Exists(string exercise) => File.Exists(GetExerciseCanonicalDataPath(exercise));
|
24
|
+
|
25
|
+
public string Contents(string exercise) => File.ReadAllText(GetExerciseCanonicalDataPath(exercise));
|
26
|
+
|
27
|
+
private string GetExerciseCanonicalDataPath(string exercise)
|
28
|
+
=> Path.Combine(_options.CanonicalDataDirectory, "exercises", exercise, "canonical-data.json");
|
27
29
|
|
28
30
|
public void DownloadData()
|
29
31
|
{
|
@@ -7,15 +7,14 @@ public class CanonicalDataParser
|
|
7
7
|
{
|
8
8
|
private readonly CanonicalDataFile _canonicalDataFile;
|
9
9
|
|
10
|
-
public CanonicalDataParser(
|
10
|
+
public CanonicalDataParser(CanonicalDataFile canonicalDataFile)
|
11
11
|
{
|
12
|
-
_canonicalDataFile =
|
13
|
-
_canonicalDataFile.DownloadData();
|
12
|
+
_canonicalDataFile = canonicalDataFile;
|
14
13
|
}
|
15
|
-
|
16
|
-
public CanonicalData Parse(
|
14
|
+
|
15
|
+
public CanonicalData Parse(string exercise)
|
17
16
|
{
|
18
|
-
var canonicalDataJson = _canonicalDataFile.Contents(exercise
|
17
|
+
var canonicalDataJson = _canonicalDataFile.Contents(exercise);
|
19
18
|
var canonicalData = JsonConvert.DeserializeObject<CanonicalData>(canonicalDataJson);
|
20
19
|
|
21
20
|
Validator.ValidateObject(canonicalData, new ValidationContext(canonicalData));
|
@@ -0,0 +1,29 @@
|
|
1
|
+
using System.Collections.Generic;
|
2
|
+
using System.IO;
|
3
|
+
using System.Linq;
|
4
|
+
using Newtonsoft.Json;
|
5
|
+
|
6
|
+
namespace Generators.Input
|
7
|
+
{
|
8
|
+
public static class ConfigFile
|
9
|
+
{
|
10
|
+
private const string ConfigFilePath = "../config.json";
|
11
|
+
|
12
|
+
public static IEnumerable<string> GetExerciseNames()
|
13
|
+
{
|
14
|
+
var jsonContents = File.ReadAllText(ConfigFilePath);
|
15
|
+
var config = JsonConvert.DeserializeObject<Config>(jsonContents);
|
16
|
+
return config.Exercises.Select(exercise => exercise.Slug).OrderBy(x => x).ToArray();
|
17
|
+
}
|
18
|
+
|
19
|
+
private class Config
|
20
|
+
{
|
21
|
+
public ConfigExercise[] Exercises { get; set; }
|
22
|
+
}
|
23
|
+
|
24
|
+
private class ConfigExercise
|
25
|
+
{
|
26
|
+
public string Slug { get; set; }
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
@@ -1,14 +1,22 @@
|
|
1
|
-
using System
|
1
|
+
using System;
|
2
|
+
using System.IO;
|
2
3
|
using CommandLine;
|
3
4
|
|
4
5
|
namespace Generators
|
5
6
|
{
|
6
7
|
public class Options
|
7
8
|
{
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
private static string DefaultCanonicalDataDirectory
|
10
|
+
=> Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "exercism", "problem-specifications");
|
11
|
+
|
12
|
+
[Option('e', "exercise", Required = false,
|
13
|
+
HelpText = "Exercise to generate (defaults to all exercises).")]
|
14
|
+
public string Exercise { get; set; }
|
15
|
+
|
16
|
+
[Option('s', "status", Required = false,
|
17
|
+
HelpText = "The generator status to filter on (defaults to exercises with generator).")]
|
18
|
+
public GeneratorStatus Status { get; set; }
|
19
|
+
|
12
20
|
[Option('d', "canonicaldatadirectory", Required = false,
|
13
21
|
HelpText = "Canonical data directory. If the directory does not exist, the canonical data will be downloaded.")]
|
14
22
|
public string CanonicalDataDirectory { get; set; }
|
@@ -16,5 +24,10 @@ public class Options
|
|
16
24
|
[Option('c', "cachecanonicaldata", Required = false, Default = false,
|
17
25
|
HelpText = "Use the cached canonical data and don't update the data.")]
|
18
26
|
public bool CacheCanonicalData { get; set; }
|
27
|
+
|
28
|
+
public void Normalize()
|
29
|
+
{
|
30
|
+
CanonicalDataDirectory = CanonicalDataDirectory ?? DefaultCanonicalDataDirectory;
|
31
|
+
}
|
19
32
|
}
|
20
33
|
}
|
@@ -1,23 +1,20 @@
|
|
1
1
|
using System.IO;
|
2
|
-
using Serilog;
|
3
2
|
|
4
3
|
namespace Generators.Output
|
5
4
|
{
|
6
5
|
public class ExerciseWriter
|
7
6
|
{
|
8
|
-
public virtual void WriteToFile(
|
7
|
+
public virtual void WriteToFile(GeneratorExercise generatorExercise)
|
9
8
|
{
|
10
|
-
var testClassFilePath = TestClassFilePath(
|
11
|
-
var testClassContents =
|
9
|
+
var testClassFilePath = TestClassFilePath(generatorExercise);
|
10
|
+
var testClassContents = generatorExercise.Render();
|
12
11
|
|
13
12
|
Directory.CreateDirectory(Path.GetDirectoryName(testClassFilePath));
|
14
13
|
File.WriteAllText(testClassFilePath, testClassContents);
|
15
|
-
|
16
|
-
Log.Information("Generated tests for {Exercise} exercise in {TestFile}", exercise.Name, testClassFilePath);
|
17
14
|
}
|
18
15
|
|
19
|
-
private static string TestClassFilePath(
|
16
|
+
private static string TestClassFilePath(GeneratorExercise generatorExercise) => Path.Combine("..", "exercises", generatorExercise.Name, TestClassFileName(generatorExercise));
|
20
17
|
|
21
|
-
private static string TestClassFileName(
|
18
|
+
private static string TestClassFileName(GeneratorExercise generatorExercise) => $"{generatorExercise.Name.ToTestClassName()}.cs";
|
22
19
|
}
|
23
20
|
}
|
@@ -6,7 +6,9 @@ namespace Generators.Output
|
|
6
6
|
{
|
7
7
|
public static class NameExtensions
|
8
8
|
{
|
9
|
-
public static string ToExerciseName(this Type exerciseType) => exerciseType.Name.
|
9
|
+
public static string ToExerciseName(this Type exerciseType) => exerciseType.Name.ToExerciseName();
|
10
|
+
|
11
|
+
public static string ToExerciseName(this string input) => input.Kebaberize();
|
10
12
|
|
11
13
|
public static string ToTestClassName(this string input) => $"{input.Dehumanize()}Test";
|
12
14
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
using System;
|
2
2
|
using System.Diagnostics;
|
3
|
-
using System.IO;
|
4
3
|
using CommandLine;
|
5
4
|
using Generators.Input;
|
5
|
+
using Generators.Output;
|
6
6
|
using Serilog;
|
7
7
|
|
8
8
|
namespace Generators
|
@@ -35,30 +35,69 @@ private static void SetupLogger()
|
|
35
35
|
|
36
36
|
private static void RegenerateTestClasses(Options options)
|
37
37
|
{
|
38
|
+
options.Normalize();
|
39
|
+
|
40
|
+
var canonicalDataFile = new CanonicalDataFile(options);
|
41
|
+
canonicalDataFile.DownloadData();
|
42
|
+
|
38
43
|
Log.Information("Re-generating test classes...");
|
39
44
|
|
40
|
-
var canonicalDataParser =
|
45
|
+
var canonicalDataParser = new CanonicalDataParser(canonicalDataFile);
|
41
46
|
|
42
|
-
foreach (var exercise in new ExerciseCollection(
|
43
|
-
|
44
|
-
var canonicalData = canonicalDataParser.Parse(exercise);
|
45
|
-
exercise.Regenerate(canonicalData);
|
46
|
-
}
|
47
|
+
foreach (var exercise in new ExerciseCollection(canonicalDataFile))
|
48
|
+
RegenerateTestClass(exercise, options, canonicalDataParser);
|
47
49
|
|
48
50
|
Log.Information("Re-generated test classes.");
|
49
51
|
}
|
50
52
|
|
51
|
-
private static
|
53
|
+
private static void RegenerateTestClass(Exercise exercise, Options options, CanonicalDataParser canonicalDataParser)
|
52
54
|
{
|
53
|
-
|
55
|
+
if (ShouldBeSkipped(exercise, options))
|
56
|
+
return;
|
57
|
+
|
58
|
+
switch (exercise)
|
54
59
|
{
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
case GeneratorExercise generatorExercise:
|
61
|
+
var canonicalData = canonicalDataParser.Parse(exercise.Name);
|
62
|
+
generatorExercise.Regenerate(canonicalData);
|
63
|
+
|
64
|
+
Log.Information("{Exercise}: tests generated", exercise.Name);
|
65
|
+
break;
|
66
|
+
case UnimplementedExercise _:
|
67
|
+
Log.Error("{Exercise}: missing test generator", exercise.Name);
|
68
|
+
break;
|
69
|
+
case CustomExercise _:
|
70
|
+
Log.Information("{Exercise}: has customized tests", exercise.Name);
|
71
|
+
break;
|
72
|
+
case MissingDataExercise _:
|
73
|
+
Log.Warning("{Exercise}: missing canonical data", exercise.Name);
|
74
|
+
break;
|
75
|
+
}
|
59
76
|
}
|
60
77
|
|
61
|
-
private static
|
62
|
-
=>
|
78
|
+
private static bool ShouldBeSkipped(Exercise exercise, Options options)
|
79
|
+
=> DoesNotMatchFilteredExercise(exercise, options) || DoesNotMatchFilteredStatus(exercise, options);
|
80
|
+
|
81
|
+
private static bool DoesNotMatchFilteredExercise(Exercise exercise, Options options)
|
82
|
+
=> options.Exercise != null && !string.Equals(exercise.Name, options.Exercise.ToExerciseName(), StringComparison.OrdinalIgnoreCase);
|
83
|
+
|
84
|
+
private static bool DoesNotMatchFilteredStatus(Exercise exercise, Options options)
|
85
|
+
{
|
86
|
+
switch (options.Status)
|
87
|
+
{
|
88
|
+
case GeneratorStatus.All:
|
89
|
+
return false;
|
90
|
+
case GeneratorStatus.Implemented:
|
91
|
+
return !(exercise is GeneratorExercise);
|
92
|
+
case GeneratorStatus.Unimplemented:
|
93
|
+
return !(exercise is UnimplementedExercise);
|
94
|
+
case GeneratorStatus.MissingData:
|
95
|
+
return !(exercise is MissingDataExercise);
|
96
|
+
case GeneratorStatus.Custom:
|
97
|
+
return !(exercise is CustomExercise);
|
98
|
+
default:
|
99
|
+
throw new ArgumentOutOfRangeException();
|
100
|
+
}
|
101
|
+
}
|
63
102
|
}
|
64
103
|
}
|
data/tracks/dart/README.md
CHANGED
@@ -8,6 +8,12 @@ Exercism exercises in Dart.
|
|
8
8
|
|
9
9
|
The simplest way to install Dart can be [found here](docs/INSTALLATION.md).
|
10
10
|
|
11
|
+
Clone the repo and run `pub get` to download all the dependencies for this project.
|
12
|
+
|
13
|
+
To run all the tests execute: `pub run test`
|
14
|
+
|
15
|
+
To create a new exercise, use the create-exercise executable in the tool directory: `./tool/create_exercise`
|
16
|
+
|
11
17
|
## Exercise Tests ##
|
12
18
|
|
13
19
|
At the most basic level, Exercism is all about the tests. They drive the user's implementation forward and tell them when the exercise is complete.
|
data/tracks/dart/config.json
CHANGED
data/tracks/fsharp/config.json
CHANGED
@@ -100,6 +100,20 @@
|
|
100
100
|
"unlocked_by": null,
|
101
101
|
"uuid": "cf058dc8-db6f-4034-ac5b-22f1d8d0decc"
|
102
102
|
},
|
103
|
+
{
|
104
|
+
"core": false,
|
105
|
+
"difficulty": 2,
|
106
|
+
"slug": "collatz-conjecture",
|
107
|
+
"topics": [
|
108
|
+
"algorithms",
|
109
|
+
"control_flow_conditionals",
|
110
|
+
"control_flow_loops",
|
111
|
+
"integers",
|
112
|
+
"mathematics"
|
113
|
+
],
|
114
|
+
"unlocked_by": "sum-of-multiples",
|
115
|
+
"uuid": "8b66e691-508f-40d9-8cee-1d6aec27366e"
|
116
|
+
},
|
103
117
|
{
|
104
118
|
"core": true,
|
105
119
|
"difficulty": 3,
|
@@ -231,6 +245,16 @@
|
|
231
245
|
"unlocked_by": null,
|
232
246
|
"uuid": "1d377268-8892-460b-a84b-011fde1ff06b"
|
233
247
|
},
|
248
|
+
{
|
249
|
+
"core": false,
|
250
|
+
"difficulty": 1,
|
251
|
+
"slug": "reverse-string",
|
252
|
+
"topics": [
|
253
|
+
"strings"
|
254
|
+
],
|
255
|
+
"unlocked_by": null,
|
256
|
+
"uuid": "08be451e-65c1-4306-860e-ac0c4a02a546"
|
257
|
+
},
|
234
258
|
{
|
235
259
|
"core": false,
|
236
260
|
"difficulty": 1,
|
@@ -212,6 +212,10 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "ZebraPuzzle", "zebra-puzzle
|
|
212
212
|
EndProject
|
213
213
|
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Zipper", "zipper\Zipper.fsproj", "{1DEE9AFA-D88A-4143-B53D-E494FF331FC8}"
|
214
214
|
EndProject
|
215
|
+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "CollatzConjecture", "collatz-conjecture\CollatzConjecture.fsproj", "{FA7B3DD2-DF53-44EC-92AF-5696D6C731ED}"
|
216
|
+
EndProject
|
217
|
+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ReverseString", "reverse-string\ReverseString.fsproj", "{A996AAE3-E54D-41F2-9B6A-99EACD6DAAB7}"
|
218
|
+
EndProject
|
215
219
|
Global
|
216
220
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
217
221
|
Debug|Any CPU = Debug|Any CPU
|
@@ -638,6 +642,14 @@ Global
|
|
638
642
|
{1DEE9AFA-D88A-4143-B53D-E494FF331FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
639
643
|
{1DEE9AFA-D88A-4143-B53D-E494FF331FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
640
644
|
{1DEE9AFA-D88A-4143-B53D-E494FF331FC8}.Release|Any CPU.Build.0 = Release|Any CPU
|
645
|
+
{FA7B3DD2-DF53-44EC-92AF-5696D6C731ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
646
|
+
{FA7B3DD2-DF53-44EC-92AF-5696D6C731ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
647
|
+
{FA7B3DD2-DF53-44EC-92AF-5696D6C731ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
648
|
+
{FA7B3DD2-DF53-44EC-92AF-5696D6C731ED}.Release|Any CPU.Build.0 = Release|Any CPU
|
649
|
+
{A996AAE3-E54D-41F2-9B6A-99EACD6DAAB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
650
|
+
{A996AAE3-E54D-41F2-9B6A-99EACD6DAAB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
651
|
+
{A996AAE3-E54D-41F2-9B6A-99EACD6DAAB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
652
|
+
{A996AAE3-E54D-41F2-9B6A-99EACD6DAAB7}.Release|Any CPU.Build.0 = Release|Any CPU
|
641
653
|
EndGlobalSection
|
642
654
|
GlobalSection(SolutionProperties) = preSolution
|
643
655
|
HideSolutionNode = FALSE
|
@@ -13,11 +13,11 @@
|
|
13
13
|
</ItemGroup>
|
14
14
|
|
15
15
|
<ItemGroup>
|
16
|
-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.
|
17
|
-
<PackageReference Include="xunit" Version="2.3.
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.
|
16
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
17
|
+
<PackageReference Include="xunit" Version="2.3.1" />
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
20
|
-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
|
21
21
|
</ItemGroup>
|
22
22
|
|
23
23
|
</Project>
|
@@ -13,11 +13,11 @@
|
|
13
13
|
</ItemGroup>
|
14
14
|
|
15
15
|
<ItemGroup>
|
16
|
-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.
|
17
|
-
<PackageReference Include="xunit" Version="2.3.
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.
|
16
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
17
|
+
<PackageReference Include="xunit" Version="2.3.1" />
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
20
|
-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
|
21
21
|
</ItemGroup>
|
22
22
|
|
23
23
|
</Project>
|
@@ -13,11 +13,11 @@
|
|
13
13
|
</ItemGroup>
|
14
14
|
|
15
15
|
<ItemGroup>
|
16
|
-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.
|
17
|
-
<PackageReference Include="xunit" Version="2.3.
|
18
|
-
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.
|
16
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
17
|
+
<PackageReference Include="xunit" Version="2.3.1" />
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
19
19
|
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
20
|
-
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
|
21
21
|
</ItemGroup>
|
22
22
|
|
23
23
|
</Project>
|