Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
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);
        }