Пример #1
0
        public void Return_number_of_trees_for_multiple_slopes()
        {
            var tobboganTrajectory = new TobogganTrajectory();
            var inputReaders       = new InputReaders();
            var path = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\03_01_TobogganTrajectory_Test.txt";
            var grid = inputReaders.readLinesToGrid(path);

            var slope1 = new List <int>()
            {
                1, 1
            };
            var slope2 = new List <int>()
            {
                3, 1
            };
            var slope3 = new List <int>()
            {
                5, 1
            };
            var slopesToTest = new List <List <int> >
            {
                slope1, slope2, slope3
            };
            var listOfTreeCounts = tobboganTrajectory.testLotsOfSlopes(slopesToTest, grid);

            Assert.Equal(new List <int>()
            {
                2, 7, 3
            }, listOfTreeCounts);
        }
Пример #2
0
        public long problem2()
        {
            var _inputReader   = new InputReaders();
            var path           = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\09_EncodingError.txt";
            var numbers        = _inputReader.readLongNumbers(path);
            var _encodingError = new EncodingError(numbers, 257342611);

            return(_encodingError.findContiguousSet());
        }
        public void Should_count_route_permutations()
        {
            var _inputReader  = new InputReaders();
            var path          = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\10_AdapterArray_Test.txt";
            var adapters      = _inputReader.readLongNumbers(path);
            var _adapterArray = new AdapterArray(adapters);

            Assert.Equal(19208, _adapterArray.countRoutes());
        }
Пример #4
0
        public void Input_is_parsed_correctly()
        {
            var tobboganTrajectory = new TobogganTrajectory();
            var inputReaders       = new InputReaders();
            var path = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\03_01_TobogganTrajectory_Test.txt";
            var grid = inputReaders.readLinesToGrid(path);

            Assert.Equal(11, grid.Count);
        }
        public void Find_first_invalid_number()
        {
            var _inputReader   = new InputReaders();
            var path           = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\09_EncodingError_Test.txt";
            var numbers        = _inputReader.readLongNumbers(path);
            var _encodingError = new EncodingError(numbers, 5);

            Assert.Equal(127, _encodingError.findInvalidNumber());
        }
Пример #6
0
        public long problem1()
        {
            var _inputReader  = new InputReaders();
            var path          = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\10_AdapterArray.txt";
            var adapters      = _inputReader.readLongNumbers(path);
            var _adapterArray = new AdapterArray(adapters);

            return(_adapterArray.countAdapters());
        }
        public void Find_contiguous_run()
        {
            var _inputReader   = new InputReaders();
            var path           = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\09_EncodingError_Test.txt";
            var numbers        = _inputReader.readLongNumbers(path);
            var _encodingError = new EncodingError(numbers, 127);

            Assert.Equal(62, _encodingError.findContiguousSet());
        }
        public void Should_count_adaptor_differences()
        {
            var _inputReader  = new InputReaders();
            var path          = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\10_AdapterArray_Test.txt";
            var adapters      = _inputReader.readLongNumbers(path);
            var _adapterArray = new AdapterArray(adapters);

            Assert.Equal(220, _adapterArray.countAdapters());
        }
        public int problem2()
        {
            var _inputReader   = new InputReaders();
            var path           = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\08_HandheldHalting.txt";
            var program        = _inputReader.readLines(path);
            var problem2Answer = runReplacementProgram(program);

            return(problem2Answer);
        }
Пример #10
0
        public int problem2()
        {
            var inputReaders = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\06_CustomCustoms.txt";
            var answers      = inputReaders.readParagraphsToList(path);

            var duplicateCount = countDuplicateQuestionsForManyGroups(answers);

            return(duplicateCount);
        }
Пример #11
0
        public int Problem2()
        {
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\01_01_ReportRepair.txt";
            var inputReaders = new InputReaders();
            var input        = inputReaders.readNumbers(path);
            var entries      = AddThreeTo2020(input);
            var total        = Multiply(entries);

            return(total);
        }
Пример #12
0
        public void Should_run_replacement_instructions()
        {
            var _inputReader     = new InputReaders();
            var path             = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\08_HandheldHalting_Test.txt";
            var program          = _inputReader.readLines(path);
            var _handheldHalting = new HandheldHalting();
            var count            = _handheldHalting.runReplacementProgram(program);

            Assert.Equal(8, count);
        }
