Exemplo n.º 1
0
        public void Trim()
        {
            var original = @"
#...##.#..
..#.#..#.#
.###....#.
###.##.##.
.###.#####
.##.#....#
#...######
.....#..##
#.####...#
#.##...##.".Trim();

            var expected = @"
.#.#..#.
###....#
##.##.##
###.####
##.#....
...#####
....#..#
.####...".Trim();

            var data     = original.ChopToList().Select(row => row.ToCharArray()).ToArray();
            var tile     = new Day20.Tile(0, data);
            var trimmed  = Day20.Trim(tile);
            var asString = Day20.DataToString(trimmed.Data).Trim();

            asString.ShouldBe(expected);
        }
Exemplo n.º 2
0
        public void GetDay20Part2AnswerTest()
        {
            int expected = 6834;
            int actual   = Day20.GetDay20Part2Answer();

            Assert.Equal(expected, actual);
        }
Exemplo n.º 3
0
        public void RotateAndFlip()
        {
            var original = @"
#....####.
#..#.##...
#.##..#...
######.#.#
.#...#.#.#
.#########
.###.#..#.
########.#
##...##.#.
..###.#.#.".Trim();

            var expected = @"
..#.###...
##.##....#
..#.###..#
###.#..###
.######.##
#.#.#.#...
#.###.###.
#.###.##..
.######...
.##...####".Trim();

            var input    = original.ChopToList().Select(row => row.ToCharArray().ToList()).ToList();
            var r1       = Day20.Flip(Day20.Rotate(input));
            var asString = Day20.DataToString(r1);

            asString.ShouldBe(expected);
        }
Exemplo n.º 4
0
        public void TransformSo()
        {
            var original = @"
#....####.
#..#.##...
#.##..#...
######.#.#
.#...#.#.#
.#########
.###.#..#.
########.#
##...##.#.
..###.#.#.".Trim();

            var expected = @"
..#.###...
##.##....#
..#.###..#
###.#..###
.######.##
#.#.#.#...
#.###.###.
#.###.##..
.######...
.##...####".Trim();

            var input    = original.ChopToList().Select(row => row.ToCharArray()).ToArray();
            var asTile   = new Day20.Tile(0, input);
            var r1       = Day20.TransformSo(asTile, "..#.###...", Day20.GetTop);
            var asString = Day20.DataToString(r1.Data);

            asString.ShouldBe(expected);
        }
Exemplo n.º 5
0
        public void Part2_Answer()
        {
            var day20  = new Day20();
            var actual = day20.FindRemaining(PUZZLE_INPUT);

            Assert.Equal(504, actual);
        }
Exemplo n.º 6
0
        public void RotateAndFlipMini()
        {
            var original = @"
123
456
789".Trim();

            var exFlipped = @"
789
456
123".Trim();

            var expected = @"
147
258
369".Trim();

            var input   = original.ChopToList().Select(row => row.ToCharArray().ToList()).ToList();
            var flipped = Day20.Flip(input);
            var rotated = Day20.Rotate(flipped);

            var flippedAsString = Day20.DataToString(flipped);

            flippedAsString.ShouldBe(exFlipped, "exFlipped");

            var rotatedAsString = Day20.DataToString(rotated);

            rotatedAsString.ShouldBe(expected, "expected");
        }
Exemplo n.º 7
0
        public long Part1(string input, int count)
        {
            var target = new Day20();
            var ps     = target.Part1(input);

            var i = 0;

            while (true)
            {
                Parallel.ForEach(ps, a => a.Tick());

                var gr  = ps.GroupBy(g => g.ManDistance).ToList();
                var min = gr.Min(m => m.Key);

                if (gr.First(f => f.Key == min).Count() == 1 && i >= 5 * count)
                {
                    TestContext.Progress.WriteLine($"Round {i} - ({min}, {gr.First(f => f.Key == min).Count()})");
                    return(ps.First(f => f.ManDistance == min).Index);
                }

                var d = string.Join(",", gr.First(f => f.Key == min).Select(s => $"[{s.Index},{s.ManDistance}]"));
                TestContext.Progress.WriteLine($"Round {i} - ({min}, {gr.First(f => f.Key == min).Count()} ({d}))");

                i++;
            }
        }
