public override void Puzzle1() { toboggan = new Toboggan(0, 0, 3, 1); int hits = toboggan.Travel(input); Console.WriteLine($"We have hit {hits} trees"); }
public void SampleTerrainTest() { List <string> testInput = new List <string>(); testInput.Add("..##......."); testInput.Add("#...#...#.."); testInput.Add(".#....#..#."); testInput.Add("..#.#...#.#"); testInput.Add(".#...##..#."); testInput.Add("..#.##....."); testInput.Add(".#.#.#....#"); testInput.Add(".#........#"); testInput.Add("#.##...#..."); testInput.Add("#...##....#"); testInput.Add(".#..#...#.#"); // Act //generate terrain Terrain TR = new Terrain(FileUtils.CreateTempFileFromList(testInput)); //Start Tobbogan Toboggan TB = new Toboggan(0, 0, TR); TB.Run(); Assert.AreEqual(7, TB.treeCount); }
public override string PartOne(string input) { Coords startingLoc = new Coords(0, 0); Map treeMap = new Map(CreateMap(input), startingLoc, 3, 1); Toboggan tob = new Toboggan(treeMap); return(Convert.ToString(tob.DownhillRun())); }
public void Resolve() { var map = Map.Parse(File.ReadAllLines("./input/input3.txt")); var toboggan = new Toboggan(map, 3); var squares = toboggan.SlideDown(); squares.Count(s => s == Square.Tree).Should().Be(247); }
public void TobogganSlideDown() { var map = Map.Parse(new[] { ".#", "#." }); var toboggan = new Toboggan(map, 1); var squares = toboggan.SlideDown(); squares.Should().BeEquivalentTo(new[] { Square.Open, Square.Open }); }
public void TobogganSlideDownSlopeOfMultipleRows() { var map = Map.Parse(new[] { ".#", ".#", ".#", ".#", ".#" }); var toboggan = new Toboggan(map, new Slope(1, 2)); var squares = toboggan.SlideDown(); squares.Count().Should().Be(3); squares.Should().BeEquivalentTo(new[] { Square.Open, Square.Tree, Square.Open }); }
public void ResolvePart2() { var map = Map.Parse(File.ReadAllLines("./input/input3.txt")); var squares = new Toboggan(map, new Slope(3)).SlideDown(); long r1 = new Toboggan(map, new Slope(1)).SlideDown().Count(s => s == Square.Tree); long r3 = new Toboggan(map, new Slope(3)).SlideDown().Count(s => s == Square.Tree); long r5 = new Toboggan(map, new Slope(5)).SlideDown().Count(s => s == Square.Tree); long r7 = new Toboggan(map, new Slope(7)).SlideDown().Count(s => s == Square.Tree); long r12 = new Toboggan(map, new Slope(1, 2)).SlideDown().Count(s => s == Square.Tree); (r1 * r3 * r5 * r7 * r12).Should().Be(2983070376); }
public override string PartTwo(string input) { Coords startingLoc = new Coords(0, 0); Map treeMap = new Map(CreateMap(input), startingLoc, 1, 1); Toboggan tob = new Toboggan(treeMap); var treeCount1 = tob.DownhillRun(); tob.UpdateSlope(3, 1); var treeCount2 = tob.DownhillRun(); tob.UpdateSlope(5, 1); var treeCount3 = tob.DownhillRun(); tob.UpdateSlope(7, 1); var treeCount4 = tob.DownhillRun(); tob.UpdateSlope(1, 2); var treeCount5 = tob.DownhillRun(); return(Convert.ToString(treeCount1 * treeCount2 * treeCount3 * treeCount4 * treeCount5)); }
public void SampleFindOptimalSpeed() { List <string> testInput = new List <string>(); testInput.Add("..##......."); testInput.Add("#...#...#.."); testInput.Add(".#....#..#."); testInput.Add("..#.#...#.#"); testInput.Add(".#...##..#."); testInput.Add("..#.##....."); testInput.Add(".#.#.#....#"); testInput.Add(".#........#"); testInput.Add("#.##...#..."); testInput.Add("#...##....#"); testInput.Add(".#..#...#.#"); // Act //generate terrain Terrain TR = new Terrain(FileUtils.CreateTempFileFromList(testInput)); //Start Tobbogan Toboggan TB1 = new Toboggan(0, 0, TR, 1, 1); TB1.Run(); Toboggan TB2 = new Toboggan(0, 0, TR, 3, 1); TB2.Run(); Toboggan TB3 = new Toboggan(0, 0, TR, 5, 1); TB3.Run(); Toboggan TB4 = new Toboggan(0, 0, TR, 7, 1); TB4.Run(); Toboggan TB5 = new Toboggan(0, 0, TR, 1, 2); TB5.Run(); Assert.AreEqual(336, TB1.treeCount * TB2.treeCount * TB3.treeCount * TB4.treeCount * TB5.treeCount); }
public void Setup() { _toboggan = new Toboggan(1, 1); }