about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2021-11-09 17:02:38 -0500
committerBen Harris <ben@tilde.team>2021-11-09 17:02:38 -0500
commitffb4a8e7a4d105a94d0480e56d0c03e0f18ac55d (patch)
tree5e0c460d2962ae3d8a81f37d8a6ea5dd0c88dc67
parentf6b72dd9ee8409206bc8c1127e25b3d5b88a7cc4 (diff)
fix nullable logic
-rw-r--r--aoc2019/Day03.cs2
-rw-r--r--aoc2019/Day15.cs24
2 files changed, 11 insertions, 15 deletions
diff --git a/aoc2019/Day03.cs b/aoc2019/Day03.cs
index 8b997f5..91f7a57 100644
--- a/aoc2019/Day03.cs
+++ b/aoc2019/Day03.cs
@@ -29,7 +29,7 @@ public sealed class Day03 : Day
 
         foreach (var step in line.Split(','))
         {
-            var d = int.Parse(step.Substring(1));
+            var d = int.Parse(step[1..]);
             switch (step[0])
             {
                 case 'U':
diff --git a/aoc2019/Day15.cs b/aoc2019/Day15.cs
index 9c1fa00..2c080a7 100644
--- a/aoc2019/Day15.cs
+++ b/aoc2019/Day15.cs
@@ -17,7 +17,7 @@ public sealed class Day15 : Day
         var halt = IntCodeVM.HaltType.Waiting;
         while (halt == IntCodeVM.HaltType.Waiting)
         {
-            var direction = currentLocation.NextDirection();
+            var direction = currentLocation!.NextDirection();
             if (direction <= 4)
             {
                 var (x, y) = currentLocation.Neighbor(direction);
@@ -46,15 +46,11 @@ public sealed class Day15 : Day
                 if (direction > 0)
                 {
                     halt = vm.Run(direction);
-                    switch (vm.Result)
+                    currentLocation = vm.Result switch
                     {
-                        case Location.Empty:
-                        case Location.System:
-                            currentLocation = Location.GetLocation(currentLocation.Neighbor(direction));
-                            break;
-                        default:
-                            throw new Exception($"Unknown or unexpected response for previous room: {vm.Result}");
-                    }
+                        Location.Empty or Location.System => Location.GetLocation(currentLocation.Neighbor(direction)),
+                        _ => throw new Exception($"Unknown or unexpected response for previous room: {vm.Result}"),
+                    };
                 }
                 else
                 {
@@ -90,10 +86,10 @@ public sealed class Day15 : Day
 
                     currentLocation = Location.OxygenLocation;
                     var distance = 0;
-                    while (currentLocation.PreviousDirection != 0)
+                    while (currentLocation?.PreviousDirection != 0)
                     {
                         distance++;
-                        currentLocation = Location.GetLocation(currentLocation.PreviousLocation());
+                        currentLocation = Location.GetLocation(currentLocation!.PreviousLocation());
                     }
 
                     return $"{distance}";
@@ -154,7 +150,7 @@ public sealed class Day15 : Day
             AllLocations.Add((x, y), this);
         }
 
-        public static Location OxygenLocation { get; private set; }
+        public static Location? OxygenLocation { get; private set; }
         public int PreviousDirection { get; }
         private int X { get; }
         private int Y { get; }
@@ -204,12 +200,12 @@ public sealed class Day15 : Day
             return searchDirection++;
         }
 
-        public static Location GetLocation(int x, int y)
+        public static Location? GetLocation(int x, int y)
         {
             return AllLocations.ContainsKey((x, y)) ? AllLocations[(x, y)] : null;
         }
 
-        public static Location GetLocation((int x, int y) coords)
+        public static Location? GetLocation((int x, int y) coords)
         {
             return GetLocation(coords.x, coords.y);
         }