Exemplo n.º 8
0
        public void Part1_Answer()
        {
            var day20  = new Day20();
            var actual = day20.FindClosest(PUZZLE_INPUT);

            Assert.Equal(308, actual);
        }
Exemplo n.º 9
0
        public void Part2_Example()
        {
            var input = File.ReadAllText(EXAMPLE_FILEPATH).Replace("\r\n", "\n");
            var _sut  = new Day20(input);

            _sut.Part2.Should().Be("273");
        }
Exemplo n.º 10
0
        public void Part2_Actual()
        {
            var input = File.ReadAllText(INPUT_FILEPATH).Replace("\r\n", "\n");
            var _sut  = new Day20(input);

            _sut.Part2.Should().Be("1649");
        }
Exemplo n.º 11
0
        public void Part1_Actual()
        {
            var input = File.ReadAllText(INPUT_FILEPATH).Replace("\r\n", "\n\n");
            var _sut  = new Day20(input);

            _sut.Part1.Should().Be("14129524957217");
        }
Exemplo n.º 12
0
        public void Part2RealPuzzle()
        {
            var input  = GetPuzzleInput();
            var result = Day20.SolvePart2(input);

            Assert.Equal(438, result);
        }
Exemplo n.º 13
0
        public void Part1SamplePuzzle()
        {
            var input  = GetSampleInput();
            var result = Day20.SolvePart1(input);

            Assert.Equal(0, result);
        }
Exemplo n.º 14
0
        public void TestOne()
        {
            var particles = new List <Particle>();

            particles.Add(new Particle {
                Identifier = 0, Position = new Coordinates {
                    X = 3, Y = 0, Z = 0
                }, Velocity = new Coordinates {
                    X = 2, Y = 0, Z = 0
                }, Acceleration = new Coordinates {
                    X = -1, Y = 0, Z = 0
                }
            });
            particles.Add(new Particle {
                Identifier = 1, Position = new Coordinates {
                    X = 4, Y = 0, Z = 0
                }, Velocity = new Coordinates {
                    X = 0, Y = 0, Z = 0
                }, Acceleration = new Coordinates {
                    X = -2, Y = 0, Z = 0
                }
            });

            Assert.AreEqual(0, Day20.GetResult(particles).ClosestToZero);
        }
Exemplo n.º 15
0
    public void Y2021_Day20_Enhance_Returns_Correct_Value(int enhancements, int expected)
    {
        // Arrange
        string[] algorithm =
        {
            "..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..##",
            "#..######.###...####..#..#####..##..#.#####...##.#.#..#.##..#.#......#.###",
            ".######.###.####...#.##.##..#..#..#####.....#.#....###..#.##......#.....#.",
            ".#..#..##..#...##.######.####.####.#.#...#.......#..#.#.#...####.##.#.....",
            ".#..#...##.#.##..#...##.#.##..###.#......#.#.......#.#.#.####.###.##...#..",
            "...####.#..#..#.##.#....##..#.####....##...##..#...#......#.#.......#.....",
            "..##..####..#...#.#.#...##..#.#..###..#####........#..####......#..#",
        };

        string[] imageData =
        {
            string.Join(string.Empty, algorithm),
            string.Empty,
            "#..#.",
            "#....",
            "##..#",
            "..#..",
            "..###",
        };

        // Act
        (int actual, _) = Day20.Enhance(imageData, enhancements, Logger);

        // Assert
        actual.ShouldBe(expected);
    }
Exemplo n.º 16
0
        public void Solve()
        {
            var input  = File.ReadAllText("C:\\Code\\aoc2018\\aoc2018\\Data\\input20.txt");
            var result = new Day20().Solve(input.Trim());

            _output.WriteLine(result.ToString());
        }
Exemplo n.º 17
0
        public void PartAActual()
        {
            var day    = new Day20();
            var result = day.SolveA(InputData.Day20);

            Assert.AreEqual(4025, result);
        }
Exemplo n.º 18
0
        public void PartBTests(string input, int doorThreshold, int expectedOutput)
        {
            var day    = new Day20();
            var result = day.SolveB(input, doorThreshold);

            Assert.AreEqual(expectedOutput, result);
        }
