コード例 #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 void Should_identify_character_at_coordinate_after_moving_twice()
        {
            var tobboganTrajectory = new TobogganTrajectory();
            var line1 = new List <char>()
            {
                'a', 'b', 'c'
            };
            var line2 = new List <char>()
            {
                'd', 'e', 'f'
            };
            var line3 = new List <char>()
            {
                'h', 'i', 'j'
            };
            var grid = new List <List <char> >
            {
                line1, line2, line3
            };
            var travelVector = new int[] { 1, 1 };

            var output = tobboganTrajectory.moveSleigh(travelVector, grid);

            Assert.Equal('j', output[output.Count - 1]);
        }
コード例 #3
0
        public void Should_count_trees()
        {
            var tobboganTrajectory = new TobogganTrajectory();
            var line1 = new List <char>()
            {
                'a', 'b', 'c'
            };
            var line2 = new List <char>()
            {
                'd', 'e', 'f'
            };
            var line3 = new List <char>()
            {
                'h', 'i', '#'
            };
            var grid = new List <List <char> >
            {
                line1, line2, line3
            };
            var travelVector = new int[] { 1, 1 };

            var itemsOnRoute = tobboganTrajectory.moveSleigh(travelVector, grid);
            int output       = tobboganTrajectory.countTrees(itemsOnRoute);

            Assert.Equal(1, output);
        }
コード例 #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);
        }
コード例 #5
0
        public void PuzzleOne()
        {
            // Arrange
            var input = CreateTestData();

            // Act
            var actual = TobogganTrajectory.HowManyTrees(input, new Point(3, 1));

            // Assert
            Assert.Equal(7, actual);
        }
コード例 #6
0
        public void PuzzleTwo()
        {
            //  Arrange
            var input = CreateTestData();

            // Act
            var actual = TobogganTrajectory.HowManyTrees(input, CreateSlopes().ToArray());

            // Assert
            Assert.Equal(336, actual);
        }
コード例 #7
0
        public void ExamplePartOne(string[] input, int right, int down, int expectedTrees)
        {
            // Arrange
            var trajectory = new TobogganTrajectory(input);

            // Act
            var output = trajectory.AnalyseMap(right, down);

            // Assert
            Assert.AreEqual(expectedTrees, output);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: shareitcode/AdventOfCode
        internal static async Task Main(string[] args)
        {
            string[] input = await FileUtils.ReadFileContentFromPathAsync("AOC-2020-D-3-input.txt");

            Console.WriteLine("====================================================");
            Console.WriteLine("ADVENT OF CODE 2020 - DAY 3: TOBOGGAN TRAJECTORY");
            Console.WriteLine("====================================================");
            Console.WriteLine("----- PART 1 -----");
            Console.WriteLine($"Result: {TobogganTrajectory.TreeCounterFromInput(input)}");
            Console.WriteLine("----- PART 2 -----");
            Console.WriteLine($"Result: N/A");
        }
コード例 #9
0
        public void PuzzlePartTwo()
        {
            //  Arrange
            var input = File
                        .ReadLines("tests/y2020/Day3.Input.txt")
                        .ToList();

            // Act
            var actual = TobogganTrajectory.HowManyTrees(input, CreateSlopes().ToArray());

            // Assert
            Assert.Equal(727923200, actual);
        }
コード例 #10
0
        public void PuzzlePartOne()
        {
            //  Arrange
            var input = File
                        .ReadLines("tests/y2020/Day3.Input.txt")
                        .ToList();

            // Act
            var actual = TobogganTrajectory.HowManyTrees(input, new Point(3, 1));

            // Assert
            Assert.Equal(148, actual);
        }
コード例 #11
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);
        }
コード例 #12
0
 public void ReadLines()
 => _tobogganTrajectory = new TobogganTrajectory(
     map: File.ReadLines(Path.Combine(AppContext.BaseDirectory, $"App_Data/{3.ToString("D2")}.txt")));
コード例 #13
0
        public void TreeCounterFromExample()
        {
            int treeCounter = TobogganTrajectory.TreeCounterFromInput(this.input);

            Assert.IsTrue(treeCounter == 7);
        }
