Parcourir la source

Day 11 part 2 with expansion factor CLI argument

Lukas Angerer il y a 2 ans
Parent
commit
e6212b1b65
3 fichiers modifiés avec 16 ajouts et 15 suppressions
  1. 2 2
      Day11/GridPoint.cs
  2. 4 3
      Day11/Program.cs
  3. 10 10
      Day11/Universe.cs

+ 2 - 2
Day11/GridPoint.cs

@@ -1,13 +1,13 @@
 namespace Day10;
 
-public record GridPoint(int X, int Y)
+public record GridPoint(long X, long Y)
 {
     public GridPoint Add(GridPoint other)
     {
         return new GridPoint(X + other.X, Y + other.Y);
     }
 
-    public int Distance(GridPoint other)
+    public long Distance(GridPoint other)
     {
         return Math.Abs(X - other.X)
                + Math.Abs(Y - other.Y);

+ 4 - 3
Day11/Program.cs

@@ -8,16 +8,17 @@ if (args.Any(a => a == "--debug"))
     Console.WriteLine(Debugger.Launch());
 }
 
-if (args.Length < 1)
+if (args.Length < 2)
 {
-    Console.WriteLine("Requires 1 args: inputFileName");
+    Console.WriteLine("Requires 2 args: inputFileName, expansionFactor");
     return -1;
 }
 
 var inputFile = args[0];
+var expansionFactor = int.Parse(args[1]);
 var parser = new Parser();
 var universe = parser.Parse(inputFile);
-universe.Expand();
+universe.Expand(expansionFactor);
 
 foreach (var g in universe.Galaxies)
 {

+ 10 - 10
Day11/Universe.cs

@@ -13,10 +13,10 @@ public class Universe
         Galaxies.Add(galaxy);
     }
 
-    public void Expand()
+    public void Expand(int expansionFactor)
     {
-        var xMap = new Dictionary<int, IList<Galaxy>>();
-        var yMap = new Dictionary<int, IList<Galaxy>>();
+        var xMap = new Dictionary<long, IList<Galaxy>>();
+        var yMap = new Dictionary<long, IList<Galaxy>>();
 
         foreach (var g in Galaxies)
         {
@@ -32,8 +32,8 @@ public class Universe
             yMap[g.Position.Y].Add(g);
         }
 
-        var xPrev = -1;
-        var xExpand = 0;
+        var xPrev = -1L;
+        var xExpand = 0L;
         foreach (var x in xMap.Keys.Order())
         {
             xExpand += x - xPrev - 1;
@@ -41,13 +41,13 @@ public class Universe
             
             foreach (var g in xMap[x])
             {
-                var delta = new GridPoint(xExpand, 0);
+                var delta = new GridPoint(xExpand * (expansionFactor - 1), 0);
                 g.Move(delta);
             }
         }
         
-        var yPrev = -1;
-        var yExpand = 0;
+        var yPrev = -1L;
+        var yExpand = 0L;
         foreach (var y in yMap.Keys.Order())
         {
             yExpand += y - yPrev - 1;
@@ -55,7 +55,7 @@ public class Universe
             
             foreach (var g in yMap[y])
             {
-                var delta = new GridPoint(0, yExpand);
+                var delta = new GridPoint(0, yExpand * (expansionFactor - 1));
                 g.Move(delta);
             }
         }
@@ -63,7 +63,7 @@ public class Universe
 
     public long GetTotalDistance()
     {
-        var sum = 0;
+        var sum = 0L;
         foreach (var pair in BuildPairs())
         {
             var distance = pair.Left.Position.Distance(pair.Right.Position);