Пример #1
0
        public Result First(List <string> input)
        {
            var station  = new MonitoringStation(input);
            var position = station.FindBestPlace();

            return(new Result(position.nr));
        }
        public async Task Part1_Example4()
        {
            // Arrange
            var subject = new MonitoringStation();
            var input   =
                @".#..##.###...#######
##.############..##.
.#.######.########.#
.###.#######.####.#.
#####.##.#.##.###.##
..#####..#.#########
####################
#.####....###.#.#.##
##.#################
#####.##.###..####..
..######..##.#######
####.##.####...##..#
.#####..#.######.###
##...#.##########...
#.##########.#######
.####.#.###.###.#.##
....##.##.###..#####
.#.#.###########.###
#.#.#.#####.####.###
###.##.####.##.#..##";

            // Act
            var result = await subject.SolvePart1Async(input.ToMemoryStream());

            // Assert
            Assert.Equal(210.ToString(), result);
        }
Пример #3
0
        public void TestPart2d()
        {
            var ms = new MonitoringStation(".#..##.###...#########.############..##..#.######.########.#.###.#######.####.#.#####.##.#.##.###.##..#####..#.##############################.####....###.#.#.####.######################.##.###..####....######..##.###########.##.####...##..#.#####..#.######.#####...#.##########...#.##########.#######.####.#.###.###.#.##....##.##.###..#####.#.#.###########.####.#.#.#####.####.######.##.####.##.#..##");

            Assert.AreEqual(1009, ms.VaporiseOrder(201));
            //            Assert.AreEqual(1101, ms.VaporiseOrder(299));
        }
Пример #4
0
        public Result Second(List <string> input)
        {
            var station = new MonitoringStation(input);
            var value   = station.RunLaser();

            return(new Result(value));
        }
Пример #5
0
        public void TestDistance(double expected, double tol, double[] coord)
        {
            MonitoringStation ms = new MonitoringStation();
            double            d  = ms.Distance(coord[0], coord[1], coord[2], coord[3]);

            Assert.That(Math.Abs(d - expected) <= tol, Is.EqualTo(true));
        }
Пример #6
0
        private void btn_day10_Click(object sender, RoutedEventArgs e)
        {
            MonitoringStation s = new MonitoringStation();

            s.print();
            Console.WriteLine("Button 10 clicked");
        }
Пример #7
0
        public void TestAngle(double expected, double tol, double[] coord)
        {
            MonitoringStation ms = new MonitoringStation();
            double            a  = ms.Angle(coord[0], coord[1], coord[2], coord[3]);

            Console.WriteLine(a);
            Assert.That(Math.Abs(a - expected) <= tol, Is.EqualTo(true));
        }
Пример #8
0
        static void Main(string[] args)
        {
            var ms = new MonitoringStation("#..#.#.###.#...##.##.....#.#####.#.#.##.....##.###..#.###..###..#####..#####.#.#..#....#..##.##..#######.#####...#.###...##...#.#.###..###.#.#.#.######.....#.###..#.....##..##.#..#####...###.########.#..#####..#.#.#..###.###...##.##....##.###.###.##.#.#..####.....#.#..##..#..#.#..#####.######.##.#.#.#.#.#.#..###...##.##.###.##.#.###..####.##.#.#.####.#####.#.#..##...##..##..#.#.##.###...####.###.#.###.#.#..####.#####..#####.#.##..###..###..#..##...#.#.##.####...##....####.##.####..#..##.#.#....#..#..#..........#..#.#.####.###..###.###.#.#.#....##########.#######.#.##.##");

            Console.WriteLine(ms.MaxVisible());
            Console.WriteLine(ms.VaporiseOrder(200));
            Console.ReadKey();
        }
Пример #9
0
        public string SolvePartOne(string[] input)
        {
            List <Asteroid>   asteroids = GetAsteroidCoordinates(input);
            MonitoringStation ms        = new MonitoringStation();

            Asteroid a = ms.FindBestAsteroid(asteroids, out int observableAsteroids);

            return($"Best asteroid ({a.X},{a.Y}) can view {observableAsteroids} asteroids.");
        }
