示例#1
0
        public override void Puzzle1()
        {
            toboggan = new Toboggan(0, 0, 3, 1);
            int hits = toboggan.Travel(input);

            Console.WriteLine($"We have hit {hits} trees");
        }
示例#2
0
        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);
        }
示例#3
0
        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()));
        }
示例#4
0
        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);
        }
示例#5
0
        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 });
        }
示例#6
0
        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 });
        }
示例#7
0
        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);
        }
示例#8
0
        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));
        }
示例#9
0
        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);
        }
示例#10
0
 public void Setup()
 {
     _toboggan = new Toboggan(1, 1);
 }