浏览代码

Day 11 part 1

Lukas Angerer 2 年之前
父节点
当前提交
2c662c99c0
共有 4 个文件被更改,包括 174 次插入0 次删除
  1. 6 0
      Day11/GridPoint.cs
  2. 4 0
      Day11/Program.cs
  3. 24 0
      Day11/Universe.cs
  4. 140 0
      Day11/inputs/input-lar.txt

+ 6 - 0
Day11/GridPoint.cs

@@ -6,4 +6,10 @@ public record GridPoint(int X, int Y)
     {
         return new GridPoint(X + other.X, Y + other.Y);
     }
+
+    public int Distance(GridPoint other)
+    {
+        return Math.Abs(X - other.X)
+               + Math.Abs(Y - other.Y);
+    }
 }

+ 4 - 0
Day11/Program.cs

@@ -24,4 +24,8 @@ foreach (var g in universe.Galaxies)
     Console.WriteLine($"{g.Id}: {g.Position.X} / {g.Position.Y}");
 }
 
+var distance = universe.GetTotalDistance();
+Console.WriteLine();
+Console.WriteLine($"Total Distance: {distance}");
+
 return 0;

+ 24 - 0
Day11/Universe.cs

@@ -60,4 +60,28 @@ public class Universe
             }
         }
     }
+
+    public long GetTotalDistance()
+    {
+        var sum = 0;
+        foreach (var pair in BuildPairs())
+        {
+            var distance = pair.Left.Position.Distance(pair.Right.Position);
+            Console.WriteLine($"{pair.Left.Id} <-> {pair.Right.Id} = {distance}");
+            sum += distance;
+        }
+
+        return sum;
+    }
+
+    private IEnumerable<(Galaxy Left, Galaxy Right)> BuildPairs()
+    {
+        for (var i = 0; i < Galaxies.Count - 1; i++)
+        {
+            for (var j = i + 1; j < Galaxies.Count; j++)
+            {
+                yield return (Galaxies[i], Galaxies[j]);
+            }
+        }
+    }
 }

+ 140 - 0
Day11/inputs/input-lar.txt

