Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            StreamReader Reader = new StreamReader(@"/Work/AoC/Day 3/day3.in");
            StreamWriter Writer = new StreamWriter(@"/Work/AoC/Day 3/day3.out");

            String[] FirstLine  = Reader.ReadLine().Split(",");
            String[] SecondLine = Reader.ReadLine().Split(",");

            GetPath(out PathA, FirstLine);
            GetPath(out PathB, SecondLine);
            List <KeyValuePair <(int, int), int> > Intersect = PathA.Where(d => PathB.ContainsKey(d.Key)).ToList();
            int minIntersection  = Intersect.Min(e => Math.Abs(e.Key.Item1) + Math.Abs(e.Key.Item2));
            int bestIntersection = Intersect.Min(e => PathA[e.Key] + PathB[e.Key]);

            Console.WriteLine("Minimum intersection: {0}", minIntersection);
            Console.WriteLine("Best intersection: {0}", bestIntersection);
            Writer.WriteLine(minIntersection);
            Writer.WriteLine(bestIntersection);
            Writer.Close();
            Reader.Close();
        }
Ejemplo n.º 2
0
        static int getTotalDistance(Intersect intersect, List <LineBase> wire1Lines, List <LineBase> wire2Lines)
        {
            Console.WriteLine(string.Format("For intersect {0}", intersect.coordinate));
            Console.WriteLine(string.Format("\t{0}", intersect.distance));
            int distance = intersect.distance;

            for (int i = 0; i < intersect.line1.index; i++)
            {
                var line = (from item in wire1Lines where item.index == i select item).FirstOrDefault();
                Console.WriteLine(string.Format("\t{0}", line.distance));
                distance += line.distance;
            }
            for (int i = 0; i < intersect.line2.index; i++)
            {
                var line = (from item in wire2Lines where item.index == i select item).FirstOrDefault();
                Console.WriteLine(string.Format("\t{0}", line.distance));
                distance += line.distance;
            }
            Console.WriteLine("\t-----------");
            Console.WriteLine(string.Format("\t{0}", distance));
            return(distance);
        }
Ejemplo n.º 3
0
        static List <Intersect> GetIntersections(List <LineBase> lineSet1, List <LineBase> lineSet2)
        {
            List <Intersect> intersects = new List <Intersect>();

            foreach (var p1 in lineSet1)
            {
                foreach (var p2 in lineSet2)
                {
                    Horizontal h = (p1 is Horizontal)?(Horizontal)p1:(Horizontal)p2;
                    Vertical   v = (p1 is Vertical)?(Vertical)p1:(Vertical)p2;
                    Coordinate c = LineMath.Intersect(h, v);
                    if (c != null && !(c.x == 0 && c.y == 0))
                    {
                        var intersect = new Intersect()
                        {
                            coordinate = c, line1 = p1, line2 = p2
                        };
                        intersects.Add(intersect);
                        Console.WriteLine(string.Format("Found {0},{1} distance {4} {2} {3}", c.x, c.y, p1, p2, intersect.distance));
                    }
                }
            }
            return(intersects);
        }