Пример #13
0
        public int problem1()
        {
            var inputReaders = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing.txt";
            var passports    = inputReaders.readParagraphsToList(path);

            var presentPassports = collectPassports(passports);

            return(presentPassports.Count);
        }
Пример #14
0
        //public int fitInThisBag(List<HandyHaversacks> bags, string myBigBag)
        //{

        //}

        public int problem1()
        {
            var inputReader      = new InputReaders();
            var path             = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\07_HandyHaversacks.txt";
            var input            = inputReader.readLines(path);
            var bags             = getAllTheBags(input);
            var numberOfGoldBags = containsBagToFind(bags, "shiny gold");

            return(numberOfGoldBags.Count);
        }
Пример #15
0
        public void Should_read_a_passport()
        {
            var inputReaders = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing_Test.txt";
            var passports    = inputReaders.readParagraphsToList(path);

            var passport = new PassportProcessing(passports[0]);

            Assert.Equal("1937", passport.byr);
            Assert.Equal("gry", passport.ecl);
        }
Пример #16
0
        public void Should_collect_present_passports()
        {
            var inputReaders       = new InputReaders();
            var passportProcessing = new PassportProcessing();
            var path      = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing_Test.txt";
            var passports = inputReaders.readParagraphsToList(path);

            var present = passportProcessing.collectPassports(passports);

            Assert.Equal(2, present.Count);
        }
        public int Problem1()
        {
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\03_01_TobogganTrajectory.txt";
            var inputReaders = new InputReaders();
            var input        = inputReaders.readLinesToGrid(path);
            var slope        = new int[] { 1, 2 };
            var itemsOnRoute = moveSleigh(slope, input);
            var total        = countTrees(itemsOnRoute);

            return(total);
        }
Пример #18
0
        public void Should_not_approve_non_passport()
        {
            var inputReaders       = new InputReaders();
            var passportProcessing = new PassportProcessing();
            var path      = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing_Test.txt";
            var passports = inputReaders.readParagraphsToList(path);

            var notPassport = passportProcessing.checkAPassportIsPresent(passports[1]);

            Assert.False(notPassport);
        }
        public void Should_count_how_many_bags_can_hold_gold_ones()
        {
            var inputReader      = new InputReaders();
            var path             = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\07_HandyHaversacks_Test.txt";
            var input            = inputReader.readLines(path);
            var handyHaversacks  = new HandyHaversacks();
            var bags             = handyHaversacks.getAllTheBags(input);
            var numberOfGoldBags = handyHaversacks.containsBagToFind(bags, "shiny gold");

            Assert.Equal(4, numberOfGoldBags.Count);
        }
        public void Should_read_the_input_to_a_list_of_bags()
        {
            var inputReader     = new InputReaders();
            var path            = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\07_HandyHaversacks_Test.txt";
            var input           = inputReader.readLines(path);
            var handyHaversacks = new HandyHaversacks();
            var bags            = handyHaversacks.getAllTheBags(input);

            Assert.Equal(9, bags.Count);
            Assert.Equal("light red", bags[0].description);
        }
        public void Should_be_same_number_of_tickets_and_seats()
        {
            var inputReaders   = new InputReaders();
            var binaryBoarding = new BinaryBoarding();
            var path           = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\05_BinaryBoarding.txt";
            var tickets        = inputReaders.readLines(path);

            var seats = binaryBoarding.getMultipleSeatInfo(tickets);

            Assert.Equal(tickets.Length, seats.Count);
        }
Пример #22
0
        public int problem1()
        {
            var inputReaders = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\05_BinaryBoarding.txt";
            var tickets      = inputReaders.readLines(path);

            var seats       = getMultipleSeatInfo(tickets);
            var highestSeat = findHighestSeat(seats);

            return(highestSeat);
        }
Пример #23
0
        public void Should_not_pass_invalid_passports()
        {
            var inputReaders       = new InputReaders();
            var passportProcessing = new PassportProcessing();
            var path      = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing_Test_invalidpassports.txt";
            var passports = inputReaders.readParagraphsToList(path);
            var present   = passportProcessing.collectPassports(passports);

            var validPassports = passportProcessing.checkIfValid(present);

            Assert.Equal(0, validPassports.Count);
        }