Пример #10
0
        public TestResult Test2(List <string> input)
        {
            var  station  = new MonitoringStation(input);
            var  value    = station.RunLaser();
            var  expected = 802;
            bool succeded = value == expected;

            return(new TestResult(succeded, expected, value));
        }
Пример #11
0
        public TestResult Test(List <string> input)
        {
            var  station  = new MonitoringStation(input);
            var  position = station.FindBestPlace();
            var  expected = 210;
            bool succeded = position.nr == expected;

            return(new TestResult(succeded, expected, position.nr));
        }
Пример #12
0
        public void TestPart2a()
        {
            var ms = new MonitoringStation(".#..##.###...#########.############..##..#.######.########.#.###.#######.####.#.#####.##.#.##.###.##..#####..#.##############################.####....###.#.#.####.######################.##.###..####....######..##.###########.##.####...##..#.#####..#.######.#####...#.##########...#.##########.#######.####.#.###.###.#.##....##.##.###..#####.#.#.###########.####.#.#.#####.####.######.##.####.##.#..##");

            Assert.AreEqual(1112, ms.VaporiseOrder(1));
            Assert.AreEqual(1201, ms.VaporiseOrder(2));
            Assert.AreEqual(1202, ms.VaporiseOrder(3));
            Assert.AreEqual(1208, ms.VaporiseOrder(10));
            Assert.AreEqual(1600, ms.VaporiseOrder(20));
            Assert.AreEqual(1609, ms.VaporiseOrder(50));
            Assert.AreEqual(1016, ms.VaporiseOrder(100));
        }
Пример #13
0
        public string SolvePartTwo(string[] input, int toVaporize, int x, int y)
        {
            List <Asteroid> asteroids = GetAsteroidCoordinates(input);

            int      index  = asteroids.FindIndex(a => a.X == x && a.Y == y);
            Asteroid center = asteroids[index];

            asteroids.RemoveAt(index);

            MonitoringStation ms = new MonitoringStation();
            Asteroid          lastVaporizedAsteroid = ms.Vaporize(center, asteroids, toVaporize);

            return((lastVaporizedAsteroid.X * 100 + lastVaporizedAsteroid.Y).ToString());
        }
        public async Task Part1_ConcreteExcercise()
        {
            // Arrange
            var subject = new MonitoringStation();
            var input   =
                @"#..#....#...#.#..#.......##.#.####
#......#..#.#..####.....#..#...##.
.##.......#..#.#....#.#..#.#....#.
###..#.....###.#....##.....#...#..
...#.##..#.###.......#....#....###
.####...##...........##..#..#.##..
..#...#.#.#.###....#.#...##.....#.
......#.....#..#...##.#..##.#..###
...###.#....#..##.#.#.#....#...###
..#.###.####..###.#.##..#.##.###..
...##...#.#..##.#............##.##
....#.##.##.##..#......##.........
.#..#.#..#.##......##...#.#.#...##
.##.....#.#.##...#.#.#...#..###...
#.#.#..##......#...#...#.......#..
#.......#..#####.###.#..#..#.#.#..
.#......##......##...#..#..#..###.
#.#...#..#....##.#....#.##.#....#.
....#..#....##..#...##..#..#.#.##.
#.#.#.#.##.#.#..###.......#....###
...#.#..##....###.####.#..#.#..#..
#....##..#...##.#.#.........##.#..
.#....#.#...#.#.........#..#......
...#..###...#...#.#.#...#.#..##.##
.####.##.#..#.#.#.#...#.##......#.
.##....##..#.#.#.......#.....####.
#.##.##....#...#..#.#..###..#.###.
...###.#..#.....#.#.#.#....#....#.
......#...#.........##....#....##.
.....#.....#..#.##.#.###.#..##....
.#.....#.#.....#####.....##..#....
.####.##...#.......####..#....##..
.#.#.......#......#.##..##.#.#..##
......##.....##...##.##...##......";

            // Act
            var result = await subject.SolvePart1Async(input.ToMemoryStream());

            // Assert
            Assert.Equal(334.ToString(), result);
        }