コード例 #14
0
        static void Main(string[] args)
        {
            // Day 1
            var    sum          = 2020;
            string day1FilePath = @"C:\Users\musomanu\source\advent-of-code-2020\2020-Day-1\ReportRepairInput.txt";

            ReportRepair reportRepair        = new ReportRepair(day1FilePath);
            var          twoEntriesProduct   = reportRepair.Find2EntriesProduct(sum);
            var          threeEntriesProduct = reportRepair.Find3EntriesProduct(sum);

            Console.WriteLine($"Day 1: Product of 2 entries that add upto {sum}: {twoEntriesProduct}");
            Console.WriteLine($"Day 1: Product of 3 entries that add upto {sum}: {threeEntriesProduct}");
            Console.WriteLine();

            // Day 2
            string day2FilePath = @"C:\Users\musomanu\source\advent-of-code-2020\2020-Day-2\PasswordPhilosophyInput.txt";

            PasswordPhilosophy passwordPhilosophy = new PasswordPhilosophy(day2FilePath);
            var numberOfValidPasswords            = passwordPhilosophy.GetValidPasswordsCount();
            var numberOfValidPasswordsRevised     = passwordPhilosophy.GetValidPasswordsCountRevised();

            Console.WriteLine($"Day 2: Number of valid passwords: {numberOfValidPasswords}");
            Console.WriteLine($"Day 2: Number of valid passwords (revised policy): {numberOfValidPasswordsRevised}");
            Console.WriteLine();

            // Day 3
            string day3FilePath = @"C:\Users\musomanu\source\advent-of-code-2020\2020-Day-3\TobogganTrajectoryInput.txt";

            TobogganTrajectory tobogganTrajectory = new TobogganTrajectory(day3FilePath);
            var numberOfTreesEncountered          = tobogganTrajectory.TreesEncountered(0, 0, 3, 1);
            var numberofTreesEncountered_1        = tobogganTrajectory.TreesEncountered(0, 0, 1, 1);
            var numberofTreesEncountered_2        = tobogganTrajectory.TreesEncountered(0, 0, 3, 1);
            var numberofTreesEncountered_3        = tobogganTrajectory.TreesEncountered(0, 0, 5, 1);
            var numberofTreesEncountered_4        = tobogganTrajectory.TreesEncountered(0, 0, 7, 1);
            var numberofTreesEncountered_5        = tobogganTrajectory.TreesEncountered(0, 0, 1, 2);
            var numberofTreesEncounteredProduct   = numberofTreesEncountered_1 * numberofTreesEncountered_2 * numberofTreesEncountered_3 * numberofTreesEncountered_4 * numberofTreesEncountered_5;

            Console.WriteLine($"Day 3: Number of trees encountered: {numberOfTreesEncountered}");
            Console.WriteLine($"Day 3: Number of trees encountered (all slopes product): {numberofTreesEncounteredProduct}");
            Console.WriteLine();

            // Day 4
            string day4FilePath = @"C:\Users\musomanu\source\advent-of-code-2020\2020-Day-4\PassportProcessingInput.txt";

            PassportProcessing passportProcessing = new PassportProcessing(day4FilePath);
            var numberOfValidPassports            = passportProcessing.GetValidPassportsCount();
            var numberOfValidPassportsRevised     = passportProcessing.GetValidPassportsCountRevised();

            Console.WriteLine($"Day 4: Number of valid passports: {numberOfValidPassports}");
            Console.WriteLine($"Day 4: Number of valid passports (revised validation): {numberOfValidPassportsRevised}");
            Console.WriteLine();

            // Day 5
            string day5FilePath = @"C:\Users\musomanu\source\advent-of-code-2020\2020-Day-5\BinaryBoardingInput.txt";

            BinaryBoarding binaryBoarding = new BinaryBoarding(day5FilePath);
            var            highestSeatId  = binaryBoarding.GetHighestSeatId();
            var            mySeatId       = binaryBoarding.GetMySeatId();

            Console.WriteLine($"Day 5: Highest seat id: {highestSeatId}");
            Console.WriteLine($"Day 5: My seat id: {mySeatId}");
            Console.WriteLine();
        }