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); }
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]); }
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); }
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 PuzzleOne() { // Arrange var input = CreateTestData(); // Act var actual = TobogganTrajectory.HowManyTrees(input, new Point(3, 1)); // Assert Assert.Equal(7, actual); }
public void PuzzleTwo() { // Arrange var input = CreateTestData(); // Act var actual = TobogganTrajectory.HowManyTrees(input, CreateSlopes().ToArray()); // Assert Assert.Equal(336, actual); }
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); }
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"); }
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); }
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); }
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 void ReadLines() => _tobogganTrajectory = new TobogganTrajectory( map: File.ReadLines(Path.Combine(AppContext.BaseDirectory, $"App_Data/{3.ToString("D2")}.txt")));
public void TreeCounterFromExample() { int treeCounter = TobogganTrajectory.TreeCounterFromInput(this.input); Assert.IsTrue(treeCounter == 7); }
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(); }