public void LocateIntersectionPoints_CoordinatesAndWirePath_ReturnsIntersectionPoint() { IDictionary <int, HashSet <int> > coordinates = new Dictionary <int, HashSet <int> >() { { 0, new HashSet <int> { 1, 2 } }, { 1, new HashSet <int> { 2 } }, { 2, new HashSet <int> { 0, 2 } }, { 3, new HashSet <int> { 0, 1, 2 } }, }; IList <string> wirePath = new List <string> { "R2" }; IList <Point> intersectionPoints = cut.LocateIntersectionPoints(coordinates, wirePath); Point intersectionPoint = intersectionPoints[0]; Assert.AreEqual(1, intersectionPoints.Count); Assert.IsTrue(intersectionPoints.Any(point => point.X == 2 && point.Y == 0)); }
public void Initialize() { IList <string> wirePaths = FileUtil.ReadAllLines("day_3_wire_paths.txt"); IList <string> wirePathOne = wirePaths[0].Split(","); IList <string> wirePathTwo = wirePaths[1].Split(","); IDictionary <int, HashSet <int> > coordinates = wireManager.MapPoints(wirePathOne); IList <Point> intersectionPoints = wireManager.LocateIntersectionPoints(coordinates, wirePathTwo); wireManager.SetFirstWireStepsToIntersectionPoints(intersectionPoints, wirePathOne); int closestDistance = wireManager.ClosestManhattanDistance(intersectionPoints); int fewestSteps = wireManager.FewestTotalSteps(intersectionPoints); WriteClosestDistanceAndFewestSteps(closestDistance, fewestSteps); }