Example #1
0
        static void Main(string[] args)
        {
            //var day01 = new Day01();
            //DayRunner.Run(day01);
            //var day02 = new Day02();
            //DayRunner.Run(day02);
            //var day03 = new Day03();
            //DayRunner.Run(day03);
            //var day04 = new Day04();
            //DayRunner.Run(day04);
            //var day05 = new Day05();
            //DayRunner.Run(day05);
            //var day06 = new Day06();
            //DayRunner.Run(day06);
            //var day07 = new Day07();
            //DayRunner.Run(day07);
            //var day08 = new Day08();
            //DayRunner.Run(day08);
            //var day09 = new Day09();
            //DayRunner.Run(day09);
            //var day10 = new Day10();
            //DayRunner.Run(day10);
            //var day11 = new Day11();
            //DayRunner.Run(day11);
            var day12 = new Day12();

            DayRunner.Run(day12);
            //var day13 = new Day13();
            //DayRunner.Run(day13);
        }
        public void TestTwo()
        {
            var input = new Dictionary <int, List <int> >();

            input.Add(0, new List <int> {
                2
            });
            input.Add(1, new List <int> {
                1
            });
            input.Add(2, new List <int> {
                0, 3, 4
            });
            input.Add(3, new List <int> {
                2, 4
            });
            input.Add(4, new List <int> {
                2, 3, 6
            });
            input.Add(5, new List <int> {
                6
            });
            input.Add(6, new List <int> {
                4, 5
            });

            Assert.AreEqual(2, Day12.GetResult(input).NonProgramCount);
        }
 public void Example1()
 {
     string[] moonStrings = new string[] { "<x=-1, y=0, z=2>", "<x=2, y=-10, z=-7>", "<x=4, y=-8, z=8>", "<x=3, y=5, z=-1>" };
     Day12.Problem(10, moonStrings, out int energyAfterIterations, out long returnToOrigin);
     Assert.AreEqual(179, energyAfterIterations);
     Assert.AreEqual(2772, returnToOrigin);
 }
 public void Example2()
 {
     string[] moonStrings = new string[] { "<x=-8, y=-10, z=0>", "<x=5, y=5, z=10>", "<x=2, y=-7, z=3>", "<x=9, y=-8, z=-3>" };
     Day12.Problem(100, moonStrings, out int energyAfterIterations, out long returnToOrigin);
     Assert.AreEqual(1940, energyAfterIterations);
     Assert.AreEqual(4686774924, returnToOrigin);
 }
Example #5
0
    public static void Y2016_Day12_Process_With_Toggle_Returns_Correct_Solution()
    {
        // Arrange
        string[] instructions = new[]
        {
            "cpy 2 a",
            "tgl a",
            "tgl a",
            "tgl a",
            "cpy 1 a",
            "dec a",
            "dec a",
        };

        int[] binsOfInterest = new[] { 0, 1, 2 };

        // Act
        var actual = Day12.Process(instructions, initialValueOfC: 0);

        // Assert
        actual.ShouldNotBeNull();
        actual.Count.ShouldBe(4);
        actual.ShouldContainKeyAndValue('a', 3);
        actual.ShouldContainKeyAndValue('b', 0);
        actual.ShouldContainKeyAndValue('c', 0);
        actual.ShouldContainKeyAndValue('d', 0);
    }
Example #6
0
        public void ResolvePart1__Test()
        {
            Day12 day = new Day12();

            string result = day.ResolvePart1(new string[]
            {
                "initial state: #..#.#..##......###...###",
                "",
                "...## => #",
                "..#.. => #",
                ".#... => #",
                ".#.#. => #",
                ".#.## => #",
                ".##.. => #",
                ".#### => #",
                "#.#.# => #",
                "#.### => #",
                "##.#. => #",
                "##.## => #",
                "###.. => #",
                "###.# => #",
                "####. => #",
            });

            Assert.AreEqual("325", result);
        }
Example #7
0
        public void Day12()
        {
            var d = new Day12();

            Assert.AreEqual(2280, d.NavigationDistancePart1());
            Assert.AreEqual(38693, d.NavigationDistancePart2());
        }
Example #8
0
        public void Day12()
        {
            var day = new Day12();

            Assert.Equal(283, day.FirstPart());
            Assert.Equal(195, day.SecondPart());
        }
