├── .gitattributes ├── docs └── SNIPPET.txt ├── exercises ├── practice │ ├── leap │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ │ ├── Leap.vb │ │ └── Leap.vbproj │ ├── accumulate │ │ ├── Accumulate.vb │ │ ├── .meta │ │ │ └── Example.vb │ │ └── Accumulate.vbproj │ ├── anagram │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── Anagram.vb │ │ ├── Anagram.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── hello-world │ │ ├── HelloWorld.vb │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ ├── tests.toml │ │ │ └── config.json │ │ ├── HelloWorldTests.vb │ │ └── HelloWorld.vbproj │ ├── house │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── House.vbproj │ │ ├── House.vb │ │ └── .meta │ │ │ └── config.json │ ├── proverb │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── Proverb.vb │ │ ├── Proverb.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── raindrops │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── Raindrops.vb │ │ ├── .meta │ │ │ └── Example.vb │ │ └── Raindrops.vbproj │ ├── beer-song │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── BeerSong.vb │ │ ├── BeerSong.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── food-chain │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── FoodChain.vbproj │ │ ├── FoodChain.vb │ │ └── .meta │ │ │ └── config.json │ ├── twelve-days │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── TwelveDays.vbproj │ │ ├── TwelveDays.vb │ │ └── .meta │ │ │ └── config.json │ ├── collatz-conjecture │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── CollatzConjecture.vb │ │ ├── CollatzConjecture.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── two-fer │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ │ ├── TwoFer.vb │ │ ├── TwoFer.vbproj │ │ └── .docs │ │ │ └── introduction.md │ ├── gigasecond │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ │ ├── Gigasecond.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ └── Gigasecond.vbproj │ ├── simple-linked-list │ │ ├── .docs │ │ │ └── introduction.md │ │ └── SimpleLinkedList.vbproj │ ├── bob │ │ ├── Bob.vb │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── .meta │ │ │ ├── description.md │ │ │ └── config.json │ │ └── Bob.vbproj │ ├── pangram │ │ ├── Pangram.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── Pangram.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── pig-latin │ │ ├── PigLatin.vb │ │ ├── PigLatin.vbproj │ │ ├── .docs │ │ │ └── introduction.md │ │ └── .meta │ │ │ └── config.json │ ├── zipper │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── .meta │ │ │ └── config.json │ │ └── Zipper.vbproj │ ├── crypto-square │ │ ├── CryptoSquare.vb │ │ └── CryptoSquare.vbproj │ ├── ocr-numbers │ │ ├── OcrNumbers.vb │ │ ├── OcrNumbers.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── sublist │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── Sublist.vbproj │ │ ├── Sublist.vb │ │ └── .meta │ │ │ └── config.json │ ├── prime-factors │ │ ├── PrimeFactors.vb │ │ ├── PrimeFactors.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── nucleotide-count │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── NucleotideCount.vb │ │ ├── NucleotideCount.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── say │ │ ├── Say.vb │ │ ├── Say.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── luhn │ │ ├── Luhn.vb │ │ ├── Luhn.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── nth-prime │ │ ├── NthPrime.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── NthPrime.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── poker │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── Poker.vb │ │ ├── Poker.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── saddle-points │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ └── introduction.md │ │ ├── SaddlePoints.vb │ │ ├── SaddlePoints.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── acronym │ │ ├── Acronym.vb │ │ ├── Acronym.vbproj │ │ └── .meta │ │ │ ├── config.json │ │ │ └── Example.vb │ ├── clock │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── Clock.vbproj │ │ ├── .meta │ │ │ └── config.json │ │ └── Clock.vb │ ├── diamond │ │ ├── Diamond.vb │ │ ├── Diamond.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── phone-number │ │ ├── PhoneNumber.vb │ │ ├── PhoneNumber.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── sieve │ │ ├── Sieve.vb │ │ ├── Sieve.vbproj │ │ ├── .docs │ │ │ └── introduction.md │ │ └── .meta │ │ │ └── config.json │ ├── wordy │ │ ├── Wordy.vb │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── Wordy.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── isogram │ │ ├── Isogram.vb │ │ ├── Isogram.vbproj │ │ ├── .docs │ │ │ └── instructions.md │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── protein-translation │ │ ├── ProteinTranslation.vb │ │ ├── ProteinTranslation.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── square-root │ │ ├── SquareRoot.vb │ │ ├── SquareRoot.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── darts │ │ ├── Darts.vb │ │ ├── Darts.vbproj │ │ └── .meta │ │ │ ├── config.json │ │ │ └── Example.vb │ ├── diffie-hellman │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── DiffieHellman.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── hamming │ │ ├── Hamming.vb │ │ ├── Hamming.vbproj │ │ ├── .meta │ │ │ └── config.json │ │ └── .docs │ │ │ └── instructions.md │ ├── rectangles │ │ ├── Rectangles.vb │ │ ├── .meta │ │ │ └── config.json │ │ └── Rectangles.vbproj │ ├── roman-numerals │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ └── instructions.md │ │ ├── RomanNumerals.vb │ │ ├── RomanNumerals.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── transpose │ │ ├── Transpose.vb │ │ ├── Transpose.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── eliuds-eggs │ │ ├── EliudsEggs.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── EliudsEggs.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── reverse-string │ │ ├── .docs │ │ │ ├── instructions.md │ │ │ └── introduction.md │ │ ├── .meta │ │ │ └── Example.vb │ │ ├── ReverseString.vb │ │ └── ReverseString.vbproj │ ├── flower-field │ │ ├── FlowerField.vb │ │ ├── .meta │ │ │ └── config.json │ │ ├── FlowerField.vbproj │ │ └── .docs │ │ │ └── introduction.md │ ├── isbn-verifier │ │ ├── IsbnVerifier.vb │ │ └── IsbnVerifier.vbproj │ ├── minesweeper │ │ ├── Minesweeper.vb │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── .meta │ │ │ └── config.json │ │ └── Minesweeper.vbproj │ ├── scrabble-score │ │ ├── ScrabbleScore.vb │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── ScrabbleScore.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── variable-length-quantity │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── VariableLengthQuantity.vbproj │ │ ├── VariableLengthQuantity.vb │ │ └── .meta │ │ │ └── config.json │ ├── spiral-matrix │ │ ├── SpiralMatrix.vb │ │ ├── SpiralMatrix.vbproj │ │ └── .docs │ │ │ └── instructions.md │ ├── resistor-color-duo │ │ ├── ResistorColorDuo.vb │ │ ├── ResistorColorDuo.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── resistor-color-trio │ │ ├── ResistorColorTrio.vb │ │ └── ResistorColorTrio.vbproj │ ├── rna-transcription │ │ ├── RnaTranscription.vb │ │ ├── RnaTranscription.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── series │ │ ├── Series.vb │ │ ├── Series.vbproj │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ │ └── .docs │ │ │ └── instructions.md │ ├── change │ │ ├── Change.vb │ │ ├── Change.vbproj │ │ ├── .docs │ │ │ └── instructions.md │ │ └── .meta │ │ │ └── config.json │ ├── grep │ │ ├── Grep.vb │ │ ├── Grep.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── secret-handshake │ │ ├── SecretHandshake.vb │ │ ├── SecretHandshake.vbproj │ │ ├── .docs │ │ │ └── introduction.md │ │ └── .meta │ │ │ └── config.json │ ├── tournament │ │ ├── Tournament.vb │ │ ├── Tournament.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── armstrong-numbers │ │ ├── ArmstrongNumbers.vb │ │ ├── ArmstrongNumbers.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── binary-search │ │ ├── BinarySearch.vb │ │ ├── BinarySearch.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── bottle-song │ │ ├── BottleSong.vb │ │ ├── BottleSong.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── matching-brackets │ │ ├── MatchingBrackets.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── MatchingBrackets.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── rotational-cipher │ │ ├── RotationalCipher.vb │ │ ├── RotationalCipher.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── sum-of-multiples │ │ ├── .docs │ │ │ ├── instructions.append.md │ │ │ └── introduction.md │ │ ├── SumOfMultiples.vb │ │ ├── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ │ └── SumOfMultiples.vbproj │ ├── bank-account │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── BankAccount.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── difference-of-squares │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── DifferenceOfSquares.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── flatten-array │ │ ├── FlattenArray.vb │ │ ├── FlattenArray.vbproj │ │ ├── .docs │ │ │ ├── introduction.md │ │ │ └── instructions.md │ │ └── .meta │ │ │ ├── config.json │ │ │ └── Example.vb │ ├── zebra-puzzle │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── ZebraPuzzleTests.vb │ │ ├── ZebraPuzzle.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── book-store │ │ ├── BookStore.vb │ │ ├── BookStore.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── largest-series-product │ │ ├── LargestSeriesProduct.vb │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── LargestSeriesProduct.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── etl │ │ ├── Etl.vb │ │ ├── Etl.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── word-count │ │ ├── WordCount.vb │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── WordCount.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── linked-list │ │ ├── .docs │ │ │ └── introduction.md │ │ ├── LinkedList.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── parallel-letter-frequency │ │ ├── ParallelLetterFrequency.vb │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── ParallelLetterFrequency.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── list-ops │ │ ├── .docs │ │ │ └── instructions.append.md │ │ ├── .meta │ │ │ └── config.json │ │ └── ListOps.vbproj │ ├── binary │ │ ├── Binary.vb │ │ └── Binary.vbproj │ ├── all-your-base │ │ ├── AllYourBase.vb │ │ ├── AllYourBase.vbproj │ │ ├── .meta │ │ │ └── config.json │ │ └── .docs │ │ │ └── introduction.md │ ├── pythagorean-triplet │ │ ├── PythagoreanTriplet.vb │ │ ├── PythagoreanTriplet.vbproj │ │ ├── .docs │ │ │ └── instructions.md │ │ └── .meta │ │ │ └── config.json │ ├── atbash-cipher │ │ ├── AtbashCipher.vb │ │ ├── AtbashCipher.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── grains │ │ ├── .docs │ │ │ ├── introduction.md │ │ │ └── instructions.md │ │ ├── Grains.vb │ │ ├── Grains.vbproj │ │ └── .meta │ │ │ ├── Example.vb │ │ │ └── config.json │ ├── bowling │ │ ├── Bowling.vb │ │ ├── Bowling.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── high-scores │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── HighScores.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── ledger │ │ ├── .meta │ │ │ └── config.json │ │ └── Ledger.vbproj │ ├── robot-name │ │ ├── RobotName.vb │ │ ├── RobotName.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── scale-generator │ │ ├── .meta │ │ │ └── config.json │ │ ├── ScaleGenerator.vbproj │ │ └── ScaleGenerator.vb │ ├── tree-building │ │ ├── .meta │ │ │ └── config.json │ │ └── TreeBuilding.vbproj │ ├── error-handling │ │ ├── .docs │ │ │ └── instructions.md │ │ ├── ErrorHandling.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── resistor-color │ │ ├── ResistorColor.vb │ │ ├── ResistorColor.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── rest-api │ │ ├── .meta │ │ │ └── config.json │ │ ├── RestApi.vbproj │ │ └── RestApi.vb │ ├── triangle │ │ ├── Triangle.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── yacht │ │ ├── Yacht.vbproj │ │ ├── .meta │ │ │ └── config.json │ │ ├── .docs │ │ │ └── introduction.md │ │ └── Yacht.vb │ ├── matrix │ │ ├── Matrix.vbproj │ │ ├── Matrix.vb │ │ └── .meta │ │ │ └── config.json │ ├── meetup │ │ ├── Meetup.vbproj │ │ ├── Meetup.vb │ │ └── .meta │ │ │ └── config.json │ ├── two-bucket │ │ ├── TwoBucket.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── affine-cipher │ │ ├── AffineCipher.vbproj │ │ ├── AffineCipher.vb │ │ └── .meta │ │ │ └── config.json │ ├── allergies │ │ ├── Allergies.vbproj │ │ └── Allergies.vb │ ├── grade-school │ │ ├── GradeSchool.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── queen-attack │ │ └── QueenAttack.vbproj │ ├── simple-cipher │ │ ├── SimpleCipher.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── space-age │ │ ├── SpaceAge.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── dnd-character │ │ ├── DndCharacter.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── game-of-life │ │ ├── GameOfLife.vbproj │ │ ├── .docs │ │ │ ├── introduction.md │ │ │ └── instructions.md │ │ ├── .meta │ │ │ └── config.json │ │ └── GameOfLife.vb │ ├── perfect-numbers │ │ ├── PerfectNumbers.vb │ │ └── PerfectNumbers.vbproj │ ├── robot-simulator │ │ ├── RobotSimulator.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── circular-buffer │ │ ├── CircularBuffer.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── run-length-encoding │ │ ├── RunLengthEncoding.vb │ │ ├── RunLengthEncoding.vbproj │ │ └── .meta │ │ │ └── config.json │ ├── rail-fence-cipher │ │ ├── RailFenceCipher.vbproj │ │ ├── RailFenceCipher.vb │ │ └── .meta │ │ │ └── config.json │ └── relative-distance │ │ ├── RelativeDistance.vbproj │ │ ├── RelativeDistance.vb │ │ └── .meta │ │ └── config.json └── shared │ └── .docs │ ├── debug.md │ └── help.md ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── configlet.yml │ ├── sync-labels.yml │ ├── test.yml │ └── ping-cross-track-maintainers-team.yml └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.sh text eol=lf 4 | *.vb text 5 | 6 | *.jpg binary 7 | *.png binary 8 | *.gif binary 9 | -------------------------------------------------------------------------------- /docs/SNIPPET.txt: -------------------------------------------------------------------------------- 1 | Public Module modmain 2 | Sub Main() 3 | Console.WriteLine ("Hello World!") 4 | End Sub 5 | End Module 6 | -------------------------------------------------------------------------------- /exercises/practice/leap/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to determine whether a given year is a leap year. 4 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/Accumulate.vb: -------------------------------------------------------------------------------- 1 | Imports System.Runtime.CompilerServices 2 | 3 | Module AccumulateExtensions 4 | 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/anagram/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Instructions Append 2 | 3 | The anagrams must be returned in alphabetical order. 4 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/HelloWorld.vb: -------------------------------------------------------------------------------- 1 | Public Module HelloWorld 2 | Public Function Hello() As String 3 | Return "Goodbye, Mars!" 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/house/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | Try to capture the structure of the song in your code, where you build up the song by composing its parts. 4 | -------------------------------------------------------------------------------- /exercises/practice/proverb/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | Try to capture the structure of the song in your code, where you build up the song by composing its parts. 4 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Raindrops is a slightly more complex version of the FizzBuzz challenge, a classic interview question. 4 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | - Try to capture the structure of the song in your code, where you build up the song by composing its parts. 4 | -------------------------------------------------------------------------------- /exercises/practice/food-chain/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | - Try to capture the structure of the song in your code, where you build up the song by composing its parts. 4 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Public Module HelloWorld 2 | Public Function Hello() As String 3 | Return "Hello, World!" 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/twelve-days/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | - Try to capture the structure of the song in your code, where you build up the song by composing its parts. 4 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a positive integer, return the number of steps it takes to reach 1 according to the rules of the Collatz Conjecture. 4 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Public Module TwoFer 2 | Public Function Speak(ByVal Optional name As String = "you") 3 | Return $"One for {name}, one for me." 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | 2 | Public Module Gigasecond 3 | Public Function Add(ByVal moment As Date) As Date 4 | Return moment.AddSeconds(1000000000) 5 | End Function 6 | End Module 7 | -------------------------------------------------------------------------------- /exercises/practice/simple-linked-list/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You work for a music streaming company. 4 | 5 | You've been tasked with creating a playlist feature for your music player application. 6 | -------------------------------------------------------------------------------- /exercises/practice/bob/Bob.vb: -------------------------------------------------------------------------------- 1 | Public Class Bob 2 | 3 | Public Function Hey(statement As String) As String 4 | Throw New NotImplementedException("You need to implement this function") 5 | End Function 6 | End Class -------------------------------------------------------------------------------- /exercises/practice/hello-world/HelloWorldTests.vb: -------------------------------------------------------------------------------- 1 | Imports Xunit 2 | 3 | Public Class HelloWorldTest 4 | 5 | Public Sub Say_hi_() 6 | Assert.Equal("Hello, World!", HelloWorld.Hello()) 7 | End Sub 8 | End Class -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Code owners 2 | .github/CODEOWNERS @exercism/maintainers-admin 3 | 4 | # Changes to `fetch-configlet` should be made in the `exercism/configlet` repo 5 | bin/fetch-configlet @exercism/maintainers-admin 6 | 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | 5 | # Keep dependencies for GitHub Actions up-to-date 6 | - package-ecosystem: 'github-actions' 7 | directory: '/' 8 | schedule: 9 | interval: 'monthly' 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Exercism Visual Basic Track 2 | 3 | Exercism problems in Visual Basic 4 | 5 | ## Contributing Guide 6 | 7 | Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data) 8 | -------------------------------------------------------------------------------- /exercises/practice/pangram/Pangram.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Pangram 4 | Public Function IsPangram(ByVal input As String) As Boolean 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/PigLatin.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module PigLatin 4 | Public Function Translate(ByVal word As String) As String 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/proverb/Proverb.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Proverb 4 | Public Function Recite(ByVal subjects As String()) As String() 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/zipper/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise deals with custom equality. For more information see [this page.](http://www.java2s.com/Tutorial/VB/0120__Class-Module/OverridingtheEqualsMethod.htm) 4 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/CryptoSquare.vb: -------------------------------------------------------------------------------- 1 | Module Crypto 2 | Public Function Ciphertext(ByVal plaintext As String) As String 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Function 5 | End Module 6 | -------------------------------------------------------------------------------- /exercises/practice/ocr-numbers/OcrNumbers.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module OcrNumbers 4 | Public Function Convert(ByVal input As String) As String 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/sublist/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | To be able to compare data, the IComparable interface is used. 4 | For more information, see [this page](https://docs.microsoft.com/en-us/dotnet/api/system.icomparable 5 | -------------------------------------------------------------------------------- /exercises/practice/leap/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Public Module Leap 2 | Public Function IsLeapYear(ByVal year As Integer) As Boolean 3 | Return year Mod 400 = 0 OrElse (year Mod 100 <> 0 AndAlso year Mod 4 = 0) 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/prime-factors/PrimeFactors.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module PrimeFactors 4 | Public Function Factors(ByVal number As Long) As Long() 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires the use of a Dictionary. For more information see 4 | [this page.](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2 5 | -------------------------------------------------------------------------------- /exercises/practice/say/Say.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Say 4 | Public Function InEnglish(ByVal number As Long) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/leap/Leap.vb: -------------------------------------------------------------------------------- 1 | Public Module Leap 2 | Public Function IsLeapYear(ByVal year As Integer) As Boolean 3 | Throw New NotImplementedException("Delete this statement and write your own implementation here") 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/luhn/Luhn.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Luhn 4 | Public Function IsValid(ByVal number As String) As Boolean 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/NthPrime.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module NthPrime 4 | Public Function Prime(ByVal number As Integer) 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/poker/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Pick the best hand(s) from a list of poker hands. 4 | 5 | See [Wikipedia][poker-hands] for an overview of poker hands. 6 | 7 | [poker-hands]: https://en.wikipedia.org/wiki/List_of_poker_hands 8 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | For this exercise, you will need to create a set of factors using tuples. 4 | For more information on tuples, see [this link](https://docs.microsoft.com/en-us/dotnet/api/system.tuple). 5 | -------------------------------------------------------------------------------- /exercises/practice/acronym/Acronym.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Acronym 4 | Public Function Abbreviate(ByVal phrase As String) As String 5 | Throw New NotImplementedException("Please implement this function") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/clock/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Implement a clock that handles times without dates. 4 | 5 | You should be able to add and subtract minutes to it. 6 | 7 | Two clocks that represent the same time should be equal to each other. 8 | -------------------------------------------------------------------------------- /exercises/practice/diamond/Diamond.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Diamond 4 | Public Function Rows(ByVal letter As String) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/PhoneNumber.vb: -------------------------------------------------------------------------------- 1 | Public Class PhoneNumber 2 | Public Shared Function Clean(ByVal phoneNumber As String) As String 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Function 5 | End Class 6 | -------------------------------------------------------------------------------- /exercises/practice/sieve/Sieve.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Sieve 4 | Public Function Primes(ByVal limit As Integer) As Integer() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/wordy/Wordy.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Wordy 4 | Public Function Answer(ByVal question As String) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/Gigasecond.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Gigasecond 4 | Public Function Add(ByVal moment As Date) As Date 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/isogram/Isogram.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Isogram 4 | Public Function IsIsogram(ByVal word As String) As Boolean 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/ProteinTranslation.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ProteinTranslation 4 | Public Function Proteins(ByVal strand As String) As String() 5 | Throw New NotImplementedException() 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/square-root/SquareRoot.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module SquareRoot 4 | Public Function SquareRoot(ByVal radicand As Integer) 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module -------------------------------------------------------------------------------- /exercises/practice/darts/Darts.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Darts 4 | Public Function Score(ByVal x As Double, ByVal y As Double) As Integer 5 | Throw New NotImplementedException("You need to implement this function") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to perform calculations on large numbers. To correctly represent large numbers, the 4 | [BigInteger](https://docs.microsoft.com/en-us/dotnet/api/system.numerics.biginteger 5 | -------------------------------------------------------------------------------- /exercises/practice/hamming/Hamming.vb: -------------------------------------------------------------------------------- 1 | Public Module Hamming 2 | Public Function Distance(ByVal firstStrand As String, ByVal secondStrand As String) As Integer 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Function 5 | End Module -------------------------------------------------------------------------------- /exercises/practice/raindrops/Raindrops.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Raindrops 4 | Public Function Convert(ByVal number As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/rectangles/Rectangles.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Rectangles 4 | Public Function Count(ByVal rows As String()) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to write an extension method. For more information, see [this page](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods). 4 | -------------------------------------------------------------------------------- /exercises/practice/transpose/Transpose.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Transpose 4 | Public Function [String](ByVal input As String) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/EliudsEggs.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module EliudsEggs 4 | Public Function EggCount(ByVal number As Integer) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to reverse a given string. 4 | 5 | Some examples: 6 | 7 | - Turn `"stressed"` into `"desserts"`. 8 | - Turn `"strops"` into `"sports"`. 9 | - Turn `"racecar"` into `"racecar"`. 10 | -------------------------------------------------------------------------------- /exercises/practice/flower-field/FlowerField.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module FlowerField 4 | Public Function Annotate(ByVal garden As String()) As String() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/IsbnVerifier.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module IsbnVerifier 4 | Public Function IsValid(ByVal number As String) As Boolean 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/Minesweeper.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Minesweeper 4 | Public Function Annotate(ByVal input As String()) As String() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Linq 2 | 3 | Public Module ReverseString 4 | Public Function Reverse(ByVal inputString As String) As String 5 | Return New String(inputString.ToCharArray().Reverse().ToArray()) 6 | End Function 7 | End Module -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/ScrabbleScore.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ScrabbleScore 4 | Public Function Score(ByVal input As String) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/variable-length-quantity/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to use bitwise operations. For more information, see [this page](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators). 4 | -------------------------------------------------------------------------------- /exercises/practice/poker/Poker.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module Poker 5 | Public Function BestHands(ByVal hands As IEnumerable(Of String)) As IEnumerable(Of String) 6 | Throw New NotImplementedException() 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/ReverseString.vb: -------------------------------------------------------------------------------- 1 | Public Module ReverseString 2 | Public Function Reverse(ByVal inputString As String) As String 3 | Throw New NotImplementedException("Delete this statement and write your own implementation here") 4 | End Function 5 | End Module 6 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/SpiralMatrix.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class SpiralMatrix 4 | Public Shared Function GetMatrix(ByVal size As Integer) As Integer(,) 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Class 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/ResistorColorDuo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ResistorColorDuo 4 | Public Function Value(ByVal colors As String()) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/ResistorColorTrio.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ResistorColorTrio 4 | Public Function Label(ByVal colors As String()) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/RnaTranscription.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module RnaTranscription 4 | Public Function ToRna(ByVal nucleotide As String) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/series/Series.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Series 4 | Public Function Slices(ByVal numbers As String, ByVal sliceLength As Integer) As String() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/BeerSong.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module BeerSong 4 | Public Function Recite(ByVal startBottles As Integer, ByVal takeDown As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/change/Change.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Change 4 | Public Function FindFewestCoins(ByVal coins As Integer(), ByVal target As Integer) As Integer() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/grep/Grep.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Grep 4 | Public Function Match(ByVal pattern As String, ByVal flags As String, ByVal files As String()) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/SecretHandshake.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module SecretHandshake 4 | Public Function Commands(ByVal commandValue As Integer) As String() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/tournament/Tournament.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.IO 3 | 4 | Public Module Tournament 5 | Public Sub Tally(ByVal inStream As Stream, ByVal outStream As Stream) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Sub 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/ArmstrongNumbers.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ArmstrongNumbers 4 | Public Function IsArmstrongNumber(ByVal number As Integer) As Boolean 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/BinarySearch.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module BinarySearch 4 | Public Function Find(ByVal input As Integer(), ByVal value As Integer) As Integer 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/bottle-song/BottleSong.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module BottleSong 4 | Public Function Recite(ByVal startBottles As Integer, ByVal takeDown As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/MatchingBrackets.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | 3 | Public Module MatchingBrackets 4 | Public Function IsPaired(ByVal input As String) As Boolean 5 | Throw New NotImplementedException("You need to implement this function") 6 | End Function 7 | End Module -------------------------------------------------------------------------------- /.github/workflows/configlet.yml: -------------------------------------------------------------------------------- 1 | name: Configlet 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | configlet: 15 | uses: exercism/github-actions/.github/workflows/configlet.yml@main 16 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Scrabble][wikipedia] is a word game where players place letter tiles on a board to form words. 4 | Each letter has a value. 5 | A word's score is the sum of its letters' values. 6 | 7 | [wikipedia]: https://en.wikipedia.org/wiki/Scrabble 8 | -------------------------------------------------------------------------------- /exercises/practice/wordy/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | - To parse the text, you could try to use the [Sprache](https://github.com/sprache/Sprache/blob/develop/README.md) library. You can also find a good tutorial [here](https://www.thomaslevesque.com/2017/02/23/easy-text-parsing-in-c-with-sprache/). 4 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/RotationalCipher.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module RotationalCipher 4 | Public Function Rotate(ByVal text As String, ByVal shiftKey As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to process a collection of data. You can simplify your code by using LINQ (Language Integrated Query). 4 | For more information, see [this page](https://docs.microsoft.com/en-us/dotnet/articles/standard/using-linq). 5 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to handle data related to currency and money. A normal approuch is to use the [Decimal](https://docs.microsoft.com/en-us/dotnet/api/system.decimal 4 | Note though that you then only store the numeric value of a currency. 5 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/CollatzConjecture.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module CollatzConjecture 4 | Public Function Steps(ByVal number As Integer) As Integer 5 | Throw New NotImplementedException("Delete this statement and write your own implementation here") 6 | End Function 7 | End Module -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to process a collection of data. You can simplify your code by using LINQ (Language Integrated Query). 4 | For more information, see [this page](https://docs.microsoft.com/en-us/dotnet/articles/standard/using-linq). 5 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/FlattenArray.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections 3 | 4 | Public Module FlattenArray 5 | Public Function Flatten(ByVal input As IEnumerable) As IEnumerable 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | This exercise requires you to process a collection of data. You can simplify your code by using lazy sequences to improve performance. 4 | For more information, see [this page](https://xosfaere.wordpress.com/2010/03/21/lazy-evaluation-in-csharp/). 5 | -------------------------------------------------------------------------------- /exercises/practice/book-store/BookStore.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module BookStore 5 | Public Function Total(ByVal books As IEnumerable(Of Integer)) As Decimal 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/RomanNumerals.vb: -------------------------------------------------------------------------------- 1 | Imports System.Runtime.CompilerServices 2 | 3 | Module RomanNumeralExtension 4 | 5 | Function ToRoman(ByVal value As Integer) As String 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You work for a company that makes an online, fantasy-survival game. 4 | 5 | When a player finishes a level, they are awarded energy points. 6 | The amount of energy awarded depends on which magical items the player found while exploring that level. 7 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to count the number of 1 bits in the binary representation of a number. 4 | 5 | ## Restrictions 6 | 7 | Keep your hands off that bit-count functionality provided by your standard library! 8 | Solve this one yourself using other basic tools instead. 9 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/LargestSeriesProduct.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module LargestSeriesProduct 4 | Public Function GetLargestProduct(ByVal digits As String, ByVal span As Integer) As Long 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/etl/Etl.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module Etl 5 | Public Function Transform(ByVal old As Dictionary(Of Integer, String())) As Dictionary(Of String, Integer) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/word-count/WordCount.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module WordCount 5 | Public Function CountWords(ByVal phrase As String) As IDictionary(Of String, Integer) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You are working on a project to develop a train scheduling system for a busy railway network. 4 | 5 | You've been asked to develop a prototype for the train routes in the scheduling system. 6 | Each route consists of a sequence of train stations that a given train stops at. 7 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Minesweeper][wikipedia] is a popular game where the user has to find the mines using numeric hints that indicate how many mines are directly adjacent (horizontally, vertically, diagonally) to a square. 4 | 5 | [wikipedia]: https://en.wikipedia.org/wiki/Minesweeper_(video_game) 6 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/NucleotideCount.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module NucleotideCount 5 | Public Function Count(ByVal sequence As String) As IDictionary(Of Char, Integer) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a string containing brackets `[]`, braces `{}`, parentheses `()`, or any combination thereof, verify that any and all pairs are matched and nested correctly. 4 | Any other characters should be ignored. 5 | For example, `"{what is (42)}?"` is balanced and `"[text}"` is not. 6 | -------------------------------------------------------------------------------- /exercises/practice/parallel-letter-frequency/ParallelLetterFrequency.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module ParallelLetterFrequency 5 | Public Function Calculate(ByVal texts As IEnumerable(Of String)) As Dictionary(Of Char, Integer) 6 | Throw New NotImplementedException() 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/SaddlePoints.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module SaddlePoints 5 | Public Function Calculate(ByVal matrix As Integer(,)) As IEnumerable(Of (Integer, Integer)) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/.docs/instructions.append.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | The `Foldl` and `Foldr` methods are "fold" functions, which is a concept well-known in the functional programming world, but less so in the object-oriented one. If you'd like more background information, check out this [fold]() page. 4 | -------------------------------------------------------------------------------- /exercises/practice/binary/Binary.vb: -------------------------------------------------------------------------------- 1 | Public Class Binary 2 | Public Sub New(value As String) 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Sub 5 | 6 | Public Function ToDecimal() As Integer 7 | Throw New NotImplementedException("You need to implement this function") 8 | End Function 9 | End Class -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/SumOfMultiples.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module SumOfMultiples 5 | Public Function Sum(ByVal multiples As IEnumerable(Of Integer), ByVal max As Integer) As Integer 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a number n, determine what the nth prime is. 4 | 5 | By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. 6 | 7 | If your language provides methods in the standard library to deal with prime numbers, pretend they don't exist and implement them yourself. 8 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/AllYourBase.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module AllYourBase 5 | Public Function Rebase(ByVal inputBase As Integer, ByVal inputDigits As Integer(), ByVal outputBase As Integer) As Integer() 6 | Throw New NotImplementedException("You need to implement this function") 7 | End Function 8 | End Module -------------------------------------------------------------------------------- /exercises/practice/pythagorean-triplet/PythagoreanTriplet.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Module PythagoreanTriplet 5 | Public Function TripletsWithSum(ByVal sum As Integer) As IEnumerable(Of (Integer, Integer, Integer)) 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/anagram/Anagram.vb: -------------------------------------------------------------------------------- 1 | Public Class Anagram 2 | Public Sub New(baseWord As String) 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Sub 5 | 6 | Public Function Match(potentialMatches As String()) As String() 7 | Throw New NotImplementedException("You need to implement this function") 8 | End Function 9 | End Class -------------------------------------------------------------------------------- /exercises/practice/parallel-letter-frequency/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Count the frequency of letters in texts using parallel computation. 4 | 5 | Parallelism is about doing things in parallel that can also be done sequentially. 6 | A common example is counting the frequency of letters. 7 | Employ parallelism to calculate the total frequency of each letter in a list of texts. 8 | -------------------------------------------------------------------------------- /exercises/practice/bob/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Bob is a [lackadaisical][] teenager. 4 | He likes to think that he's very cool. 5 | And he definitely doesn't get excited about things. 6 | That wouldn't be cool. 7 | 8 | When people talk to him, his responses are pretty limited. 9 | 10 | [lackadaisical]: https://www.collinsdictionary.com/dictionary/english/lackadaisical 11 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/TwoFer.vb: -------------------------------------------------------------------------------- 1 | Public Module TwoFer 2 | ' In order to get the tests running, first you need to make sure the Speak method 3 | ' can be called both without any arguments and also by passing one string argument. 4 | Public Function Speak() As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | End Module 8 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Runtime.CompilerServices 2 | 3 | Module AccumulateExtensions 4 | 5 | Public Iterator Function Accumulate(Of T)(collection As IEnumerable(Of T), func As Func(Of T, T)) As IEnumerable(Of T) 6 | For Each item In collection 7 | Yield func(item) 8 | Next 9 | End Function 10 | End Module 11 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/AtbashCipher.vb: -------------------------------------------------------------------------------- 1 | Public Module Atbash 2 | Public Function Encode(arg As String) As String 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Function 5 | 6 | Public Function Decode(arg As String) As String 7 | Throw New NotImplementedException("You need to implement this function") 8 | End Function 9 | End Module -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to determine the date and time one gigasecond after a certain date. 4 | 5 | A gigasecond is one thousand million seconds. 6 | That is a one with nine zeros after it. 7 | 8 | If you were born on _January 24th, 2015 at 22:00 (10:00:00pm)_, then you would be a gigasecond old on _October 2nd, 2046 at 23:46:40 (11:46:40pm)_. 9 | -------------------------------------------------------------------------------- /exercises/practice/word-count/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You teach English as a foreign language to high school students. 4 | 5 | You've decided to base your entire curriculum on TV shows. 6 | You need to analyze which words are used, and how often they're repeated. 7 | 8 | This will let you choose the simplest shows to start with, and to gradually increase the difficulty as time passes. 9 | -------------------------------------------------------------------------------- /exercises/practice/grains/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | There once was a wise servant who saved the life of a prince. 4 | The king promised to pay whatever the servant could dream up. 5 | Knowing that the king loved chess, the servant told the king he would like to have grains of wheat. 6 | One grain on the first square of a chessboard, with the number of grains doubling on each successive square. 7 | -------------------------------------------------------------------------------- /exercises/practice/bob/.meta/description.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Bob is a lackadaisical teenager. In conversation, his responses are very limited. 4 | 5 | Bob answers 'Sure.' if you ask him a question. 6 | 7 | He answers 'Whoa, chill out!' if you yell at him. 8 | 9 | He says 'Fine. Be that way!' if you address him without actually saying 10 | anything. 11 | 12 | He answers 'Whatever.' to anything else. 13 | -------------------------------------------------------------------------------- /exercises/practice/bowling/Bowling.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class BowlingGame 4 | Public Sub RollMethod(ByVal pins As Integer) 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Sub 7 | 8 | Public Function Score() As Integer? 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Class 12 | -------------------------------------------------------------------------------- /exercises/shared/.docs/debug.md: -------------------------------------------------------------------------------- 1 | # Debug 2 | 3 | When a test fails, a message is displayed describing what went wrong and for which input. You can also use the fact that any [console output][dotnetperls.com-console-vbnet] will be shown too. You can write to the console using: 4 | 5 | ```vbnet 6 | Console.WriteLine("Debug message"); 7 | ``` 8 | 9 | [dotnetperls.com-console-vbnet]: https://www.dotnetperls.com/console-vbnet -------------------------------------------------------------------------------- /exercises/practice/grains/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Calculate the number of grains of wheat on a chessboard. 4 | 5 | A chessboard has 64 squares. 6 | Square 1 has one grain, square 2 has two grains, square 3 has four grains, and so on, doubling each time. 7 | 8 | Write code that calculates: 9 | 10 | - the number of grains on a given square 11 | - the total number of grains on the chessboard 12 | -------------------------------------------------------------------------------- /exercises/practice/grains/Grains.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Grains 4 | Public Function Square(ByVal n As Integer) As ULong 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Total() As ULong 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/high-scores/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Manage a game player's High Score list. 4 | 5 | Your task is to build a high-score component of the classic Frogger game, one of the highest selling and most addictive games of all time, and a classic of the arcade era. 6 | Your task is to write methods that return the highest score from the list, the last added score and the three highest scores. 7 | -------------------------------------------------------------------------------- /exercises/practice/ledger/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Ledger.vb" 8 | ], 9 | "test": [ 10 | "LedgerTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Ledger.vbproj" 17 | ] 18 | }, 19 | "blurb": "Refactor a ledger printer." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You work for a government agency that has intercepted a series of encrypted communication signals from a group of bank robbers. 4 | The signals contain a long sequence of digits. 5 | Your team needs to use various digital signal processing techniques to analyze the signals and identify any patterns that may indicate the planning of a heist. 6 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ListOps.vb" 8 | ], 9 | "test": [ 10 | "ListOpsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ListOps.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement basic list operations." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to figure out if a sentence is a pangram. 4 | 5 | A pangram is a sentence using every letter of the alphabet at least once. 6 | It is case insensitive, so it doesn't matter if a letter is lower-case (e.g. `k`) or upper-case (e.g. `K`). 7 | 8 | For this exercise, a sentence is a pangram if it contains each of the 26 letters in the English alphabet. 9 | -------------------------------------------------------------------------------- /exercises/practice/flower-field/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "contributors": [ 6 | "BNAndras" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "FlowerField.vb" 11 | ], 12 | "test": [ 13 | "FlowerFieldTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ] 18 | }, 19 | "blurb": "Mark all the flowers in a garden." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/RobotName.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class Robot 4 | Public ReadOnly Property Name As String 5 | Get 6 | Throw New NotImplementedException("You need to implement this function.") 7 | End Get 8 | End Property 9 | 10 | Public Sub Reset() 11 | Throw New NotImplementedException("You need to implement this function.") 12 | End Sub 13 | End Class 14 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | Imports System.Linq 3 | 4 | Public Module SumOfMultiples 5 | Public Function Sum(ByVal multiples As IEnumerable(Of Integer), ByVal max As Integer) As Integer 6 | Return Enumerable.Where(Enumerable.Range(1, max - 1), Function(i) Enumerable.Any(multiples, Function(m) m <> 0 AndAlso i Mod m = 0)).Sum() 7 | End Function 8 | End Module 9 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Reversing strings (reading them from right to left, rather than from left to right) is a surprisingly common task in programming. 4 | 5 | For example, in bioinformatics, reversing the sequence of DNA or RNA strings is often important for various analyses, such as finding complementary strands or identifying palindromic sequences that have biological significance. 6 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "ScaleGenerator.vb" 9 | ], 10 | "test": [ 11 | "ScaleGeneratorTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ] 16 | }, 17 | "blurb": "Generate musical scales, given a starting note and a set of intervals." 18 | } 19 | -------------------------------------------------------------------------------- /.github/workflows/sync-labels.yml: -------------------------------------------------------------------------------- 1 | name: Tools 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - .github/labels.yml 9 | - .github/workflows/sync-labels.yml 10 | workflow_dispatch: 11 | schedule: 12 | - cron: 0 0 1 * * # First day of each month 13 | 14 | permissions: 15 | issues: write 16 | 17 | jobs: 18 | sync-labels: 19 | uses: exercism/github-actions/.github/workflows/labels.yml@main 20 | -------------------------------------------------------------------------------- /exercises/practice/rectangles/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Rectangles.vb" 8 | ], 9 | "test": [ 10 | "RectanglesTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Rectangles.vbproj" 17 | ] 18 | }, 19 | "blurb": "Count the rectangles in an ASCII diagram." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/say/Say.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/zipper/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "Zipper.vb" 9 | ], 10 | "test": [ 11 | "ZipperTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "Zipper.vbproj" 18 | ] 19 | }, 20 | "blurb": "Creating a zipper for a binary tree." 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Minesweeper.vb" 8 | ], 9 | "test": [ 10 | "MinesweeperTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Minesweeper.vbproj" 17 | ] 18 | }, 19 | "blurb": "Add the numbers to a minesweeper board." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/poker/Poker.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/tree-building/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "TreeBuilding.vb" 8 | ], 9 | "test": [ 10 | "TreeBuildingTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "TreeBuilding.vbproj" 17 | ] 18 | }, 19 | "blurb": "Refactor a tree building algorithm." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/bob/Bob.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/change/Change.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/clock/Clock.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/darts/Darts.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/error-handling/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Implement various kinds of error handling and resource management. 4 | 5 | An important point of programming is how to handle errors and close resources even if errors occur. 6 | 7 | This exercise requires you to handle various errors. 8 | Because error handling is rather programming language specific you'll have to refer to the tests for your track to see what's exactly required. 9 | -------------------------------------------------------------------------------- /exercises/practice/etl/Etl.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/grep/Grep.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/house/House.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/leap/Leap.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/luhn/Luhn.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/ResistorColor.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ResistorColor 4 | 5 | Public Function ColorCode(ByVal color As String) As Integer 6 | Throw New NotImplementedException("You need to implement this function") 7 | End Function 8 | 9 | Public Function Colors() As String() 10 | Throw New NotImplementedException("You need to implement this function") 11 | End Function 12 | 13 | End Module -------------------------------------------------------------------------------- /exercises/practice/rest-api/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "RestApi.vb" 9 | ], 10 | "test": [ 11 | "RestApiTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "RestApi.vbproj" 18 | ] 19 | }, 20 | "blurb": "Implement a RESTful API for tracking IOUs." 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/rest-api/RestApi.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/sieve/Sieve.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/sublist/Sublist.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/triangle/Triangle.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/wordy/Wordy.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/yacht/Yacht.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/ZebraPuzzleTests.vb: -------------------------------------------------------------------------------- 1 | Imports Xunit 2 | 3 | Public Class ZebraPuzzleTests 4 | 5 | Public Sub Resident_who_drinks_water() 6 | Assert.Equal(Nationality.Norwegian, DrinksWater()) 7 | End Sub 8 | 9 | 10 | Public Sub Resident_who_owns_zebra() 11 | Assert.Equal(Nationality.Japanese, OwnsZebra()) 12 | End Sub 13 | End Class 14 | -------------------------------------------------------------------------------- /exercises/practice/zipper/Zipper.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/acronym/Acronym.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/anagram/Anagram.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/binary/Binary.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/bowling/Bowling.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/diamond/Diamond.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/grains/Grains.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/hamming/Hamming.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/isogram/Isogram.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/ledger/Ledger.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/list-ops/ListOps.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/matrix/Matrix.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/meetup/Meetup.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/pangram/Pangram.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/proverb/Proverb.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/RobotName.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/series/Series.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/square-root/SquareRoot.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/tournament/Tournament.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/transpose/Transpose.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/two-bucket/TwoBucket.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/TwoFer.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/accumulate/Accumulate.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/AffineCipher.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/allergies/Allergies.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/BeerSong.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/BinarySearch.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/book-store/BookStore.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/food-chain/FoodChain.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/Gigasecond.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/grade-school/GradeSchool.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/NthPrime.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/PigLatin.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/queen-attack/QueenAttack.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Public Module Raindrops 2 | Public Function Convert(ByVal number As Integer) As String 3 | Dim result = "" 4 | If number Mod 3 = 0 Then result += "Pling" 5 | If number Mod 5 = 0 Then result += "Plang" 6 | If number Mod 7 = 0 Then result += "Plong" 7 | If String.IsNullOrEmpty(result) Then result = number.ToString() 8 | Return result 9 | End Function 10 | End Module 11 | -------------------------------------------------------------------------------- /exercises/practice/raindrops/Raindrops.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/rectangles/Rectangles.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/SimpleCipher.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/space-age/SpaceAge.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/tree-building/TreeBuilding.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/word-count/WordCount.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/ZebraPuzzle.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/AllYourBase.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/AtbashCipher.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/BankAccount.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/bottle-song/BottleSong.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/crypto-square/CryptoSquare.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/DiffieHellman.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/dnd-character/DndCharacter.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/EliudsEggs.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/FlattenArray.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/flower-field/FlowerField.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/game-of-life/GameOfLife.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/HelloWorld.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/high-scores/HighScores.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/isbn-verifier/IsbnVerifier.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/LinkedList.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/minesweeper/Minesweeper.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/ocr-numbers/OcrNumbers.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/PerfectNumbers.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | Imports System.Linq 4 | 5 | Public Enum Classification 6 | Perfect 7 | Abundant 8 | Deficient 9 | End Enum 10 | 11 | Public Module PerfectNumbers 12 | Public Function Classify(ByVal number As Integer) As Classification 13 | Throw New NotImplementedException("You need to implement this function") 14 | End Function 15 | End Module 16 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/PhoneNumber.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/PrimeFactors.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/RobotSimulator.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/RomanNumerals.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/SaddlePoints.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/ScaleGenerator.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/SpiralMatrix.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/twelve-days/TwelveDays.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | workflow_dispatch: 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-24.04 12 | steps: 13 | - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 14 | - uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 15 | with: 16 | dotnet-version: "9.0.200" 17 | - run: ./test.ps1 18 | shell: pwsh 19 | -------------------------------------------------------------------------------- /exercises/practice/circular-buffer/CircularBuffer.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/error-handling/ErrorHandling.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/perfect-numbers/PerfectNumbers.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-trio/ResistorColorTrio.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/ResistorColor.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/reverse-string/ReverseString.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/RunLengthEncoding.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module RunLengthEncoding 4 | Public Function Encode(ByVal input As String) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Decode(ByVal input As String) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/ScrabbleScore.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/simple-linked-list/SimpleLinkedList.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/SumOfMultiples.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/tournament/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "Tournament.vb" 9 | ], 10 | "test": [ 11 | "TournamentTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "Tournament.vbproj" 18 | ] 19 | }, 20 | "blurb": "Tally the results of a small football competition." 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/ArmstrongNumbers.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/CollatzConjecture.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/house/House.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module House 4 | Public Function Recite(ByVal verseNumber As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Recite(ByVal startVerse As Integer, ByVal endVerse As Integer) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/isogram/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Determine if a word or phrase is an isogram. 4 | 5 | An isogram (also known as a "non-pattern 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 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/MatchingBrackets.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/NucleotideCount.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/RailFenceCipher.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/relative-distance/RelativeDistance.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/ResistorColorDuo.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/RnaTranscription.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/RotationalCipher.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/SecretHandshake.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/sublist/Sublist.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Enum SublistType 5 | Equal 6 | Unequal 7 | Superlist 8 | Sublist 9 | End Enum 10 | 11 | Public Module Sublist 12 | Public Function Classify(Of T As IComparable)(ByVal list1 As List(Of T), ByVal list2 As List(Of T)) As SublistType 13 | Throw New NotImplementedException("You need to implement this function.") 14 | End Function 15 | End Module 16 | -------------------------------------------------------------------------------- /exercises/practice/clock/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Clock.vb" 8 | ], 9 | "test": [ 10 | "ClockTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Clock.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement a clock that handles times without dates.", 20 | "source": "Pairing session with Erin Drummond" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/DifferenceOfSquares.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/error-handling/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ErrorHandling.vb" 8 | ], 9 | "test": [ 10 | "ErrorHandlingTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ErrorHandling.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement various kinds of error handling and resource management." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/ProteinTranslation.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/pythagorean-triplet/PythagoreanTriplet.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/RunLengthEncoding.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/sublist/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "Sublist.vb" 9 | ], 10 | "test": [ 11 | "SublistTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "Sublist.vbproj" 18 | ] 19 | }, 20 | "blurb": "Write a function to determine if a list is a sublist of another list." 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "AllYourBase.vb" 8 | ], 9 | "test": [ 10 | "AllYourBaseTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "AllYourBase.vbproj" 17 | ] 18 | }, 19 | "blurb": "Convert a number, represented as a sequence of digits in one base, to any other base." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/food-chain/FoodChain.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module FoodChain 4 | Public Function Recite(ByVal verseNumber As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Recite(ByVal startVerse As Integer, ByVal endVerse As Integer) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/isogram/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | 3 | Public Module Isogram 4 | Public Function IsIsogram(ByVal word As String) As Boolean 5 | Dim letters = New HashSet(Of Char)() 6 | 7 | For Each c In word.ToLowerInvariant() 8 | If Char.IsLetter(c) AndAlso Not letters.Add(c) Then 9 | Return False 10 | End If 11 | Next 12 | 13 | Return True 14 | End Function 15 | End Module 16 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/LargestSeriesProduct.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/linked-list/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "LinkedList.vb" 8 | ], 9 | "test": [ 10 | "LinkedListTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "LinkedList.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement a doubly linked list.", 20 | "source": "Classic computer science topic" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | 3 | Public Class Pangram 4 | Public Shared Function IsPangram(ByVal input As String) As Boolean 5 | Dim chars = New HashSet(Of Char)() 6 | 7 | For Each c In input.ToLowerInvariant() 8 | If c >= "a"c AndAlso c <= "z"c Then 9 | chars.Add(c) 10 | End If 11 | Next 12 | 13 | Return chars.Count = 26 14 | End Function 15 | End Class 16 | -------------------------------------------------------------------------------- /exercises/practice/parallel-letter-frequency/ParallelLetterFrequency.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/sieve/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You bought a big box of random computer parts at a garage sale. 4 | You've started putting the parts together to build custom computers. 5 | 6 | You want to test the performance of different combinations of parts, and decide to create your own benchmarking program to see how your computers compare. 7 | You choose the famous "Sieve of Eratosthenes" algorithm, an ancient algorithm, but one that should push your computers to the limits. 8 | -------------------------------------------------------------------------------- /exercises/practice/twelve-days/TwelveDays.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module TwelveDays 4 | Public Function Recite(ByVal verseNumber As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Recite(ByVal startVerse As Integer, ByVal endVerse As Integer) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/variable-length-quantity/VariableLengthQuantity.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net9.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /exercises/practice/high-scores/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "HighScores.vb" 8 | ], 9 | "test": [ 10 | "HighScoresTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "HighScores.vbproj" 17 | ] 18 | }, 19 | "blurb": "Manage a player's High Score list.", 20 | "source": "Tribute to the eighties' arcade game Frogger" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/matching-brackets/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "MatchingBrackets.vb" 8 | ], 9 | "test": [ 10 | "MatchingBracketsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "MatchingBrackets.vbproj" 17 | ] 18 | }, 19 | "blurb": "Make sure the brackets and braces all match.", 20 | "source": "Ginna Baker" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/scale-generator/ScaleGenerator.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ScaleGenerator 4 | Public Function Chromatic(ByVal tonic As String) As String() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Interval(ByVal tonic As String, ByVal pattern As String) As String() 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | A shipment of emergency supplies has arrived, but there's a problem. 4 | To protect from damage, the items — flashlights, first-aid kits, blankets — are packed inside boxes, and some of those boxes are nested several layers deep inside other boxes! 5 | 6 | To be prepared for an emergency, everything must be easily accessible in one box. 7 | Can you unpack all the supplies and place them into a single box, so they're ready when needed most? 8 | -------------------------------------------------------------------------------- /exercises/practice/matrix/Matrix.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class Matrix 4 | Public Sub New(ByVal input As String) 5 | End Sub 6 | 7 | Public Function Row(ByVal row As Integer) As Integer() 8 | Throw New NotImplementedException("You need to implement this function.") 9 | End Function 10 | 11 | Public Function Column(ByVal col As Integer) As Integer() 12 | Throw New NotImplementedException("You need to implement this function.") 13 | End Function 14 | End Class 15 | -------------------------------------------------------------------------------- /exercises/practice/protein-translation/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ProteinTranslation.vb" 8 | ], 9 | "test": [ 10 | "ProteinTranslationTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ProteinTranslation.vbproj" 17 | ] 18 | }, 19 | "blurb": "Translate RNA sequences into proteins.", 20 | "source": "Tyler Long" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/variable-length-quantity/VariableLengthQuantity.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module VariableLengthQuantity 4 | Public Function Encode(ByVal numbers As UInteger()) As UInteger() 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Decode(ByVal bytes As UInteger()) As UInteger() 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/acronym/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Acronym.vb" 8 | ], 9 | "test": [ 10 | "AcronymTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Acronym.vbproj" 17 | ] 18 | }, 19 | "blurb": "Convert a long phrase to its acronym.", 20 | "source": "Julien Vanier", 21 | "source_url": "https://github.com/monkbroc" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/series/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Linq 3 | 4 | Public Module Series 5 | Public Function Slices(ByVal numbers As String, ByVal sliceLength As Integer) As String() 6 | If numbers.Length = 0 OrElse sliceLength <= 0 OrElse sliceLength > numbers.Length Then Throw New ArgumentException() 7 | 8 | Return Enumerable.Range(0, numbers.Length - sliceLength + 1).[Select](Function(i) numbers.Substring(i, sliceLength)).ToArray() 9 | End Function 10 | End Module 11 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | In some English accents, when you say "two for" quickly, it sounds like "two fer". 4 | Two-for-one is a way of saying that if you buy one, you also get one for free. 5 | So the phrase "two-fer" often implies a two-for-one offer. 6 | 7 | Imagine a bakery that has a holiday offer where you can buy two cookies for the price of one ("two-fer one!"). 8 | You take the offer and (very generously) decide to give the extra cookie to someone else in the queue. 9 | -------------------------------------------------------------------------------- /exercises/practice/change/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Determine the fewest number of coins to give a customer so that the sum of their values equals the correct amount of change. 4 | 5 | ## Examples 6 | 7 | - An amount of 15 with available coin values [1, 5, 10, 25, 100] should return one coin of value 5 and one coin of value 10, or [5, 10]. 8 | - An amount of 40 with available coin values [1, 5, 10, 25, 100] should return one coin of value 5, one coin of value 10, and one coin of value 25, or [5, 10, 25]. 9 | -------------------------------------------------------------------------------- /exercises/practice/game-of-life/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Conway's Game of Life][game-of-life] is a fascinating cellular automaton created by the British mathematician John Horton Conway in 1970. 4 | 5 | The game consists of a two-dimensional grid of cells that can either be "alive" or "dead." 6 | 7 | After each generation, the cells interact with their eight neighbors via a set of rules, which define the new generation. 8 | 9 | [game-of-life]: https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life 10 | -------------------------------------------------------------------------------- /exercises/practice/meetup/Meetup.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Enum ScheduleType 4 | Teenth 5 | First 6 | Second 7 | Third 8 | Fourth 9 | Last 10 | End Enum 11 | 12 | Public Class Meetup 13 | Public Sub New(ByVal month As Integer, ByVal year As Integer) 14 | End Sub 15 | 16 | Public Function Day(ByVal dayOfWeek As DayOfWeek, ByVal schedule As Schedule) As Date 17 | Throw New NotImplementedException("You need to implement this function.") 18 | End Function 19 | End Class 20 | -------------------------------------------------------------------------------- /exercises/practice/pangram/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Pangram.vb" 8 | ], 9 | "test": [ 10 | "PangramTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Pangram.vbproj" 17 | ] 18 | }, 19 | "blurb": "Determine if a sentence is a pangram.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Pangram" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/parallel-letter-frequency/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ParallelLetterFrequency.vb" 8 | ], 9 | "test": [ 10 | "ParallelLetterFrequencyTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ParallelLetterFrequency.vbproj" 17 | ] 18 | }, 19 | "blurb": "Count the frequency of letters in texts using parallel computation." 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/relative-distance/RelativeDistance.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module RelativeDistance 4 | Public Function DegreesOfSeparation( 5 | ByVal familyTree As Dictionary(Of String, String()), 6 | ByVal personA As String, 7 | ByVal personB As String) As Integer 8 | Throw New NotImplementedException("You need to implement this function.") 9 | End Function 10 | End Module 11 | -------------------------------------------------------------------------------- /exercises/practice/robot-name/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "RobotName.vb" 9 | ], 10 | "test": [ 11 | "RobotNameTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "RobotName.vbproj" 18 | ] 19 | }, 20 | "blurb": "Manage robot factory settings.", 21 | "source": "A debugging session with Paul Blackwell at gSchool." 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You are starting a secret coding club with some friends and friends-of-friends. 4 | Not everyone knows each other, so you and your friends have decided to create a secret handshake that you can use to recognize that someone is a member. 5 | You don't want anyone who isn't in the know to be able to crack the code. 6 | 7 | You've designed the code so that one person says a number between 1 and 31, and the other person turns it into a series of actions. 8 | -------------------------------------------------------------------------------- /exercises/practice/isogram/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Isogram.vb" 8 | ], 9 | "test": [ 10 | "IsogramTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Isogram.vbproj" 17 | ] 18 | }, 19 | "blurb": "Determine if a word or phrase is an isogram.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Isogram" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module ArmstrongNumbers 4 | Public Function IsArmstrongNumber(ByVal number As Integer) As Boolean 5 | Dim numString = number.ToString() 6 | Dim length = numString.Length 7 | 8 | Dim total As Double = 0 9 | For i = 0 To length - 1 10 | total += Math.Pow(Integer.Parse(numString(i).ToString()), length) 11 | Next 12 | 13 | Return number = CInt(total) 14 | End Function 15 | End Module 16 | -------------------------------------------------------------------------------- /exercises/practice/bank-account/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "BankAccount.vb" 8 | ], 9 | "test": [ 10 | "BankAccountTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "BankAccount.vbproj" 17 | ] 18 | }, 19 | "blurb": "Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!" 20 | } 21 | -------------------------------------------------------------------------------- /exercises/practice/meetup/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Meetup.vb" 8 | ], 9 | "test": [ 10 | "MeetupTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Meetup.vbproj" 17 | ] 18 | }, 19 | "blurb": "Calculate the date of meetups.", 20 | "source": "Jeremy Hinegardner mentioned a Boulder meetup that happens on the Wednesteenth of every month" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/darts/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Darts.vb" 8 | ], 9 | "test": [ 10 | "DartsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Darts.vbproj" 17 | ] 18 | }, 19 | "blurb": "Calculate the points scored in a single toss of a Darts game.", 20 | "source": "Inspired by an exercise created by a professor Della Paolera in Argentina" 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/etl/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | 3 | Public Module Etl 4 | Public Function Transform(ByVal old As Dictionary(Of Integer, String())) As Dictionary(Of String, Integer) 5 | Dim transformed = New Dictionary(Of String, Integer)() 6 | 7 | For Each pair In old 8 | For Each item In pair.Value 9 | transformed.Add(item.ToLower(), pair.Key) 10 | Next 11 | Next 12 | 13 | Return transformed 14 | End Function 15 | End Module 16 | -------------------------------------------------------------------------------- /exercises/practice/game-of-life/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "GameOfLife.vb" 8 | ], 9 | "test": [ 10 | "GameOfLifeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "GameOfLife.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement Conway's Game of Life.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/RailFenceCipher.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class RailFenceCipher 4 | Public Sub New(ByVal rails As Integer) 5 | End Sub 6 | 7 | Public Function Encode(ByVal input As String) As String 8 | Throw New NotImplementedException("You need to implement this function.") 9 | End Function 10 | 11 | Public Function Decode(ByVal input As String) As String 12 | Throw New NotImplementedException("You need to implement this function.") 13 | End Function 14 | End Class 15 | -------------------------------------------------------------------------------- /exercises/practice/robot-simulator/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "RobotSimulator.vb" 9 | ], 10 | "test": [ 11 | "RobotSimulatorTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "RobotSimulator.vbproj" 18 | ] 19 | }, 20 | "blurb": "Write a robot simulator.", 21 | "source": "Inspired by an interview question at a famous company." 22 | } 23 | -------------------------------------------------------------------------------- /.github/workflows/ping-cross-track-maintainers-team.yml: -------------------------------------------------------------------------------- 1 | name: Ping cross-track maintainers team 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | 8 | permissions: 9 | pull-requests: write 10 | 11 | jobs: 12 | ping: 13 | if: github.repository_owner == 'exercism' # Stops this job from running on forks 14 | uses: exercism/github-actions/.github/workflows/ping-cross-track-maintainers-team.yml@main 15 | secrets: 16 | github_membership_token: ${{ secrets.COMMUNITY_CONTRIBUTIONS_WORKFLOW_TOKEN }} 17 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Your parents have challenged you and your sibling to a game of two-on-two basketball. 4 | Confident they'll win, they let you score the first couple of points, but then start taking over the game. 5 | Needing a little boost, you start speaking in [Pig Latin][pig-latin], which is a made-up children's language that's difficult for non-children to understand. 6 | This will give you the edge to prevail over your parents! 7 | 8 | [pig-latin]: https://en.wikipedia.org/wiki/Pig_latin 9 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/AffineCipher.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module AffineCipher 4 | Public Function Encode(ByVal plainText As String, ByVal a As Integer, ByVal b As Integer) As String 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Function 7 | 8 | Public Function Decode(ByVal cipheredText As String, ByVal a As Integer, ByVal b As Integer) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | End Module 12 | -------------------------------------------------------------------------------- /exercises/practice/spiral-matrix/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Your task is to return a square matrix of a given size. 4 | 5 | The matrix should be filled with natural numbers, starting from 1 in the top-left corner, increasing in an inward, clockwise spiral order, like these examples: 6 | 7 | ## Examples 8 | 9 | ### Spiral matrix of size 3 10 | 11 | ```text 12 | 1 2 3 13 | 8 9 4 14 | 7 6 5 15 | ``` 16 | 17 | ### Spiral matrix of size 4 18 | 19 | ```text 20 | 1 2 3 4 21 | 12 13 14 5 22 | 11 16 15 6 23 | 10 9 8 7 24 | ``` 25 | -------------------------------------------------------------------------------- /exercises/practice/zebra-puzzle/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "ZebraPuzzle.vb" 9 | ], 10 | "test": [ 11 | "ZebraPuzzleTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "ZebraPuzzle.vbproj" 18 | ] 19 | }, 20 | "blurb": "Solve the zebra puzzle.", 21 | "source": "Wikipedia", 22 | "source_url": "https://en.wikipedia.org/wiki/Zebra_Puzzle" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/allergies/Allergies.vb: -------------------------------------------------------------------------------- 1 | Public Class Allergies 2 | Public Sub New(score As Integer) 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Sub 5 | 6 | Public Function AllergicTo(allergy As String) As Boolean 7 | Throw New NotImplementedException("You need to implement this function") 8 | End Function 9 | 10 | Public Function List() As IList(Of String) 11 | Throw New NotImplementedException("You need to implement this function") 12 | End Function 13 | End Class -------------------------------------------------------------------------------- /exercises/practice/yacht/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Yacht.vb" 8 | ], 9 | "test": [ 10 | "YachtTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Yacht.vbproj" 17 | ] 18 | }, 19 | "blurb": "Score a single throw of dice in the game Yacht.", 20 | "source": "James Kilfiger, using Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Yacht_(dice_game)" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/square-root/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "SquareRoot.vb" 8 | ], 9 | "test": [ 10 | "SquareRootTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "SquareRoot.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a natural radicand, return its square root.", 20 | "source": "wolf99", 21 | "source_url": "https://github.com/exercism/problem-specifications/pull/1582" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module EliudsEggs 4 | Public Function EggCount(ByVal number As Integer) As Integer 5 | If number = 1 Then 6 | Return 0 7 | End If 8 | 9 | Dim count = 0 10 | While number > 0 11 | If (number And 1) = 1 Then 12 | count += 1 13 | End If 14 | 15 | number = number >> 1 16 | End While 17 | 18 | Return count 19 | End Function 20 | End Module 21 | -------------------------------------------------------------------------------- /exercises/practice/nth-prime/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "NthPrime.vb" 8 | ], 9 | "test": [ 10 | "NthPrimeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "NthPrime.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a number n, determine what the nth prime is.", 20 | "source": "A variation on Problem 7 at Project Euler", 21 | "source_url": "https://projecteuler.net/problem=7" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/pythagorean-triplet/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | A Pythagorean triplet is a set of three natural numbers, {a, b, c}, for which, 4 | 5 | ```text 6 | a² + b² = c² 7 | ``` 8 | 9 | and such that, 10 | 11 | ```text 12 | a < b < c 13 | ``` 14 | 15 | For example, 16 | 17 | ```text 18 | 3² + 4² = 5². 19 | ``` 20 | 21 | Given an input integer N, find all Pythagorean triplets for which `a + b + c = N`. 22 | 23 | For example, with N = 1000, there is exactly one Pythagorean triplet for which `a + b + c = 1000`: `{200, 375, 425}`. 24 | -------------------------------------------------------------------------------- /exercises/practice/flower-field/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | [Flower Field][history] is a compassionate reimagining of the popular game Minesweeper. 4 | The object of the game is to find all the flowers in the garden using numeric hints that indicate how many flowers are directly adjacent (horizontally, vertically, diagonally) to a square. 5 | "Flower Field" shipped in regional versions of Microsoft Windows in Italy, Germany, South Korea, Japan and Taiwan. 6 | 7 | [history]: https://web.archive.org/web/20020409051321fw_/http://rcm.usr.dsi.unimi.it/rcmweb/fnm/ 8 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | 3 | Public Class PrimeFactors 4 | Public Shared Function Factors(ByVal number As Long) As Long() 5 | Dim primes = New List(Of Long)() 6 | Dim divisor = 2 7 | While number > 1 8 | While number Mod divisor = 0 9 | primes.Add(divisor) 10 | number /= divisor 11 | End While 12 | divisor += 1 13 | End While 14 | Return primes.ToArray() 15 | End Function 16 | End Class 17 | -------------------------------------------------------------------------------- /exercises/practice/yacht/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Each year, something new is "all the rage" in your high school. 4 | This year it is a dice game: [Yacht][yacht]. 5 | 6 | The game of Yacht is from the same family as Poker Dice, Generala and particularly Yahtzee, of which it is a precursor. 7 | The game consists of twelve rounds. 8 | In each, five dice are rolled and the player chooses one of twelve categories. 9 | The chosen category is then used to score the throw of the dice. 10 | 11 | [yacht]: https://en.wikipedia.org/wiki/Yacht_(dice_game) 12 | -------------------------------------------------------------------------------- /exercises/practice/hamming/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Hamming.vb" 8 | ], 9 | "test": [ 10 | "HammingTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Hamming.vbproj" 17 | ] 18 | }, 19 | "blurb": "Calculate the Hamming distance between two DNA strands.", 20 | "source": "The Calculating Point Mutations problem at Rosalind", 21 | "source_url": "https://rosalind.info/problems/hamm/" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/house/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "House.vb" 8 | ], 9 | "test": [ 10 | "HouseTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "House.vbproj" 17 | ] 18 | }, 19 | "blurb": "Output the nursery rhyme 'This is the House that Jack Built'.", 20 | "source": "British nursery rhyme", 21 | "source_url": "https://en.wikipedia.org/wiki/This_Is_The_House_That_Jack_Built" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/luhn/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Luhn.vb" 8 | ], 9 | "test": [ 10 | "LuhnTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Luhn.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a number determine whether or not it is valid per the Luhn formula.", 20 | "source": "The Luhn Algorithm on Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Luhn_algorithm" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/word-count/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "WordCount.vb" 8 | ], 9 | "test": [ 10 | "WordCountTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "WordCount.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a phrase, count the occurrences of each word in that phrase.", 20 | "source": "This is a classic toy problem, but we were reminded of it by seeing it in the Go Tour." 21 | } 22 | -------------------------------------------------------------------------------- /exercises/practice/armstrong-numbers/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "erikschierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ArmstrongNumbers.vb" 8 | ], 9 | "test": [ 10 | "ArmstrongNumbersTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ArmstrongNumbers.vbproj" 17 | ] 18 | }, 19 | "blurb": "Determine if a number is an Armstrong number.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Narcissistic_number" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/binary-search/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "BinarySearch.vb" 9 | ], 10 | "test": [ 11 | "BinarySearchTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "BinarySearch.vbproj" 18 | ] 19 | }, 20 | "blurb": "Implement a binary search algorithm.", 21 | "source": "Wikipedia", 22 | "source_url": "https://en.wikipedia.org/wiki/Binary_search_algorithm" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/hamming/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Calculate the Hamming distance between two DNA strands. 4 | 5 | We read DNA using the letters C, A, G and T. 6 | Two strands might look like this: 7 | 8 | GAGCCTACTAACGGGAT 9 | CATCGTAATGACGGCCT 10 | ^ ^ ^ ^ ^ ^^ 11 | 12 | They have 7 differences, and therefore the Hamming distance is 7. 13 | 14 | ## Implementation notes 15 | 16 | The Hamming distance is only defined for sequences of equal length, so an attempt to calculate it between sequences of different lengths should not work. 17 | -------------------------------------------------------------------------------- /exercises/practice/twelve-days/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "TwelveDays.vb" 8 | ], 9 | "test": [ 10 | "TwelveDaysTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "TwelveDays.vbproj" 17 | ] 18 | }, 19 | "blurb": "Output the lyrics to 'The Twelve Days of Christmas'.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song)" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/two-fer/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ch020" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "TwoFer.vb" 11 | ], 12 | "test": [ 13 | "TwoFerTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "TwoFer.vbproj" 20 | ] 21 | }, 22 | "blurb": "Create a sentence of the form \"One for X, one for me.\".", 23 | "source_url": "https://github.com/exercism/problem-specifications/issues/757" 24 | } 25 | -------------------------------------------------------------------------------- /exercises/practice/bottle-song/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "BottleSong.vb" 8 | ], 9 | "test": [ 10 | "BottleSongTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "BottleSong.vbproj" 17 | ] 18 | }, 19 | "blurb": "Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Ten_Green_Bottles" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/run-length-encoding/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "RunLengthEncoding.vb" 8 | ], 9 | "test": [ 10 | "RunLengthEncodingTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "RunLengthEncoding.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement run-length encoding and decoding.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Run-length_encoding" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/all-your-base/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You've just been hired as professor of mathematics. 4 | Your first week went well, but something is off in your second week. 5 | The problem is that every answer given by your students is wrong! 6 | Luckily, your math skills have allowed you to identify the problem: the student answers _are_ correct, but they're all in base 2 (binary)! 7 | Amazingly, it turns out that each week, the students use a different base. 8 | To help you quickly verify the student answers, you'll be building a tool to translate between bases. 9 | -------------------------------------------------------------------------------- /exercises/practice/game-of-life/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | After each generation, the cells interact with their eight neighbors, which are cells adjacent horizontally, vertically, or diagonally. 4 | 5 | The following rules are applied to each cell: 6 | 7 | - Any live cell with two or three live neighbors lives on. 8 | - Any dead cell with exactly three live neighbors becomes a live cell. 9 | - All other cells die or stay dead. 10 | 11 | Given a matrix of 1s and 0s (corresponding to live and dead cells), apply the rules to each cell, and return the next generation. 12 | -------------------------------------------------------------------------------- /exercises/practice/grade-school/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "GradeSchool.vb" 9 | ], 10 | "test": [ 11 | "GradeSchoolTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "GradeSchool.vbproj" 18 | ] 19 | }, 20 | "blurb": "Given students' names along with the grade that they are in, create a roster for the school.", 21 | "source": "A pairing session with Phil Battos at gSchool" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/poker/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Poker.vb" 8 | ], 9 | "test": [ 10 | "PokerTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Poker.vbproj" 17 | ] 18 | }, 19 | "blurb": "Pick the best hand(s) from a list of poker hands.", 20 | "source": "Inspired by the training course from Udacity.", 21 | "source_url": "https://www.udacity.com/course/design-of-computer-programs--cs212" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/relative-distance/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "RelativeDistance.vb" 8 | ], 9 | "test": [ 10 | "RelativeDistanceTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "RelativeDistance.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a family tree, calculate the degree of separation.", 20 | "source": "vaeng", 21 | "source_url": "https://github.com/exercism/problem-specifications/pull/2537" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/grains/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Grains 4 | Public Function Square(ByVal n As Integer) As ULong 5 | If n <= 0 OrElse n > 64 Then 6 | Throw New ArgumentOutOfRangeException(NameOf(n)) 7 | End If 8 | 9 | Return If(n = 1, 1, 2 * Square(n - 1)) 10 | End Function 11 | 12 | Public Function Total() As ULong 13 | Dim lTotal As ULong = 0 14 | 15 | For i = 1 To 64 16 | lTotal += Square(i) 17 | Next 18 | 19 | Return lTotal 20 | End Function 21 | End Module 22 | -------------------------------------------------------------------------------- /exercises/practice/bowling/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Bowling.vb" 8 | ], 9 | "test": [ 10 | "BowlingTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Bowling.vbproj" 17 | ] 18 | }, 19 | "blurb": "Score a bowling game.", 20 | "source": "The Bowling Game Kata from UncleBob", 21 | "source_url": "https://web.archive.org/web/20221001111000/http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/collatz-conjecture/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "CollatzConjecture.vb" 8 | ], 9 | "test": [ 10 | "CollatzConjectureTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "CollatzConjecture.vbproj" 17 | ] 18 | }, 19 | "blurb": "Calculate the number of steps to reach 1 using the Collatz conjecture.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Collatz_conjecture" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/food-chain/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "FoodChain.vb" 8 | ], 9 | "test": [ 10 | "FoodChainTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "FoodChain.vbproj" 17 | ] 18 | }, 19 | "blurb": "Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/There_Was_an_Old_Lady_Who_Swallowed_a_Fly" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "RomanNumerals.vb" 9 | ], 10 | "test": [ 11 | "RomanNumeralsTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "RomanNumerals.vbproj" 18 | ] 19 | }, 20 | "blurb": "Convert modern Arabic numbers into Roman numerals.", 21 | "source": "The Roman Numeral Kata", 22 | "source_url": "https://codingdojo.org/kata/RomanNumerals/" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/scrabble-score/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ScrabbleScore.vb" 8 | ], 9 | "test": [ 10 | "ScrabbleScoreTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ScrabbleScore.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a word, compute the Scrabble score for that word.", 20 | "source": "Inspired by the Extreme Startup game", 21 | "source_url": "https://github.com/rchatley/extreme_startup" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/sieve/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Sieve.vb" 8 | ], 9 | "test": [ 10 | "SieveTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Sieve.vbproj" 17 | ] 18 | }, 19 | "blurb": "Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.", 20 | "source": "Sieve of Eratosthenes at Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/series/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Series.vb" 8 | ], 9 | "test": [ 10 | "SeriesTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Series.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a string of digits, output all the contiguous substrings of length `n` in that string.", 20 | "source": "A subset of the Problem 8 at Project Euler", 21 | "source_url": "https://projecteuler.net/problem=8" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/yacht/Yacht.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Enum YachtCategory 4 | Ones = 1 5 | Twos = 2 6 | Threes = 3 7 | Fours = 4 8 | Fives = 5 9 | Sixes = 6 10 | FullHouse = 7 11 | FourOfAKind = 8 12 | LittleStraight = 9 13 | BigStraight = 10 14 | Choice = 11 15 | Yacht = 12 16 | End Enum 17 | 18 | Public Module YachtGame 19 | Public Function Score(ByVal dice As Integer(), ByVal category As YachtCategory) As Integer 20 | Throw New NotImplementedException("You need to implement this function.") 21 | End Function 22 | End Module 23 | -------------------------------------------------------------------------------- /exercises/practice/clock/Clock.vb: -------------------------------------------------------------------------------- 1 | Public Class Clock 2 | Public Sub New(ByVal hours As Integer, ByVal minutes As Integer) 3 | Throw New NotImplementedException("You need to implement this function") 4 | End Sub 5 | 6 | Public Function Add(ByVal minutesToAdd As Integer) As Clock 7 | Throw New NotImplementedException("You need to implement this function") 8 | End Function 9 | 10 | Public Function Subtract(ByVal minutesToSubtract As Integer) As Clock 11 | Throw New NotImplementedException("You need to implement this function") 12 | End Function 13 | End Class 14 | -------------------------------------------------------------------------------- /exercises/practice/diffie-hellman/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "DiffieHellman.vb" 8 | ], 9 | "test": [ 10 | "DiffieHellmanTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "DiffieHellman.vbproj" 17 | ] 18 | }, 19 | "blurb": "Diffie-Hellman key exchange.", 20 | "source": "Wikipedia, 1024 bit key from www.cryptopp.com/wiki.", 21 | "source_url": "https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "FlattenArray.vb" 8 | ], 9 | "test": [ 10 | "FlattenArrayTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "FlattenArray.vbproj" 17 | ] 18 | }, 19 | "blurb": "Take a nested list and return a single list with all values except nil/null.", 20 | "source": "Interview Question", 21 | "source_url": "https://reference.wolfram.com/language/ref/Flatten.html" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/rail-fence-cipher/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "RailFenceCipher.vb" 8 | ], 9 | "test": [ 10 | "RailFenceCipherTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "RailFenceCipher.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement encoding and decoding for the rail fence cipher.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Transposition_cipher#Rail_Fence_cipher" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ResistorColor.vb" 8 | ], 9 | "test": [ 10 | "ResistorColorTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ResistorColor.vbproj" 17 | ] 18 | }, 19 | "blurb": "Convert a resistor band's color to its numeric representation.", 20 | "source": "Maud de Vries, Erik Schierboom", 21 | "source_url": "https://github.com/exercism/problem-specifications/issues/1458" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "SaddlePoints.vb" 8 | ], 9 | "test": [ 10 | "SaddlePointsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "SaddlePoints.vbproj" 17 | ] 18 | }, 19 | "blurb": "Detect saddle points in a matrix.", 20 | "source": "J Dalbey's Programming Practice problems", 21 | "source_url": "https://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/circular-buffer/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "CircularBuffer.vb" 8 | ], 9 | "test": [ 10 | "CircularBufferTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "CircularBuffer.vbproj" 17 | ] 18 | }, 19 | "blurb": "A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Circular_buffer" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/darts/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Module Darts 4 | Public Function Score(ByVal x As Double, ByVal y As Double) As Integer 5 | Dim diff = Math.Pow(x, 2) + Math.Pow(y, 2) 6 | If diff > 100 Then Return 0 ' outside the radius 10 squared 7 | If diff <= 100 AndAlso diff > 25 Then Return 1 ' outer circle radius of 10 squared 8 | If diff <= 25 AndAlso diff > 1 Then Return 5 ' middle circle radius of 5 squared 9 | If diff <= 1 Then Return 10 ' in circle radius of 1 squared 10 | 11 | Return 0 12 | End Function 13 | End Module 14 | -------------------------------------------------------------------------------- /exercises/practice/proverb/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Proverb.vb" 8 | ], 9 | "test": [ 10 | "ProverbTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Proverb.vbproj" 17 | ] 18 | }, 19 | "blurb": "For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/For_Want_of_a_Nail" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/acronym/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections.Generic 2 | Imports System.Linq 3 | Imports System.Text.RegularExpressions 4 | 5 | Public Module Acronym 6 | Public Function Abbreviate(ByVal phrase As String) As String 7 | Return Words(phrase).Aggregate("", Function(abbr, word) abbr & Char.ToUpperInvariant(word(0)).ToString()) 8 | End Function 9 | 10 | Private Function Words(ByVal phrase As String) As IEnumerable(Of String) 11 | Return Regex.Matches(phrase, "[A-Z]+[a-z']*|[a-z']+").Cast(Of Match)().[Select](Function(m) m.Value) 12 | End Function 13 | End Module 14 | -------------------------------------------------------------------------------- /exercises/practice/beer-song/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "BeerSong.vb" 8 | ], 9 | "test": [ 10 | "BeerSongTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "BeerSong.vbproj" 17 | ] 18 | }, 19 | "blurb": "Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.", 20 | "source": "Learn to Program by Chris Pine", 21 | "source_url": "https://pine.fm/LearnToProgram/?Chapter=06" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/dnd-character/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "DndCharacter.vb" 8 | ], 9 | "test": [ 10 | "DndCharacterTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "DndCharacter.vbproj" 17 | ] 18 | }, 19 | "blurb": "Randomly generate Dungeons & Dragons characters.", 20 | "source": "Simon Shine, Erik Schierboom", 21 | "source_url": "https://github.com/exercism/problem-specifications/issues/616#issuecomment-437358945" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/etl/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Etl.vb" 8 | ], 9 | "test": [ 10 | "EtlTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Etl.vbproj" 17 | ] 18 | }, 19 | "blurb": "Change the data format for scoring a game to more easily add other languages.", 20 | "source": "Based on an exercise by the JumpstartLab team for students at The Turing School of Software and Design.", 21 | "source_url": "https://turing.edu" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/rotational-cipher/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "RotationalCipher.vb" 8 | ], 9 | "test": [ 10 | "RotationalCipherTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "RotationalCipher.vbproj" 17 | ] 18 | }, 19 | "blurb": "Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.", 20 | "source": "Wikipedia", 21 | "source_url": "https://en.wikipedia.org/wiki/Caesar_cipher" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/simple-cipher/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "SimpleCipher.vb" 9 | ], 10 | "test": [ 11 | "SimpleCipherTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "SimpleCipher.vbproj" 18 | ] 19 | }, 20 | "blurb": "Implement the Vigenère cipher, a simple substitution cipher.", 21 | "source": "Substitution Cipher at Wikipedia", 22 | "source_url": "https://en.wikipedia.org/wiki/Substitution_cipher" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/diamond/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Diamond.vb" 8 | ], 9 | "test": [ 10 | "DiamondTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Diamond.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.", 20 | "source": "Seb Rose", 21 | "source_url": "https://web.archive.org/web/20220807163751/http://claysnow.co.uk/recycling-tests-in-tdd/" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/wordy/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Wordy.vb" 8 | ], 9 | "test": [ 10 | "WordyTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Wordy.vbproj" 17 | ] 18 | }, 19 | "blurb": "Parse and evaluate simple math word problems returning the answer as an integer.", 20 | "source": "Inspired by one of the generated questions in the Extreme Startup game.", 21 | "source_url": "https://github.com/rchatley/extreme_startup" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Take a nested array of any depth and return a fully flattened array. 4 | 5 | Note that some language tracks may include null-like values in the input array, and the way these values are represented varies by track. 6 | Such values should be excluded from the flattened array. 7 | 8 | Additionally, the input may be of a different data type and contain different types, depending on the track. 9 | 10 | Check the test suite for details. 11 | 12 | ## Example 13 | 14 | input: `[1, [2, 6, null], [[null, [4]], 5]]` 15 | 16 | output: `[1, 2, 6, 4, 5]` 17 | -------------------------------------------------------------------------------- /exercises/practice/leap/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ch020" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "Leap.vb" 11 | ], 12 | "test": [ 13 | "LeapTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "Leap.vbproj" 20 | ] 21 | }, 22 | "blurb": "Determine whether a given year is a leap year.", 23 | "source": "CodeRanch Cattle Drive, Assignment 3", 24 | "source_url": "https://web.archive.org/web/20240907033714/https://coderanch.com/t/718816/Leap" 25 | } 26 | -------------------------------------------------------------------------------- /exercises/practice/phone-number/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "axtens" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "PhoneNumber.vb" 8 | ], 9 | "test": [ 10 | "PhoneNumberTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "PhoneNumber.vbproj" 17 | ] 18 | }, 19 | "blurb": "Clean up user-entered phone numbers so that they can be sent SMS messages.", 20 | "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", 21 | "source_url": "https://turing.edu" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/resistor-color-duo/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "ResistorColorDuo.vb" 8 | ], 9 | "test": [ 10 | "ResistorColorDuoTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "ResistorColorDuo.vbproj" 17 | ] 18 | }, 19 | "blurb": "Convert color codes, as used on resistors, to a numeric value.", 20 | "source": "Maud de Vries, Erik Schierboom", 21 | "source_url": "https://github.com/exercism/problem-specifications/issues/1464" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/affine-cipher/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "AffineCipher.vb" 9 | ], 10 | "test": [ 11 | "AffineCipherTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "AffineCipher.vbproj" 18 | ] 19 | }, 20 | "blurb": "Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.", 21 | "source": "Wikipedia", 22 | "source_url": "https://en.wikipedia.org/wiki/Affine_cipher" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/gigasecond/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Gigasecond.vb" 8 | ], 9 | "test": [ 10 | "GigasecondTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Gigasecond.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a moment, determine the moment that would be after a gigasecond has passed.", 20 | "source": "Chapter 9 in Chris Pine's online Learn to Program tutorial.", 21 | "source_url": "https://pine.fm/LearnToProgram/?Chapter=09" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/matrix/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Matrix.vb" 8 | ], 9 | "test": [ 10 | "MatrixTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Matrix.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a string representing a matrix of numbers, return the rows and columns of that matrix.", 20 | "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", 21 | "source_url": "https://turing.edu" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/ocr-numbers/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "OcrNumbers.vb" 8 | ], 9 | "test": [ 10 | "OcrNumbersTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "OcrNumbers.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.", 20 | "source": "Inspired by the Bank OCR kata", 21 | "source_url": "https://codingdojo.org/kata/BankOCR/" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/pythagorean-triplet/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "PythagoreanTriplet.vb" 8 | ], 9 | "test": [ 10 | "PythagoreanTripletTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "PythagoreanTriplet.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given an integer N, find all Pythagorean triplets for which a + b + c = N.", 20 | "source": "A variation of Problem 9 from Project Euler", 21 | "source_url": "https://projecteuler.net/problem=9" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/rest-api/RestApi.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class RestApi 4 | Public Sub New(database As String) 5 | Throw New NotImplementedException("You need to implement this function.") 6 | End Sub 7 | 8 | Public Function [Get](url As String, Optional payload As String = Nothing) As String 9 | Throw New NotImplementedException("You need to implement this function.") 10 | End Function 11 | 12 | Public Function Post(url As String, payload As String) As String 13 | Throw New NotImplementedException("You need to implement this function.") 14 | End Function 15 | End Class 16 | -------------------------------------------------------------------------------- /exercises/practice/triangle/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "Triangle.vb" 9 | ], 10 | "test": [ 11 | "TriangleTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "Triangle.vbproj" 18 | ] 19 | }, 20 | "blurb": "Determine if a triangle is equilateral, isosceles, or scalene.", 21 | "source": "The Ruby Koans triangle project, parts 1 & 2", 22 | "source_url": "https://web.archive.org/web/20220831105330/http://rubykoans.com" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/two-bucket/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "TwoBucket.vb" 9 | ], 10 | "test": [ 11 | "TwoBucketTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "TwoBucket.vbproj" 18 | ] 19 | }, 20 | "blurb": "Given two buckets of different size, demonstrate how to measure an exact number of liters.", 21 | "source": "Water Pouring Problem", 22 | "source_url": "https://demonstrations.wolfram.com/WaterPouringProblem/" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/anagram/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "brent113" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "Anagram.vb" 11 | ], 12 | "test": [ 13 | "AnagramTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "Anagram.vbproj" 20 | ] 21 | }, 22 | "blurb": "Given a word and a list of possible anagrams, select the correct sublist.", 23 | "source": "Inspired by the Extreme Startup game", 24 | "source_url": "https://github.com/rchatley/extreme_startup" 25 | } 26 | -------------------------------------------------------------------------------- /exercises/practice/game-of-life/GameOfLife.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Collections.Generic 3 | 4 | Public Class GameOfLife 5 | Public Sub New(ByVal matrix As List(Of List(Of Integer))) 6 | Throw New NotImplementedException("You need to implement this function") 7 | End Sub 8 | 9 | Public Function Tick() 10 | Throw New NotImplementedException("You need to implement this function") 11 | End Function 12 | 13 | Public Function Matrix() As List(Of List(Of Integer)) 14 | Throw New NotImplementedException("You need to implement this function") 15 | End Function 16 | End Class 17 | -------------------------------------------------------------------------------- /exercises/practice/grep/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Grep.vb" 8 | ], 9 | "test": [ 10 | "GrepTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Grep.vbproj" 17 | ] 18 | }, 19 | "blurb": "Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.", 20 | "source": "Conversation with Nate Foster.", 21 | "source_url": "https://www.cs.cornell.edu/Courses/cs3110/2014sp/hw/0/ps0.pdf" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/nucleotide-count/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "NucleotideCount.vb" 8 | ], 9 | "test": [ 10 | "NucleotideCountTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "NucleotideCount.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a DNA string, compute how many times each nucleotide occurs in the string.", 20 | "source": "The Calculating DNA Nucleotides_problem at Rosalind", 21 | "source_url": "https://rosalind.info/problems/dna/" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/series/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions 2 | 3 | Given a string of digits, output all the contiguous substrings of length `n` in that string in the order that they appear. 4 | 5 | For example, the string "49142" has the following 3-digit series: 6 | 7 | - "491" 8 | - "914" 9 | - "142" 10 | 11 | And the following 4-digit series: 12 | 13 | - "4914" 14 | - "9142" 15 | 16 | And if you ask for a 6-digit series from a 5-digit string, you deserve whatever you get. 17 | 18 | Note that these series are only required to occupy _adjacent positions_ in the input; 19 | the digits need not be _numerically consecutive_. 20 | -------------------------------------------------------------------------------- /exercises/practice/rna-transcription/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "RnaTranscription.vb" 8 | ], 9 | "test": [ 10 | "RnaTranscriptionTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "RnaTranscription.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a DNA strand, return its RNA complement.", 20 | "source": "Hyperphysics", 21 | "source_url": "https://web.archive.org/web/20220408112140/http://hyperphysics.phy-astr.gsu.edu/hbase/Organic/transcription.html" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/variable-length-quantity/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "VariableLengthQuantity.vb" 8 | ], 9 | "test": [ 10 | "VariableLengthQuantityTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "VariableLengthQuantity.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement variable length quantity encoding and decoding.", 20 | "source": "A poor Splice developer having to implement MIDI encoding/decoding.", 21 | "source_url": "https://splice.com" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/change/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Change.vb" 8 | ], 9 | "test": [ 10 | "ChangeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Change.vbproj" 17 | ] 18 | }, 19 | "blurb": "Correctly determine change to be given using the least number of coins.", 20 | "source": "Software Craftsmanship - Coin Change Kata", 21 | "source_url": "https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/flatten-array/.meta/Example.vb: -------------------------------------------------------------------------------- 1 | Imports System.Collections 2 | 3 | Public Module FlattenArray 4 | Public Iterator Function Flatten(ByVal input As IEnumerable) As IEnumerable 5 | For Each element In input 6 | Dim enumerable = TryCast(element, IEnumerable) 7 | If enumerable IsNot Nothing Then 8 | For Each flattenedElement In Flatten(enumerable) 9 | Yield flattenedElement 10 | Next 11 | ElseIf element IsNot Nothing Then 12 | Yield element 13 | End If 14 | Next 15 | End Function 16 | End Module 17 | -------------------------------------------------------------------------------- /exercises/practice/pig-latin/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "PigLatin.vb" 8 | ], 9 | "test": [ 10 | "PigLatinTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "PigLatin.vbproj" 17 | ] 18 | }, 19 | "blurb": "Implement a program that translates from English to Pig Latin.", 20 | "source": "The Pig Latin exercise at Test First Teaching by Ultrasaurus", 21 | "source_url": "https://github.com/ultrasaurus/test-first-teaching/blob/master/learn_ruby/pig_latin/" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/prime-factors/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "PrimeFactors.vb" 8 | ], 9 | "test": [ 10 | "PrimeFactorsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "PrimeFactors.vbproj" 17 | ] 18 | }, 19 | "blurb": "Compute the prime factors of a given natural number.", 20 | "source": "The Prime Factors Kata by Uncle Bob", 21 | "source_url": "https://web.archive.org/web/20221026171801/http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/saddle-points/.docs/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | You plan to build a tree house in the woods near your house so that you can watch the sun rise and set. 4 | 5 | You've obtained data from a local survey company that show the height of every tree in each rectangular section of the map. 6 | You need to analyze each grid on the map to find good trees for your tree house. 7 | 8 | A good tree is both: 9 | 10 | - taller than every tree to the east and west, so that you have the best possible view of the sunrises and sunsets. 11 | - shorter than every tree to the north and south, to minimize the amount of tree climbing. 12 | -------------------------------------------------------------------------------- /exercises/practice/say/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom", 4 | "bobahop" 5 | ], 6 | "files": { 7 | "solution": [ 8 | "Say.vb" 9 | ], 10 | "test": [ 11 | "SayTests.vb" 12 | ], 13 | "example": [ 14 | ".meta/Example.vb" 15 | ], 16 | "invalidator": [ 17 | "Say.vbproj" 18 | ] 19 | }, 20 | "blurb": "Given a number from 0 to 999,999,999,999, spell out that number in English.", 21 | "source": "A variation on the JavaRanch CattleDrive, Assignment 4", 22 | "source_url": "https://web.archive.org/web/20240907035912/https://coderanch.com/wiki/718804" 23 | } 24 | -------------------------------------------------------------------------------- /exercises/practice/secret-handshake/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "SecretHandshake.vb" 8 | ], 9 | "test": [ 10 | "SecretHandshakeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "SecretHandshake.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.", 20 | "source": "Bert, in Mary Poppins", 21 | "source_url": "https://www.imdb.com/title/tt0058331/quotes/?item=qt0437047" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/atbash-cipher/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "brent113" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "AtbashCipher.vb" 11 | ], 12 | "test": [ 13 | "AtbashCipherTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "AtbashCipher.vbproj" 20 | ] 21 | }, 22 | "blurb": "Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.", 23 | "source": "Wikipedia", 24 | "source_url": "https://en.wikipedia.org/wiki/Atbash" 25 | } 26 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/tests.toml: -------------------------------------------------------------------------------- 1 | # This is an auto-generated file. 2 | # 3 | # Regenerating this file via `configlet sync` will: 4 | # - Recreate every `description` key/value pair 5 | # - Recreate every `reimplements` key/value pair, where they exist in problem-specifications 6 | # - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) 7 | # - Preserve any other key/value pair 8 | # 9 | # As user-added comments (using the # character) will be removed when this file 10 | # is regenerated, comments can be added via a `comment` key. 11 | [af9ffe10-dc13-42d8-a742-e7bdafac449d] 12 | description = "Say Hi!" 13 | -------------------------------------------------------------------------------- /exercises/practice/sum-of-multiples/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "SumOfMultiples.vb" 8 | ], 9 | "test": [ 10 | "SumOfMultiplesTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "SumOfMultiples.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a number, find the sum of all the multiples of particular numbers up to but not including that number.", 20 | "source": "A variation on Problem 1 at Project Euler", 21 | "source_url": "https://projecteuler.net/problem=1" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/difference-of-squares/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "DifferenceOfSquares.vb" 8 | ], 9 | "test": [ 10 | "DifferenceOfSquaresTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "DifferenceOfSquares.vbproj" 17 | ] 18 | }, 19 | "blurb": "Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.", 20 | "source": "Problem 6 at Project Euler", 21 | "source_url": "https://projecteuler.net/problem=6" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/grains/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Grains.vb" 8 | ], 9 | "test": [ 10 | "GrainsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Grains.vbproj" 17 | ] 18 | }, 19 | "blurb": "Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.", 20 | "source": "The CodeRanch Cattle Drive, Assignment 6", 21 | "source_url": "https://web.archive.org/web/20240908084142/https://coderanch.com/wiki/718824/Grains" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/eliuds-eggs/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "BNAndras" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "EliudsEggs.vb" 8 | ], 9 | "test": [ 10 | "EliudsEggsTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "EliudsEggs.vbproj" 17 | ] 18 | }, 19 | "blurb": "Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.", 20 | "source": "Christian Willner, Eric Willigers", 21 | "source_url": "https://forum.exercism.org/t/new-exercise-suggestion-pop-count/7632/5" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/space-age/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "SpaceAge.vb" 8 | ], 9 | "test": [ 10 | "SpaceAgeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "SpaceAge.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.", 20 | "source": "Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial.", 21 | "source_url": "https://pine.fm/LearnToProgram/?Chapter=01" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/book-store/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "BookStore.vb" 8 | ], 9 | "test": [ 10 | "BookStoreTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "BookStore.vbproj" 17 | ] 18 | }, 19 | "blurb": "To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.", 20 | "source": "Inspired by the harry potter kata from Cyber-Dojo.", 21 | "source_url": "https://cyber-dojo.org" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/roman-numerals/.docs/instructions.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Your task is to convert a number from Arabic numerals to Roman numerals. 4 | 5 | For this exercise, we are only concerned about traditional Roman numerals, in which the largest number is MMMCMXCIX (or 3,999). 6 | 7 | ~~~~exercism/note 8 | There are lots of different ways to convert between Arabic and Roman numerals. 9 | We recommend taking a naive approach first to familiarise yourself with the concept of Roman numerals and then search for more efficient methods. 10 | 11 | Make sure to check out our Deep Dive video at the end to explore the different approaches you can take! 12 | ~~~~ 13 | -------------------------------------------------------------------------------- /exercises/shared/.docs/help.md: -------------------------------------------------------------------------------- 1 | # Help 2 | 3 | To get help if you're having trouble, you can use one of the following resources: 4 | 5 | - [Visual Basic community on Discord](https://discord.gg/c5XVTU9X); go here to ask questions related to Visual Basic. 6 | - [/r/visualbasic](https://www.reddit.com/r/visualbasic) is the Visual Basic subreddit. 7 | - [StackOverflow](http://stackoverflow.com/questions/tagged/Visual Basic) can be used to search for your problem and see if it has been answered already. You can also ask and answer questions. 8 | - [RosettaCode](http://rosettacode.org/wiki/Category:Visual_Basic_.NET) has many examples of programming tasks solved in Visual Basic 9 | -------------------------------------------------------------------------------- /exercises/practice/bob/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "brent113" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "Bob.vb" 11 | ], 12 | "test": [ 13 | "BobTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "Bob.vbproj" 20 | ] 21 | }, 22 | "blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.", 23 | "source": "Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial.", 24 | "source_url": "https://pine.fm/LearnToProgram/?Chapter=06" 25 | } 26 | -------------------------------------------------------------------------------- /exercises/practice/largest-series-product/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "LargestSeriesProduct.vb" 8 | ], 9 | "test": [ 10 | "LargestSeriesProductTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "LargestSeriesProduct.vbproj" 17 | ] 18 | }, 19 | "blurb": "Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.", 20 | "source": "A variation on Problem 8 at Project Euler", 21 | "source_url": "https://projecteuler.net/problem=8" 22 | } 23 | -------------------------------------------------------------------------------- /exercises/practice/hello-world/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ch020" 4 | ], 5 | "contributors": [ 6 | "axtens" 7 | ], 8 | "files": { 9 | "solution": [ 10 | "HelloWorld.vb" 11 | ], 12 | "test": [ 13 | "HelloWorldTests.vb" 14 | ], 15 | "example": [ 16 | ".meta/Example.vb" 17 | ], 18 | "invalidator": [ 19 | "HelloWorld.vbproj" 20 | ] 21 | }, 22 | "blurb": "Exercism's classic introductory exercise. Just say \"Hello, World!\".", 23 | "source": "This is an exercise to introduce users to using Exercism", 24 | "source_url": "https://en.wikipedia.org/wiki/%22Hello,_world!%22_program" 25 | } 26 | -------------------------------------------------------------------------------- /exercises/practice/transpose/.meta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "ErikSchierboom" 4 | ], 5 | "files": { 6 | "solution": [ 7 | "Transpose.vb" 8 | ], 9 | "test": [ 10 | "TransposeTests.vb" 11 | ], 12 | "example": [ 13 | ".meta/Example.vb" 14 | ], 15 | "invalidator": [ 16 | "Transpose.vbproj" 17 | ] 18 | }, 19 | "blurb": "Take input text and output it transposed.", 20 | "source": "Reddit r/dailyprogrammer challenge #270 [Easy].", 21 | "source_url": "https://web.archive.org/web/20230630051421/https://old.reddit.com/r/dailyprogrammer/comments/4msu2x/challenge_270_easy_transpose_the_input_text/" 22 | } 23 | --------------------------------------------------------------------------------