Пример #24
0
        public int problem1()
        {
            var _inputReader = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\22_CrabCombat.txt";
            var decks        = _inputReader.readParagraphsToList(path);
            var _crabCombat  = new CrabCombat(decks);

            _crabCombat.playGame1();
            var score = _crabCombat.calculateScore(_crabCombat.GameWinner);

            return(score);
        }
Пример #25
0
        public int problem2()
        {
            // Current state 20/12/24 - the tests pass but I'm not getting the correct solution ¯\_(ツ)_/¯

            var _inputReader = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\22_CrabCombat.txt";
            var decks        = _inputReader.readParagraphsToList(path);
            var _crabCombat  = new CrabCombat(decks);

            _crabCombat.playGame2();
            var score = _crabCombat.calculateScore(_crabCombat.GameWinner);

            return(score);
        }
Пример #26
0
        public void Should_split_passport_feed_by_blank_lines()
        {
            var inputReaders     = new InputReaders();
            var path             = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\04_PassportProcessing_Test2.txt";
            var listOfParagraphs = inputReaders.readParagraphsToList(path);

            var firstString  = "Eleanor Mollett";
            var secondString = "Catherine Mollett";
            var blah         = new List <string> {
                firstString, secondString
            };

            Assert.Equal(blah, listOfParagraphs);
        }
Пример #27
0
        public void Problem1_Using_example_input()
        {
            var tobboganTrajectory = new TobogganTrajectory();
            var inputReaders       = new InputReaders();
            var path = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\03_01_TobogganTrajectory_Test.txt";

            var grid         = inputReaders.readLinesToGrid(path);
            var travelVector = new int[] { 3, 1 };
            var itemsOnRoute = tobboganTrajectory.moveSleigh(travelVector, grid);

            Assert.Equal(10, itemsOnRoute.Count);
            int output = tobboganTrajectory.countTrees(itemsOnRoute);

            Assert.Equal(7, output);
        }
        public int checkLotsOfPasswords(string ruleSet)
        {
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\02_01_PasswordPhilosophy.txt";
            var inputReaders = new InputReaders();
            var input        = inputReaders.readLines(path);

            var goodPasswordCount = 0;

            foreach (string line in input)
            {
                var passwordToCheck = new PasswordChecker(line);
                if (ruleSet == "first" ? passwordToCheck.isPasswordValidFirstRuleSet() : passwordToCheck.isPasswordValidSecondRuleSet())
                {
                    goodPasswordCount++;
                }
            }
            return(goodPasswordCount);
        }
Пример #29
0
        public int problem2()
        {
            var inputReaders = new InputReaders();
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\05_BinaryBoarding.txt";
            var tickets      = inputReaders.readLines(path);
            var seats        = getMultipleSeatInfo(tickets);
            List <BinaryBoarding> orderedSeats = seats.OrderBy(s => s.Seat).ToList();

            var previousSeat = orderedSeats.First().Seat;

            foreach (var seat in orderedSeats)
            {
                if (previousSeat != seat.Seat)
                {
                    return(previousSeat);
                }
                previousSeat++;
            }
            return(0);
        }
        public long Problem2()
        {
            var path         = @"C:\Users\emollett\Documents\sites\AdventOfCode2020\AdventOfCode2020\Inputs\03_01_TobogganTrajectory.txt";
            var inputReaders = new InputReaders();
            var helpers      = new Helpers();
            var input        = inputReaders.readLinesToGrid(path);

            var slope1 = new List <int>()
            {
                1, 1
            };
            var slope2 = new List <int>()
            {
                3, 1
            };
            var slope3 = new List <int>()
            {
                5, 1
            };
            var slope4 = new List <int>()
            {
                7, 1
            };
            var slope5 = new List <int>()
            {
                1, 2
            };
            var slopesToTest = new List <List <int> >
            {
                slope1, slope2, slope3, slope4, slope5
            };

            var listOfTreeCounts = testLotsOfSlopes(slopesToTest, input);
            var total            = helpers.Multiply(listOfTreeCounts);

            return(total);
        }