public void TestRotation() { const string input = @".#....#####...#.. ##...##.#####..## ##...#...#.#####. ..#.....#...###.. ..#.#.....#....##"; var asteroids = MonitorStation.Parse(input); var station = MonitorStation.GetBestStation(asteroids); Assert.AreEqual(Tuple.Create(8, 3), station); var firstAsteroidDestroyed = MonitorStation.DestroyAsteroid(asteroids, 1); Assert.AreEqual(Tuple.Create(8, 1), firstAsteroidDestroyed); var secondAsteroidDestroyed = MonitorStation.DestroyAsteroid(asteroids, 2); Assert.AreEqual(Tuple.Create(9, 0), secondAsteroidDestroyed); var ninthAsteroidDestroyed = MonitorStation.DestroyAsteroid(asteroids, 9); Assert.AreEqual(Tuple.Create(15, 1), ninthAsteroidDestroyed); var nthAsteroidDestroyed = MonitorStation.DestroyAsteroid(asteroids, 36); Assert.AreEqual(Tuple.Create(14, 3), nthAsteroidDestroyed); }
public void TestGetMaxViews(IEnumerable <Point> asteroids, Point p, int count) { var result = MonitorStation.FindBestAsteroid(asteroids); Assert.Equal(p, result.Asteroid); Assert.Equal(count, result.Count); }
public void TestStation() { var parsedInput = MonitorStation.Parse(_testInput); var station = MonitorStation.GetBestStation(parsedInput); Assert.AreEqual(Tuple.Create(3, 4), station); }
public void PuzzleOne() { var asteroids = File.ReadAllLines("tests/y2019/Day10.Input.txt") .GetAsteroidsMap(); var result = MonitorStation.FindBestAsteroid(asteroids).Count; Assert.Equal(230, result); }
public void Day10Part1_TestSolution() { string[] map = DayDataUtilities.ReadLinesFromFile("day10.txt"); Assert.NotNull(map); var sut = new MonitorStation(map); Assert.Equal(316, sut.Asteroids.Count); var bestStation = sut.FindBestStation(); Assert.Equal(26, bestStation.X); Assert.Equal(28, bestStation.Y); Assert.Equal(267, bestStation.Steps0); }
public void PuzzleTwo() { var asteroids = File.ReadAllLines("tests/y2019/Day10.Input.txt") .GetAsteroidsMap(); var laser = MonitorStation.FindBestAsteroid(asteroids).Asteroid; var bet = asteroids .Except(new [] { laser }) .VaporizeAll(laser, Enumerable.Empty <Point>()) .ElementAtOrDefault(200 - 1); Assert.Equal(1205, bet.X * 100 + bet.Y); }
public void TestParseStation() { var field = MonitorStation.Parse(_testInput); var expected = new List <Tuple <int, int> > { Tuple.Create(1, 0), Tuple.Create(4, 0), Tuple.Create(0, 2), Tuple.Create(1, 2), Tuple.Create(2, 2), Tuple.Create(3, 2), Tuple.Create(4, 2), Tuple.Create(4, 3), Tuple.Create(3, 4), Tuple.Create(4, 4) }; Assert.AreEqual(expected, field); }
private void LoadData() { FixedStationQueryCondition condition = new FixedStationQueryCondition(); ObservableCollection <FixedStationInfo> monitorList = QueryMonitorStationItemSource(condition); if (monitorList != null && monitorList.Count > 0) { ContextMenu contextMenu = GetContextMenu(); foreach (FixedStationInfo info in monitorList) { if (!Obj.screenMap.CheckCoordinate(new double[] { info.LONG == null ? 0 : info.LONG.Value, info.LAT == null ? 0 : info.LAT.Value })) { continue; } MonitorStation group = new MonitorStation(info); group.ContextMenu = contextMenu; Obj.screenMap.AddElement(group, Obj.screenMap.GetMapPointEx(info.LONG.Value, info.LAT.Value)); } } }
public void Day10Part2_TestSolution() { string[] map = DayDataUtilities.ReadLinesFromFile("day10.txt"); Assert.NotNull(map); var sut = new MonitorStation(map); var bestStation = new Point(26, 28); var dictLos = sut.CalculateLOS(bestStation); Assert.Equal(256, dictLos.Count); var polarPts = sut.MakeMapPolar(bestStation); // Start point is angle -1,5707963267948966, ie. -pi/2, wrap angle by adding 2 pi foreach (var pt in polarPts) { if (pt.angle < -1.5707963267948966) { pt.angle += 2 * Math.PI; } } Assert.Equal(sut.Asteroids.Count - 1, polarPts.Count); SortedDictionary <double, List <PolarPoint> > dictPolar = sut.MakePolarLOS(polarPts); sut.DumpPolarLOS(dictPolar); Assert.Equal(267, dictPolar.Count); int count = 1; PolarPoint rock200 = null; foreach (var angle in dictPolar.Keys) { if (count == 200) { rock200 = dictPolar[angle].Find(r => r.dist == dictPolar[angle].Min(p => p.dist)); break; } count++; } Assert.NotNull(rock200); Assert.Equal(1309, rock200.cartPt.Y + rock200.cartPt.X * 100); }
public void Day10Part1_Example01() { string[] map = new string[] { ".#..#", ".....", "#####", "....#", "...##" }; var sut = new MonitorStation(map); Assert.Equal(10, sut.Asteroids.Count); var bestStation = sut.FindBestStation(); Assert.Equal(3, bestStation.X); Assert.Equal(4, bestStation.Y); Assert.Equal(8, bestStation.Steps0); }