diff --git a/Day1.cs b/Day1.cs index 2d3ef67..53b808c 100644 --- a/Day1.cs +++ b/Day1.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - public class Day1 : Day + internal sealed class Day1 : Day { public override int DayNumber => 1; diff --git a/Day10.cs b/Day10.cs index a1ce961..eec1e57 100644 --- a/Day10.cs +++ b/Day10.cs @@ -5,7 +5,7 @@ using System.Linq; namespace aoc2019 { - internal class Day10 : Day + internal sealed class Day10 : Day { public override int DayNumber => 10; diff --git a/Day11.cs b/Day11.cs index 005d32d..4fc323b 100644 --- a/Day11.cs +++ b/Day11.cs @@ -5,7 +5,7 @@ using System.Linq; namespace aoc2019 { - internal class Day11 : Day + internal sealed class Day11 : Day { public override int DayNumber => 11; diff --git a/Day12.cs b/Day12.cs index 663742d..efb380a 100644 --- a/Day12.cs +++ b/Day12.cs @@ -5,7 +5,7 @@ using System.Linq; namespace aoc2019 { - internal class Day12 : Day + internal sealed class Day12 : Day { public override int DayNumber => 12; diff --git a/Day13.cs b/Day13.cs index c666c72..31425c0 100644 --- a/Day13.cs +++ b/Day13.cs @@ -5,7 +5,7 @@ using System.Linq; namespace aoc2019 { - internal class Day13 : Day + internal sealed class Day13 : Day { public override int DayNumber => 13; diff --git a/Day14.cs b/Day14.cs index 99e28e0..7706c0b 100644 --- a/Day14.cs +++ b/Day14.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal class Day14 : Day + internal sealed class Day14 : Day { public override int DayNumber => 14; @@ -19,10 +19,10 @@ namespace aoc2019 private class Reaction { - public Component product; - public Component[] reactants; + public readonly Component product; + public readonly Component[] reactants; - public Reaction(Component[] reactants, Component product) + private Reaction(Component[] reactants, Component product) { this.reactants = reactants; this.product = product; @@ -39,11 +39,11 @@ namespace aoc2019 static Component ParseComponent(string s) { - var i = s.IndexOf(' '); + var spl = s.Split(' ', 2); return new Component { - Name = s[(i + 1)..], - Quantity = int.Parse(s.Substring(i)) + Quantity = int.Parse(spl[0]), + Name = spl[1] }; } } diff --git a/Day15.cs b/Day15.cs index 96e6f90..b68d251 100644 --- a/Day15.cs +++ b/Day15.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal class Day15 : Day + internal sealed class Day15 : Day { public override int DayNumber => 15; diff --git a/Day16.cs b/Day16.cs index 9f5fc8c..095f152 100644 --- a/Day16.cs +++ b/Day16.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal class Day16 : Day + internal sealed class Day16 : Day { public override int DayNumber => 16; diff --git a/Day2.cs b/Day2.cs index 7856174..580571f 100644 --- a/Day2.cs +++ b/Day2.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - public class Day2 : Day + internal sealed class Day2 : Day { public override int DayNumber => 2; diff --git a/Day3.cs b/Day3.cs index 9049b7a..6bdf8ea 100644 --- a/Day3.cs +++ b/Day3.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal class Day3 : Day + internal sealed class Day3 : Day { public override int DayNumber => 3; diff --git a/Day4.cs b/Day4.cs index 5a453e0..b6b2c91 100644 --- a/Day4.cs +++ b/Day4.cs @@ -2,7 +2,7 @@ namespace aoc2019 { - internal class Day4 : Day + internal sealed class Day4 : Day { public override int DayNumber => 4; diff --git a/Day5.cs b/Day5.cs index f08eec1..fc360aa 100644 --- a/Day5.cs +++ b/Day5.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal class Day5 : Day + internal sealed class Day5 : Day { public override int DayNumber => 5; diff --git a/Day6.cs b/Day6.cs index de59f99..50dd605 100644 --- a/Day6.cs +++ b/Day6.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal class Day6 : Day + internal sealed class Day6 : Day { public override int DayNumber => 6; diff --git a/Day7.cs b/Day7.cs index 349e638..7f94e5a 100644 --- a/Day7.cs +++ b/Day7.cs @@ -4,7 +4,7 @@ using System.Linq; namespace aoc2019 { - internal class Day7 : Day + internal sealed class Day7 : Day { public override int DayNumber => 7; diff --git a/Day8.cs b/Day8.cs index aae6aa0..1666544 100644 --- a/Day8.cs +++ b/Day8.cs @@ -5,7 +5,7 @@ using System.Linq; namespace aoc2019 { - internal class Day8 : Day + internal sealed class Day8 : Day { public override int DayNumber => 8; diff --git a/Day9.cs b/Day9.cs index 56988f6..c6de017 100644 --- a/Day9.cs +++ b/Day9.cs @@ -3,7 +3,7 @@ using System.Linq; namespace aoc2019 { - internal class Day9 : Day + internal sealed class Day9 : Day { public override int DayNumber => 9; private readonly IntCodeVM vm; diff --git a/Program.cs b/Program.cs index 53e4814..981804b 100644 --- a/Program.cs +++ b/Program.cs @@ -5,19 +5,24 @@ using System.Reflection; namespace aoc2019 { - class Program + internal static class Program { - static void Main(string[] args) + private static void Main(string[] args) { - var days = GetDays(); + var days = + Assembly.GetExecutingAssembly().GetTypes() + .Where(t => t.BaseType == typeof(Day)) + .Select(t => (Day) Activator.CreateInstance(t)) + .OrderBy(d => d.DayNumber); - if (args.Length == 1 && int.TryParse(args[0], out int daynum)) + if (args.Length == 1 && int.TryParse(args[0], out var dayNum)) { - var d = days.Where(d => d.DayNumber == daynum); - if (d.Any()) - d.First().AllParts(); + var day = days.FirstOrDefault(d => d.DayNumber == dayNum); + + if (day != null) + day.AllParts(); else - Console.WriteLine($"{daynum} invalid or not yet implemented"); + Console.WriteLine($"{dayNum} invalid or not yet implemented"); } else { @@ -27,11 +32,5 @@ namespace aoc2019 } } } - - private static IEnumerable GetDays() => - Assembly.GetExecutingAssembly().GetTypes() - .Where(t => t.BaseType == typeof(Day)) - .Select(t => (Day)Activator.CreateInstance(t)) - .OrderBy(d => d.DayNumber); } } diff --git a/aoc2019.csproj b/aoc2019.csproj index 5f2c061..eaa667f 100644 --- a/aoc2019.csproj +++ b/aoc2019.csproj @@ -2,56 +2,11 @@ Exe - netcoreapp3.0 + net5.0 - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - + PreserveNewest