Example #9
0
        public void TestApplyGravity()
        {
            var moons = Day12.ApplyGravity(new Moon[] {
                Moon.Parse("<x=-1, y=  0, z= 2>"),
                Moon.Parse("<x= 2, y=-10, z=-7>"),
                Moon.Parse("<x= 4, y= -8, z= 8>"),
                Moon.Parse("<x= 3, y=  5, z=-1>"),
            });

            Assert.Equal(3, moons[0].Velocity.X);
            Assert.Equal(-1, moons[0].Velocity.Y);
            Assert.Equal(-1, moons[0].Velocity.Z);

            Assert.Equal(1, moons[1].Velocity.X);
            Assert.Equal(3, moons[1].Velocity.Y);
            Assert.Equal(3, moons[1].Velocity.Z);

            Assert.Equal(-3, moons[2].Velocity.X);
            Assert.Equal(1, moons[2].Velocity.Y);
            Assert.Equal(-3, moons[2].Velocity.Z);

            Assert.Equal(-1, moons[3].Velocity.X);
            Assert.Equal(-3, moons[3].Velocity.Y);
            Assert.Equal(1, moons[3].Velocity.Z);
        }
Example #10
0
        public void Day12Test(string json, int expectedSum)
        {
            Day12 d   = new Day12();
            var   sum = d.GetSum(json);

            Assert.That(sum, Is.EqualTo(expectedSum));
        }
Example #11
0
        public void CanSolvePart2(string[] data, int expected)
        {
            var day    = new Day12();
            var result = day.SolvePart2(data);

            Assert.Equal(expected, result);
        }
Example #12
0
        public void GetDay12Part1AnswerTest()
        {
            int expected = 5937;
            int actual   = Day12.GetDay12Part1Answer();

            Assert.Equal(expected, actual);
        }
Example #13
0
        public void Part1()
        {
            var solver = new Day12();
            var result = solver.Solve(Input, 10);

            result.ShouldBe(179);
        }
Example #14
0
        public void TryingNewData(long generations, long expectedOutput)
        {
            var day    = new Day12();
            var result = day.SolveA(InputData.Day12b, generations);

            Assert.AreEqual(expectedOutput, result);
        }
Example #15
0
        public void Stars()
        {
            var run = new Day12();

            Assert.Equal("445", run.Result1());
            Assert.Equal("42495", run.Result2());
        }
Example #16
0
        public void PartATests(string input, long generations, int expectedOutput)
        {
            var day    = new Day12();
            var result = day.SolveA(input, generations);

            Assert.AreEqual(expectedOutput, result);
        }
Example #17
0
        public void PartATestsRealData(long generations, long expectedOutput)
        {
            var day    = new Day12();
            var result = day.SolveA(InputData.Day12, generations);

            Assert.AreEqual(expectedOutput, result);
        }
Example #18
0
        public void Part2(string file, string expected)
        {
            day12 = new Day12(file);
            var actual = day12.SolvePart2();

            Assert.AreEqual(expected, actual);
        }
Example #19
0
        public void Part2()
        {
            var solver = new Day12();
            var result = solver.Solve2(Input, _testOutputHelper);

            result.ShouldBe(2772);
        }
Example #20
0
    public void Y2021_Day12_Navigate_Returns_Correct_Value_3(int smallCaveVisitLimit, int expected)
    {
        // Arrange
        string[] nodes =
        {
            "fs-end",
            "he-DX",
            "fs-he",
            "start-DX",
            "pj-DX",
            "end-zg",
            "zg-sl",
            "zg-pj",
            "pj-he",
            "RW-he",
            "fs-DX",
            "pj-RW",
            "zg-RW",
            "start-pj",
            "he-WI",
            "zg-he",
            "pj-fs",
            "start-RW",
        };

        // Act
        int actual = Day12.Navigate(nodes, smallCaveVisitLimit);

        // Assert
        actual.ShouldBe(expected);
    }
Example #21
0
        public void Day12Test()
        {
            var initialStateAndRules = new List <string>()
            {
                "initial state: #..#.#..##......###...###",
                "",
                "...## => #",
                "..#.. => #",
                ".#... => #",
                ".#.#. => #",
                ".#.## => #",
                ".##.. => #",
                ".#### => #",
                "#.#.# => #",
                "#.### => #",
                "##.#. => #",
                "##.## => #",
                "###.. => #",
                "###.# => #",
                "####. => #",
            };
            var day = new Day12(initialStateAndRules);
            var sum = day.computePart1(20);

            Assert.AreEqual(325, sum);
        }