Exemplo n.º 19
0
        public void Day16Test5()
        {
            var startRoom = Day20.CreateMap("^WSSEESWWWNW(S|NENNEEEENN(ESSSSW(NWSW|SSEN)|WSWWN(E|WWS(E|SS))))$");
            var allRooms  = startRoom.AllRooms.ToList();

            Assert.AreEqual(31, allRooms.Max(x => x.DistanceFromStart));
        }
Exemplo n.º 20
0
        public void PartATests(string input, int expectedOutput)
        {
            var day    = new Day20();
            var result = day.SolveA(input);

            Assert.AreEqual(expectedOutput, result);
        }
Exemplo n.º 21
0
        public void Day16Test3()
        {
            var startRoom = Day20.CreateMap("^ENNWSWW(NEWS|)SSSEEN(WNSE|)EE(SWEN|)NNN$");
            var allRooms  = startRoom.AllRooms.ToList();

            Assert.AreEqual(18, allRooms.Max(x => x.DistanceFromStart));
        }
Exemplo n.º 22
0
        public void Day16Test4()
        {
            var startRoom = Day20.CreateMap("^ESSWWN(E|NNENN(EESS(WNSE|)SSS|WWWSSSSE(SW|NNNE)))$");
            var allRooms  = startRoom.AllRooms.ToList();

            Assert.AreEqual(23, allRooms.Max(x => x.DistanceFromStart));
        }
Exemplo n.º 23
0
        public void Day16Test1()
        {
            var startRoom = Day20.CreateMap("^WNE$");
            var allRooms  = startRoom.AllRooms.ToList();

            Assert.AreEqual(3, allRooms.Max(x => x.DistanceFromStart));
        }
Exemplo n.º 24
0
        public void Day16Test2()
        {
            var startRoom = Day20.CreateMap("^ENWWW(NEEE|SSE(EE|N))$");
            var allRooms  = startRoom.AllRooms.ToList();

            Assert.AreEqual(10, allRooms.Max(x => x.DistanceFromStart));
        }
Exemplo n.º 25
0
        static void Main(string[] args)
        {
            var d20 = new Day20();

            Console.WriteLine($"Particle remaining closest to origin: {d20.GetParticleThatStaysClosestToOrigin()}");
            Console.WriteLine($"Number of particles after collisions: {d20.GetNumParticlesAfterCollisions()}");
        }
Exemplo n.º 26
0
            public void TileFits_Empty()
            {
                var tile   = new Day20.GridSides(10, 20, 30, 40);
                var actual = Day20.TileFits(tile, 0, 0, new Day20.GridTile[2, 2]);

                Assert.True(actual);
            }
Exemplo n.º 27
0
        public void Day20Test1()
        {
            Day    _day20                 = new Day20("^ENNWSWW(NEWS|)SSSEEN(WNSE|)EE(SWEN|)NNN$");
            string PartOneExpected        = "18";
            Tuple <string, string> Actual = _day20.getResult();

            Assert.AreEqual(PartOneExpected, Actual.Item1);
        }
Exemplo n.º 28
0
    public void Day20_Part1_Extra(string input, long ans)
    {
        var d = new Day20();

        d.OverrideInput(input);

        Assert.Equal(ans.ToString(), d.Part1());
    }
Exemplo n.º 29
0
        public void Day20Test3()
        {
            Day    _day20                 = new Day20("^WSSEESWWWNW(S|NENNEEEENN(ESSSSW(NWSW|SSEN)|WSWWN(E|WWS(E|SS))))$");
            string PartOneExpected        = "31";
            Tuple <string, string> Actual = _day20.getResult();

            Assert.AreEqual(PartOneExpected, Actual.Item1);
        }
Exemplo n.º 30
0
        public void Day20Test2()
        {
            Day    _day20                 = new Day20("^ESSWWN(E|NNENN(EESS(WNSE|)SSS|WWWSSSSE(SW|NNNE)))$");
            string PartOneExpected        = "23";
            Tuple <string, string> Actual = _day20.getResult();

            Assert.AreEqual(PartOneExpected, Actual.Item1);
        }