@@ -0,0 +1,140 @@
+........#..........................#...............#.....#..................................#..........................#....................
+..............................................................................#.........................................................#...
+............#..............................#....................#.........................................#.................................
+................................#...........................................................................................................
+....................................................................................................#........................#..............
+..................#.....#.............................#..............................................................#......................
+.....................................#..............................#......#....................#.......#...................................
+...................................................................................#................................................#.......
+.......#.....................#..................................#.............................................#.............................
+..........................................................#............................#....................................................
+#............................................#.....#.......................................................................#................
+..................................#...........................................#.................................................#.........#.
+........................#........................................................................#..........................................
+....#.........#..........................................................................#..........................#.......................
+..............................#...........#......................#..........................................................................
+..................#.................#.......................................................................................................
+...........#................................................................................................................................
+......................................................#...................#...................#...................................#........#
+............................#...............#...............................................................................................
+....#................................................................................................#...............#........#.............
+.....................................#...........#...........#...............#..........#..............................................#....
+..............#......................................................#......................................#............#..................
+.........#.....................................................................................#............................................
+........................................................................................................#...................................
+............................................................................................................................................
+...#...........................................#..........................#.................................................................
+.................................................................................................#..........................................
+.............................#........................................................#....................#........#...........#...........
+............#......#.....................#.........#................#.......................................................................
+......................................................................................................#..................................#..
+..............................................................#.............................................................................
+.#........................#..............................................................#..................................................
+.........#.........................................................................#...............#...............#...............#........
+..................................#......................................#..................................................................
+............................................#............#.......#.............................#............................................
+............................#.......................#..........................................................#.......#.......#..........#.
+.....#..................................................................................#...................................................
+.................#.....................................................#..............................#.....................................
+.........................................#.....#............#......................................................................#........
+..........................................................................................................#.................................
+.................................................................#.............#............................................................
+.......................#.....#......................#......................................................................#................
+.#...........#.........................#.....................................................#.........#.........................#..........
+..................................................................................#..............................#..........................
+.......#...................................................................#................................................................
+................#..............#......................................................#...........#.....................#.............#.....
+.........................#...................#.............................................................#...............................#
+............................................................................................................................................
+........................................#.....................................................................................#.............
+....................#...............................................#........#........................#.....................................
+......#....................#................................#...............................#.....................#.........................
+.#..........................................................................................................................................
+............................................................................................................................................
+................#.............#...........#..........#............#....................................................#........#.....#.....
+.....................................#...................................................#........#...........#.............................
+....................#.........................................#............#................................................................
+#.................................................#..................................#.....................................#................
+............................................#................................................#.....................#........................
+..................................#.................................................................................................#.......
+.........#...............#..............#........................#............#..............................#..............................
+..............................#.........................#.......................................#.....#.....................................
+...............................................#.......................#....................................................................
+.....................#......................................................................................................................
+...............#...........................................................................................#................................
+..#...................................#....................................#........................#............#.............#............
+............................................#............................................#.............................................#....
+...............................................................#............................................................................
+........#.......................................................................................#..........................#................
+..........................#.......#......................#....................#.............................................................
+....#...........#.....................................................................................................#.....................
+...................................................................#..............#...................#..........................#..........
+..............................#..................................................................................#..........................
+.............#......#........................................#.........#..........................#.........................................
+.................................................#...................................#......................#............................#..
+........#..............................................#....................................................................................
+......................................#...................................#...................................................#.............
+............................................................................................................................................
+........................#.......................................................#.......................#...................................
+........................................................................................................................#.........#.........
+.......#....................................................................................................................................
+.............................................................#.....#........................#......................#.......................#
+#...........#.........................................................................#.....................................................
+...................................................#............................................#..........................#.........#......
+...................#................#....................................................................#.....#............................
+............................................................................................................................................
+..........................#............................#.......#.............................#..............................................
+....#...................................#........#......................#.....#.............................................................
+.....................................................................................................#.................#....................
+............................................#................................................................#.....................#........
+.........#.......................................................#...................#......................................................
+............................................................................................................................................
+................................#........................#.................#................................................................
+..........................#.........................................#.......................................................#..............#
+.#.................................................#.........#..............................................................................
+..................#.................#.............................................#.........#...........#............#......................
+.......................................................................................................................................#....
+.........#..................#...............................................................................................................
+............................................#........................................#.............................................#........
+........................................................................#...................................................................
+.#.................................................#..............#...........#............................#................................
+....................#.................#.........................................................#.........................................#.
+.............#.............................................................................#......................#........#................
+...............................#......................................................................#..........................#..........
+............................................................................................................................................
+........................#................................................#..............#...................................................
+........#.........................#......#.........#.........#..............................................................................
+..................................................................#................#............................#...........................
+..............................................................................................#.....#.......................................
+.....#......................................................................#...............................................................
+...................#.........................#........................................#..............................#..................#...
+.#.........................#.............................#.......................................#................................#.........
+............................................................................................................................................
+................................................#........................#...................................................#..............
+...........#............#.............................................................................#.....................................
+..................................#................................#...........#....................................#.......................
+#.........................................#....................................................#...............#............................
+.............................#...........................................................................................................#..
+.....#.......#.................................#.......................................#...........................................#........
+........................................................................................................#...................#...............
+...................................#.........................#..............................................................................
+.........#...........................................................#.............#..............................#.........................
+..................#........#.......................#....................................................................#......#........#...
+........................................................................................#...........#.......................................
+.................................#.......#..................................................................#...............................
+.............#......................................................................................................................#.......
+#.............................................................................#..................#..........................................
+....................#................#.......................#.............................#............#...................................
+....................................................................#...........................................#..........#.....#..........
+...............................#.......................#...............................................................................#....
+........#.......#...........................................................................................#...............................
+........................#..................................................................................................................#
+............................................................................................................................................
+..............................................................................................#......................................#......
+..........................................#..............................#...........#............................#.........................
+............#.............#..................................#..........................................#.................#.................
+........................................................................................................................................#...
+...................#.......................................................................#................................................
+#.................................#..................#.......................#..............................................................
+.............................#......................................................................#.....#.....#...................#.......
+......#........#.................................#............#......#......................................................................