Example #22
0
        public void Solve2()
        {
            var input  = File.ReadAllLines("C:\\Code\\aoc2018\\aoc2018\\Data\\input12.txt").ToList();
            var result = Day12.Solve1(input, 50000000000);

            _output.WriteLine(result.ToString());
        }
Example #23
0
        public void TestMovementsPart2()
        {
            var movements = new string[]
            {
                "F10",
                "N3",
                "F7",
                "R90",
                "F11",
            }.Select(Day12.Parse).ToArray();

            var statusShip     = new Status(0, 0, 0);
            var statusWayPoint = new Status(10, 1, 0);
            var status         = Day12.Move2(statusWayPoint, statusShip, movements[0]);

            status.ship.Should().BeEquivalentTo(new Status(100, 10, 0));
            status.waypoint.Should().BeEquivalentTo(new Status(10, 1, 0));

            status = Day12.Move2(status.waypoint, status.ship, movements[1]);
            status.ship.Should().BeEquivalentTo(new Status(100, 10, 0));
            status.waypoint.Should().BeEquivalentTo(new Status(10, 4, 0));

            status = Day12.Move2(status.waypoint, status.ship, movements[2]);
            status.ship.Should().BeEquivalentTo(new Status(170, 38, 0));
            status.waypoint.Should().BeEquivalentTo(new Status(10, 4, 0));

            status = Day12.Move2(status.waypoint, status.ship, movements[3]);
            status.ship.Should().BeEquivalentTo(new Status(170, 38, 0));
            status.waypoint.Should().BeEquivalentTo(new Status(4, -10, 0));

            status = Day12.Move2(status.waypoint, status.ship, movements[4]);
            status.ship.Should().BeEquivalentTo(new Status(214, -72, 0));
            status.waypoint.Should().BeEquivalentTo(new Status(4, -10, 0));
        }
Example #24
0
        public void RuleParsing(string input, int key, bool outcome)
        {
            var rule = Day12.ParseRule(input);

            Assert.Equal(outcome, rule.Outcome);
            Assert.Equal(key, rule.Key);
        }
Example #25
0
        public void TestPart2()
        {
            string[] input = new string[]
            {
                "initial state: #..#.#..##......###...###",
                string.Empty,
                "...## => #",
                "..#.. => #",
                ".#... => #",
                ".#.#. => #",
                ".#.## => #",
                ".##.. => #",
                ".#### => #",
                "#.#.# => #",
                "#.### => #",
                "##.#. => #",
                "##.## => #",
                "###.. => #",
                "###.# => #",
                "####. => #"
            };

            Day12 day12 = new Day12();

            Assert.Equal(999999999374, day12.Part2(input));
        }
Example #26
0
        public void Solve()
        {
            var input  = InputDataHelper.Get(12).Trim();
            var solver = new Day12();
            var result = solver.Solve(input, 1000);

            _testOutputHelper.WriteLine(result.ToString());
        }
        public void GetNewVelocityTest()
        {
            var current = new Vector(0, 0, 0);
            var other   = new Vector(3, 0, -2);

            Day12.GetForce(current, other).Should()
            .BeEquivalentTo(new Vector(1, 0, -1));
        }
Example #28
0
    public void Part2()
    {
        var expected = 36;
        var day      = new Day12();
        var actual   = day.Part2(_input);

        Assert.Equal(expected, actual);
    }
Example #29
0
        public void Test2()
        {
            var input  = File.ReadAllLines("C:\\Code\\aoc2018\\aoc2018\\Data\\input12.txt").ToList();
            var result = Day12.Solve1(input, 500);

            // var result = Day12.Solve1(input, 50000000000);
            Assert.Equal(21428, result);
        }
Example #30
0
    public void RotateWaypoint(int x, int y, Direction direction, int amount, int expectedX, int expectedY)
    {
        var position       = new Position(x, y);
        var expected       = new Position(expectedX, expectedY);
        var actualPosition = Day12.RotateWaypoint(position, direction, amount);

        Assert.Equal(expected, actualPosition);
    }