Пример #15
0
        public void TestStraightLine2()
        {
            var ms = new MonitoringStation("####...........#");

            Assert.AreEqual(4, ms.MaxVisible());
        }
Пример #16
0
        public void TestGiven3()
        {
            var ms = new MonitoringStation("#.#...#.#..###....#..#....#...##.#.#.#.#....#.#.#..##..###.#..#...##....##....##......#....####.###.");

            Assert.AreEqual(35, ms.MaxVisible());
        }
Пример #17
0
        public void TestGiven5()
        {
            var ms = new MonitoringStation(".#..##.###...#########.############..##..#.######.########.#.###.#######.####.#.#####.##.#.##.###.##..#####..#.##############################.####....###.#.#.####.######################.##.###..####....######..##.###########.##.####...##..#.#####..#.######.#####...#.##########...#.##########.#######.####.#.###.###.#.##....##.##.###..#####.#.#.###########.####.#.#.#####.####.######.##.####.##.#..##");

            Assert.AreEqual(210, ms.MaxVisible());
        }
        public async Task Part2_DetailedExample()
        {
            // Arrange
            var subject = new MonitoringStation();
            var input   =
                @".#..##.###...#######
##.############..##.
.#.######.########.#
.###.#######.####.#.
#####.##.#.##.###.##
..#####..#.#########
####################
#.####....###.#.#.##
##.#################
#####.##.###..####..
..######..##.#######
####.##.####...##..#
.#####..#.######.###
##...#.##########...
#.##########.#######
.####.#.###.###.#.##
....##.##.###..#####
.#.#.###########.###
#.#.#.#####.####.###
###.##.####.##.#..##";

            // Act
            var asteroids = await subject.GetAsteroidsAsync(input.ToMemoryStream());

            var laser     = subject.GetLaser(asteroids);
            var vaporized = subject.GetVaporizedAsteroids(asteroids, laser).ToList();

            Assert.Equal(299, vaporized.Count);
            Assert.Equal(11, laser.Coord.X);
            Assert.Equal(13, laser.Coord.Y);

            // Assert
            Assert.Equal(11, vaporized[0].X);
            Assert.Equal(12, vaporized[0].Y);

            Assert.Equal(12, vaporized[1].X);
            Assert.Equal(1, vaporized[1].Y);

            Assert.Equal(12, vaporized[2].X);
            Assert.Equal(2, vaporized[2].Y);

            Assert.Equal(12, vaporized[9].X);
            Assert.Equal(8, vaporized[9].Y);

            Assert.Equal(16, vaporized[19].X);
            Assert.Equal(0, vaporized[19].Y);

            Assert.Equal(16, vaporized[49].X);
            Assert.Equal(9, vaporized[49].Y);

            Assert.Equal(10, vaporized[99].X);
            Assert.Equal(16, vaporized[99].Y);

            Assert.Equal(9, vaporized[198].X);
            Assert.Equal(6, vaporized[198].Y);

            Assert.Equal(8, vaporized[199].X);
            Assert.Equal(2, vaporized[199].Y);

            Assert.Equal(10, vaporized[200].X);
            Assert.Equal(9, vaporized[200].Y);

            Assert.Equal(11, vaporized[298].X);
            Assert.Equal(1, vaporized[298].Y);
        }
Пример #19
0
        public void TestNegativeStraightLine()
        {
            var ms = new MonitoringStation("...#..#..#..#...");

            Assert.AreEqual(2, ms.MaxVisible());
        }
Пример #20
0
        public void TestHorizontalLine()
        {
            var ms = new MonitoringStation("####............");

            Assert.AreEqual(2, ms.MaxVisible());
        }