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); }
public void GetDay20Part2AnswerTest() { int expected = 6834; int actual = Day20.GetDay20Part2Answer(); Assert.Equal(expected, actual); }
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); }
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); }
public void Part2_Answer() { var day20 = new Day20(); var actual = day20.FindRemaining(PUZZLE_INPUT); Assert.Equal(504, actual); }
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"); }
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++; } }
public void Part1_Answer() { var day20 = new Day20(); var actual = day20.FindClosest(PUZZLE_INPUT); Assert.Equal(308, actual); }
public void Part2_Example() { var input = File.ReadAllText(EXAMPLE_FILEPATH).Replace("\r\n", "\n"); var _sut = new Day20(input); _sut.Part2.Should().Be("273"); }
public void Part2_Actual() { var input = File.ReadAllText(INPUT_FILEPATH).Replace("\r\n", "\n"); var _sut = new Day20(input); _sut.Part2.Should().Be("1649"); }
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"); }
public void Part2RealPuzzle() { var input = GetPuzzleInput(); var result = Day20.SolvePart2(input); Assert.Equal(438, result); }
public void Part1SamplePuzzle() { var input = GetSampleInput(); var result = Day20.SolvePart1(input); Assert.Equal(0, result); }
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); }
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); }
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()); }
public void PartAActual() { var day = new Day20(); var result = day.SolveA(InputData.Day20); Assert.AreEqual(4025, result); }
public void PartBTests(string input, int doorThreshold, int expectedOutput) { var day = new Day20(); var result = day.SolveB(input, doorThreshold); Assert.AreEqual(expectedOutput, result); }
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)); }
public void PartATests(string input, int expectedOutput) { var day = new Day20(); var result = day.SolveA(input); Assert.AreEqual(expectedOutput, result); }
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)); }
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)); }
public void Day16Test1() { var startRoom = Day20.CreateMap("^WNE$"); var allRooms = startRoom.AllRooms.ToList(); Assert.AreEqual(3, allRooms.Max(x => x.DistanceFromStart)); }
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)); }
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()}"); }
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); }
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); }
public void Day20_Part1_Extra(string input, long ans) { var d = new Day20(); d.OverrideInput(input); Assert.Equal(ans.ToString(), d.Part1()); }
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); }
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); }