From 7bd1471df62e92517c8177f92f62d71154306c8d Mon Sep 17 00:00:00 2001 From: "Valeriano A.R." Date: Sun, 1 Dec 2024 18:42:43 +0100 Subject: [PATCH] WIP Apply nullability --- AdventOfCode.Common/AdventOfCode.Common.csproj | 2 +- .../AdventOfCode2017.Tests.csproj | 2 ++ AdventOfCode2017/AdventOfCode2017.csproj | 1 + AdventOfCode2017/Day03.cs | 4 ++-- .../AdventOfCode2018.Tests.csproj | 2 ++ AdventOfCode2018/AdventOfCode2018.csproj | 1 + AdventOfCode2018/Day01.cs | 4 ++-- AdventOfCode2018/Day03.cs | 4 ++-- AdventOfCode2018/Day04.cs | 3 ++- AdventOfCode2018/Day06.cs | 3 ++- AdventOfCode2018/Day07.cs | 2 +- AdventOfCode2018/Day09.cs | 14 +++++++------- AdventOfCode2018/Day12.cs | 4 ++-- AdventOfCode2018/Day13.cs | 12 ++++++------ AdventOfCode2018/Day15.cs | 2 +- AdventOfCode2018/Day16.cs | 4 ++-- AdventOfCode2018/Day23.cs | 8 ++++---- .../AdventOfCode2020.Tests.csproj | 2 ++ AdventOfCode2020/AdventOfCode2020.csproj | 1 + AdventOfCode2020/Day05.cs | 6 +++--- AdventOfCode2020/Day07.cs | 2 +- .../AdventOfCode2023.Tests.csproj | 3 ++- AdventOfCode2023/AdventOfCode2023.csproj | 2 +- .../AdventOfCode2024.Tests.csproj | 6 +----- AdventOfCode2024/AdventOfCode2024.csproj | 2 +- 25 files changed, 52 insertions(+), 44 deletions(-) diff --git a/AdventOfCode.Common/AdventOfCode.Common.csproj b/AdventOfCode.Common/AdventOfCode.Common.csproj index 742dce4..31e67fa 100644 --- a/AdventOfCode.Common/AdventOfCode.Common.csproj +++ b/AdventOfCode.Common/AdventOfCode.Common.csproj @@ -3,8 +3,8 @@ net8.0 enable - AdventOfCode.Common enable + AdventOfCode.Common diff --git a/AdventOfCode2017.Tests/AdventOfCode2017.Tests.csproj b/AdventOfCode2017.Tests/AdventOfCode2017.Tests.csproj index 3c7d317..be33a54 100644 --- a/AdventOfCode2017.Tests/AdventOfCode2017.Tests.csproj +++ b/AdventOfCode2017.Tests/AdventOfCode2017.Tests.csproj @@ -3,9 +3,11 @@ net8.0 enable + enable AdventOfCode2017.Tests false + true diff --git a/AdventOfCode2017/AdventOfCode2017.csproj b/AdventOfCode2017/AdventOfCode2017.csproj index a9ecb47..272cef0 100644 --- a/AdventOfCode2017/AdventOfCode2017.csproj +++ b/AdventOfCode2017/AdventOfCode2017.csproj @@ -4,6 +4,7 @@ Exe net8.0 enable + enable AdventOfCode2017 diff --git a/AdventOfCode2017/Day03.cs b/AdventOfCode2017/Day03.cs index ae02610..9680899 100644 --- a/AdventOfCode2017/Day03.cs +++ b/AdventOfCode2017/Day03.cs @@ -30,11 +30,11 @@ public class Day03 : IDay { public string ResolvePart1(string[] inputs) { - return null; + return string.Empty; } public string ResolvePart2(string[] inputs) { - return null; + return string.Empty; } } \ No newline at end of file diff --git a/AdventOfCode2018.Tests/AdventOfCode2018.Tests.csproj b/AdventOfCode2018.Tests/AdventOfCode2018.Tests.csproj index 6d9a17c..3b7a6db 100644 --- a/AdventOfCode2018.Tests/AdventOfCode2018.Tests.csproj +++ b/AdventOfCode2018.Tests/AdventOfCode2018.Tests.csproj @@ -3,9 +3,11 @@ net8.0 enable + enable AdventOfCode2018.Tests false + true diff --git a/AdventOfCode2018/AdventOfCode2018.csproj b/AdventOfCode2018/AdventOfCode2018.csproj index 9a95a67..13319b9 100644 --- a/AdventOfCode2018/AdventOfCode2018.csproj +++ b/AdventOfCode2018/AdventOfCode2018.csproj @@ -4,6 +4,7 @@ Exe net8.0 enable + enable AdventOfCode2018 diff --git a/AdventOfCode2018/Day01.cs b/AdventOfCode2018/Day01.cs index 6061a6d..126f01f 100644 --- a/AdventOfCode2018/Day01.cs +++ b/AdventOfCode2018/Day01.cs @@ -82,7 +82,7 @@ public class Day01 : IDay public string ResolvePart2(string[] inputs) { int accumulator = 0; - List accumulatorHistory = new(); + List accumulatorHistory = []; int? repeatedAccumulator = null; while (repeatedAccumulator == null) { @@ -108,6 +108,6 @@ public class Day01 : IDay } } } - return repeatedAccumulator.ToString(); + return repeatedAccumulator.ToString() ?? string.Empty; } } \ No newline at end of file diff --git a/AdventOfCode2018/Day03.cs b/AdventOfCode2018/Day03.cs index bd6d7dd..ea871bb 100644 --- a/AdventOfCode2018/Day03.cs +++ b/AdventOfCode2018/Day03.cs @@ -94,7 +94,7 @@ public class Day03 : IDay { List claims = inputs.Select(Claim.FromString).ToList(); - Claim unOverlappingClaim = null; + Claim? unOverlappingClaim = null; for (int i = 0; i < claims.Count; i++) { bool overlaps = false; @@ -113,7 +113,7 @@ public class Day03 : IDay break; } } - return unOverlappingClaim.ID.ToString(); + return unOverlappingClaim?.ID.ToString() ?? string.Empty; } diff --git a/AdventOfCode2018/Day04.cs b/AdventOfCode2018/Day04.cs index b9b9bef..cc27232 100644 --- a/AdventOfCode2018/Day04.cs +++ b/AdventOfCode2018/Day04.cs @@ -71,7 +71,7 @@ public class Day04 : IDay Dictionary dictFullHistogram = BuildFullHistogram(guardEvents); // Find sleepier guard - GuardSleepHistogram highestSleeperHistogram = null; + GuardSleepHistogram? highestSleeperHistogram = null; long highestTotalSleep = long.MinValue; foreach (GuardSleepHistogram guardHistogram in dictFullHistogram.Values) { @@ -83,6 +83,7 @@ public class Day04 : IDay highestTotalSleep = totalSleep; } } + if (highestSleeperHistogram == null) { return string.Empty; } // Find sleepier minute int maxSleepMinute = int.MinValue; diff --git a/AdventOfCode2018/Day06.cs b/AdventOfCode2018/Day06.cs index 29dec71..d140bdc 100644 --- a/AdventOfCode2018/Day06.cs +++ b/AdventOfCode2018/Day06.cs @@ -97,6 +97,7 @@ public class Day06 : IDay return inputs .Where(input => string.IsNullOrEmpty(input) == false) .Select(ChronoPoint.FromString) + .OfType() .ToList(); } @@ -197,7 +198,7 @@ public class Day06 : IDay public int X { get; set; } public int Y { get; set; } - public static ChronoPoint FromString(string strPoint) + public static ChronoPoint? FromString(string strPoint) { if (string.IsNullOrEmpty(strPoint)) { return null; } string[] parts = strPoint.Split([", "], StringSplitOptions.RemoveEmptyEntries); diff --git a/AdventOfCode2018/Day07.cs b/AdventOfCode2018/Day07.cs index e00231a..c2a32b3 100644 --- a/AdventOfCode2018/Day07.cs +++ b/AdventOfCode2018/Day07.cs @@ -204,7 +204,7 @@ public class Day07 : IDay private class SimulatedWorker { - public InstructionNode CurrentInstruction { get; private set; } + public InstructionNode? CurrentInstruction { get; private set; } private int ElapsedTime { get; set; } public void SetInstruction(InstructionNode instruction) diff --git a/AdventOfCode2018/Day09.cs b/AdventOfCode2018/Day09.cs index 8e077cb..a1c70e2 100644 --- a/AdventOfCode2018/Day09.cs +++ b/AdventOfCode2018/Day09.cs @@ -87,16 +87,16 @@ public class Day09 : IDay public class Marble { public long Value { get; init; } - public Marble Previous { get; set; } - public Marble Next { get; set; } + public Marble? Previous { get; set; } + public Marble? Next { get; set; } } public class MarbleGame { private Dictionary Scores { get; } = new(); - private Marble _firstMarble; - private Marble _currentMarble; + private Marble? _firstMarble; + private Marble? _currentMarble; private long _currentPlayer; private const long PointValueMultiple = 23; @@ -119,8 +119,8 @@ public class Day09 : IDay Marble newMarble = new() { Value = i + 1 }; if ((newMarble.Value % PointValueMultiple) > 0) { - Marble previousMarble = _currentMarble.Next; - Marble nextMarble = previousMarble.Next; + Marble? previousMarble = _currentMarble?.Next; + Marble? nextMarble = previousMarble?.Next; newMarble.Previous = previousMarble; newMarble.Next = nextMarble; previousMarble.Next = newMarble; @@ -129,7 +129,7 @@ public class Day09 : IDay } else { - Marble marbleToRemove = _currentMarble.Previous.Previous.Previous.Previous.Previous.Previous.Previous; + Marble? marbleToRemove = _currentMarble?.Previous?.Previous?.Previous?.Previous?.Previous?.Previous?.Previous; _currentMarble = marbleToRemove.Next; marbleToRemove.Previous.Next = marbleToRemove.Next; marbleToRemove.Next.Previous = marbleToRemove.Previous; diff --git a/AdventOfCode2018/Day12.cs b/AdventOfCode2018/Day12.cs index a57f2bd..484630b 100644 --- a/AdventOfCode2018/Day12.cs +++ b/AdventOfCode2018/Day12.cs @@ -111,8 +111,8 @@ public class Day12 : IDay private readonly List _initialState = []; private readonly List _rules = []; private long _offsetField; - private bool[] _field; - private bool[] _workField; + private bool[]? _field; + private bool[]? _workField; private void Initialize(string[] inputs) { diff --git a/AdventOfCode2018/Day13.cs b/AdventOfCode2018/Day13.cs index d1a07fe..c8b0bce 100644 --- a/AdventOfCode2018/Day13.cs +++ b/AdventOfCode2018/Day13.cs @@ -371,7 +371,7 @@ public class Day13 : IDay private int _width; private int _height; - private char[,] _grid; + private char[,]? _grid; private readonly List _trains = []; private void Initialize(string[] inputs) @@ -430,9 +430,9 @@ public class Day13 : IDay } } - private Train SimulateForFirstCollision() + private Train? SimulateForFirstCollision() { - Train collidingTrain = null; + Train? collidingTrain = null; IEnumerable orderedTrains = _trains.OrderBy(t => t.X + (t.Y * _width)); foreach (Train t in orderedTrains) { @@ -443,13 +443,13 @@ public class Day13 : IDay return collidingTrain; } - private Train SimulateForLastCart() + private Train? SimulateForLastCart() { List orderedTrains = _trains.OrderBy(t => t.X + (t.Y * _width)).ToList(); foreach (Train t in orderedTrains) { t.Simulate(_grid); - Train collidingTrain = _trains.FirstOrDefault(x => x.X == t.X && x.Y == t.Y && t != x); + Train? collidingTrain = _trains.FirstOrDefault(x => x.X == t.X && x.Y == t.Y && t != x); if (collidingTrain != null) { _trains.Remove(t); @@ -470,7 +470,7 @@ public class Day13 : IDay { for (int i = 0; i < _width; i++) { - Train t = _trains.FirstOrDefault(x => x.X == i && x.Y == j); + Train? t = _trains.FirstOrDefault(x => x.X == i && x.Y == j); if (t != null) { if (t.Direction == TrainDirection.North) diff --git a/AdventOfCode2018/Day15.cs b/AdventOfCode2018/Day15.cs index 394969d..dd13f51 100644 --- a/AdventOfCode2018/Day15.cs +++ b/AdventOfCode2018/Day15.cs @@ -509,7 +509,7 @@ public class Day15 : IDay .ThenBy(e => e.X); } - private Entity GetBestInRangeTarget(Entity entity, IEnumerable targets) + private Entity? GetBestInRangeTarget(Entity entity, IEnumerable targets) { return targets .Where(entity.InRangeOf) diff --git a/AdventOfCode2018/Day16.cs b/AdventOfCode2018/Day16.cs index 2c40861..97423b7 100644 --- a/AdventOfCode2018/Day16.cs +++ b/AdventOfCode2018/Day16.cs @@ -87,8 +87,8 @@ public class Day16 : IDay int count = 0; int i = 0; bool end = false; - int[] beforeRegisters = null; - int[] instruction = null; + int[]? beforeRegisters = null; + int[]? instruction = null; const string beforeKeyword = "Before: ["; const string afterKeyword = "After: ["; while (inputs.Length > i) diff --git a/AdventOfCode2018/Day23.cs b/AdventOfCode2018/Day23.cs index ef92cd1..4988ca6 100644 --- a/AdventOfCode2018/Day23.cs +++ b/AdventOfCode2018/Day23.cs @@ -68,8 +68,8 @@ public class Day23 : IDay public string ResolvePart1(string[] inputs) { List nanoBots = NanoBot.ListFromStrings(inputs); - NanoBot bestNanoBot = nanoBots.OrderBy(nanoBot => nanoBot.Range).LastOrDefault(); - int countInRange = nanoBots.Count(nanoBot => bestNanoBot.InRange(nanoBot)); + NanoBot? bestNanoBot = nanoBots.OrderBy(nanoBot => nanoBot.Range).LastOrDefault(); + int countInRange = nanoBots.Count(nanoBot => bestNanoBot?.InRange(nanoBot) == true); return countInRange.ToString(); } @@ -150,7 +150,7 @@ public class Day23 : IDay public long Z { get; private init; } public long Range { get; private init; } - private static NanoBot FromString(string strInput) + private static NanoBot? FromString(string strInput) { string[] parts = strInput.Split(["pos=<", ",", ">, r="], StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 4) { return null; } @@ -167,7 +167,7 @@ public class Day23 : IDay { List nanoBots = inputs .Select(FromString) - .Where(nanoBot => nanoBot != null) + .OfType() .ToList(); return nanoBots; } diff --git a/AdventOfCode2020.Tests/AdventOfCode2020.Tests.csproj b/AdventOfCode2020.Tests/AdventOfCode2020.Tests.csproj index cb63640..c99e3d7 100644 --- a/AdventOfCode2020.Tests/AdventOfCode2020.Tests.csproj +++ b/AdventOfCode2020.Tests/AdventOfCode2020.Tests.csproj @@ -3,9 +3,11 @@ net8.0 enable + enable AdventOfCode2020.Tests false + true diff --git a/AdventOfCode2020/AdventOfCode2020.csproj b/AdventOfCode2020/AdventOfCode2020.csproj index 40ec99a..9461cbc 100644 --- a/AdventOfCode2020/AdventOfCode2020.csproj +++ b/AdventOfCode2020/AdventOfCode2020.csproj @@ -4,6 +4,7 @@ Exe net8.0 enable + enable AdventOfCode2020 diff --git a/AdventOfCode2020/Day05.cs b/AdventOfCode2020/Day05.cs index 544d859..c67a895 100644 --- a/AdventOfCode2020/Day05.cs +++ b/AdventOfCode2020/Day05.cs @@ -64,7 +64,7 @@ public class Day05 : IDay int maxSerialNumber = 0; foreach (string input in inputs) { - Seat seat = Seat_Parse(input); + Seat? seat = Seat_Parse(input); if (seat == null) { continue; } int newSerialNumber = seat.GetSerialNumber(); if (newSerialNumber > maxSerialNumber) { maxSerialNumber = newSerialNumber; } @@ -83,7 +83,7 @@ public class Day05 : IDay } foreach (string input in inputs) { - Seat seat = Seat_Parse(input); + Seat? seat = Seat_Parse(input); if (seat == null) { continue; } seats[seat.Column][seat.Row] = 'X'; @@ -166,7 +166,7 @@ public class Day05 : IDay } } - private Seat Seat_Parse(string input) + private Seat? Seat_Parse(string input) { if (input.Length != 10 || input.All(c => c == 'F' || c == 'B' || c == 'L' || c == 'R') == false diff --git a/AdventOfCode2020/Day07.cs b/AdventOfCode2020/Day07.cs index 5309cf3..551b04c 100644 --- a/AdventOfCode2020/Day07.cs +++ b/AdventOfCode2020/Day07.cs @@ -141,7 +141,7 @@ public class Day07 : IDay BaggageRule rule = new() { Contain = [], }; - BaggageContainRule containRule = null; + BaggageContainRule? containRule = null; string color1 = string.Empty; foreach (string word in words) diff --git a/AdventOfCode2023.Tests/AdventOfCode2023.Tests.csproj b/AdventOfCode2023.Tests/AdventOfCode2023.Tests.csproj index 916f355..478c6be 100644 --- a/AdventOfCode2023.Tests/AdventOfCode2023.Tests.csproj +++ b/AdventOfCode2023.Tests/AdventOfCode2023.Tests.csproj @@ -3,10 +3,11 @@ net8.0 enable - AdventOfCode2023.Tests enable + AdventOfCode2023.Tests false + true diff --git a/AdventOfCode2023/AdventOfCode2023.csproj b/AdventOfCode2023/AdventOfCode2023.csproj index 099f4ac..e2244a7 100644 --- a/AdventOfCode2023/AdventOfCode2023.csproj +++ b/AdventOfCode2023/AdventOfCode2023.csproj @@ -4,8 +4,8 @@ Exe net8.0 enable - AdventOfCode2023 enable + AdventOfCode2023 diff --git a/AdventOfCode2024.Tests/AdventOfCode2024.Tests.csproj b/AdventOfCode2024.Tests/AdventOfCode2024.Tests.csproj index 3497b52..ef5f3ae 100644 --- a/AdventOfCode2024.Tests/AdventOfCode2024.Tests.csproj +++ b/AdventOfCode2024.Tests/AdventOfCode2024.Tests.csproj @@ -3,8 +3,8 @@ net8.0 enable - AdventOfCode2024.Tests enable + AdventOfCode2024.Tests false true @@ -17,10 +17,6 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - diff --git a/AdventOfCode2024/AdventOfCode2024.csproj b/AdventOfCode2024/AdventOfCode2024.csproj index f097193..eb2cab6 100644 --- a/AdventOfCode2024/AdventOfCode2024.csproj +++ b/AdventOfCode2024/AdventOfCode2024.csproj @@ -4,8 +4,8 @@ Exe net8.0 enable - AdventOfCode2024 enable + AdventOfCode2024