diff --git a/AOC.Common/Day.cs b/AOC.Common/Day.cs
index 0e43013..eafa296 100644
--- a/AOC.Common/Day.cs
+++ b/AOC.Common/Day.cs
@@ -2,23 +2,66 @@ using CommandLine;
namespace AOC.Common;
+///
+/// Base class for a day's solution. Provides stopwatch timing and command line parsing.
+///
+///
+///
+///
public abstract class Day(int year, int day, string puzzleName)
{
+ ///
+ /// The year this Day is from.
+ ///
public int Year { get; } = year;
+ ///
+ /// What day it is.
+ ///
public int DayNumber { get; } = day;
+ ///
+ /// The name of the puzzle.
+ ///
public string PuzzleName { get; } = puzzleName;
+ ///
+ /// Enumerable of all lines in the input file.
+ ///
protected IEnumerable Input => File.ReadLines(FileName);
+
+ ///
+ /// Input file as a span.
+ ///
+ protected ReadOnlySpan InputBytes => File.ReadAllText(FileName);
+ ///
+ /// Path to the input file in the format of "inputYEAR/dayNN.in".
+ ///
public string FileName =>
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
$"input{Year}/{(UseTestInput ? "test" : "day")}{DayNumber,2:00}.in");
+ ///
+ /// A toggle to read the test input file instead of the real input.
+ ///
public static bool UseTestInput { get; set; }
private readonly Stopwatch _stopwatch = new();
- public abstract void ProcessInput();
+ ///
+ /// Initial parsing of the puzzle input.
+ ///
+ public virtual void ProcessInput()
+ {
+ }
+
+ ///
+ /// Solve Part 1.
+ ///
+ /// object whose string representation will be the answer
public abstract object Part1();
+ ///
+ /// Solve Part 2.
+ ///
+ /// object whose string representation will be the answer
public abstract object Part2();
private void PrintProcessInput()
@@ -63,6 +106,12 @@ public abstract class Day(int year, int day, string puzzleName)
public int? PartNumber { get; set; }
}
+ ///
+ /// Parse the command line args and run the appropriate puzzles.
+ ///
+ ///
+ ///
+ ///
public static void RunFromArgs(string[] args)
{
var days = Assembly.GetEntryAssembly()?.GetTypes()
diff --git a/AOC.Test/Test2023.cs b/AOC.Test/Test2023.cs
index 3f6623a..c17fb71 100644
--- a/AOC.Test/Test2023.cs
+++ b/AOC.Test/Test2023.cs
@@ -18,6 +18,7 @@ public class Test2023
[DataRow(typeof(Day02), "8", "2286")]
[DataRow(typeof(Day03), "4361", "467835")]
[DataRow(typeof(Day04), "13", "30")]
+ // [DataRow(typeof(Day05), "35", "")]
public void CheckTestInputs(Type dayType, string part1, string part2) =>
Common.CheckDay(dayType, part1, part2, true);
}
diff --git a/AOC2015/Day01.cs b/AOC2015/Day01.cs
index c7e9717..ec0b412 100644
--- a/AOC2015/Day01.cs
+++ b/AOC2015/Day01.cs
@@ -2,10 +2,6 @@ namespace AOC2015;
public class Day01() : Day(2015, 1, "Not Quite Lisp")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
var floor = 0;
diff --git a/AOC2015/Day03.cs b/AOC2015/Day03.cs
index d0d6c6b..f5297f3 100644
--- a/AOC2015/Day03.cs
+++ b/AOC2015/Day03.cs
@@ -5,10 +5,6 @@ namespace AOC2015;
///
public sealed class Day03() : Day(2015, 3, "Perfectly Spherical Houses in a Vacuum")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
int x = 0, y = 0;
diff --git a/AOC2015/Day06.cs b/AOC2015/Day06.cs
index 4ab03cd..cd0d9d1 100644
--- a/AOC2015/Day06.cs
+++ b/AOC2015/Day06.cs
@@ -11,10 +11,6 @@ public sealed partial class Day06() : Day(2015, 6, "Probably a Fire Hazard")
[GeneratedRegex(@"(\d+),(\d+) through (\d+),(\d+)")]
private static partial Regex Coords();
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
foreach (var line in Input)
diff --git a/AOC2015/Day07.cs b/AOC2015/Day07.cs
index cd09a5e..d694fa3 100644
--- a/AOC2015/Day07.cs
+++ b/AOC2015/Day07.cs
@@ -8,10 +8,6 @@ public sealed class Day07() : Day(2015, 7, "Some Assembly Required")
private readonly Dictionary> _actions = [];
private readonly Dictionary _wires = [];
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
ProcessInstructions();
@@ -116,4 +112,4 @@ public sealed class Day07() : Day(2015, 7, "Some Assembly Required")
_actions["b"] = () => p1;
return _actions["a"]();
}
-}
\ No newline at end of file
+}
diff --git a/AOC2015/Day08.cs b/AOC2015/Day08.cs
index 28851e8..ced45cf 100644
--- a/AOC2015/Day08.cs
+++ b/AOC2015/Day08.cs
@@ -8,10 +8,6 @@ public sealed partial class Day08() : Day(2015, 8, "Matchsticks")
[GeneratedRegex("""^"(\\x..|\\.|.)*"$""")]
private static partial Regex CharSet();
- public override void ProcessInput()
- {
- }
-
private static int CharCount(string arg) => CharSet().Match(arg).Groups[1].Captures.Count;
private static int EncodedCount(string arg) => 2 + arg.Sum(c => c is '\\' or '\"' ? 2 : 1);
diff --git a/AOC2015/Day12.cs b/AOC2015/Day12.cs
index f852582..c4d2a3c 100644
--- a/AOC2015/Day12.cs
+++ b/AOC2015/Day12.cs
@@ -11,10 +11,6 @@ public sealed partial class Day12() : Day(2015, 12, "JSAbacusFramework.io")
[GeneratedRegex(@"-?\d+")]
private static partial Regex Digits();
- public override void ProcessInput()
- {
- }
-
public override object Part1() =>
Digits().Matches(Input.First()).Sum(n => int.Parse(n.Value));
diff --git a/AOC2015/Day16.cs b/AOC2015/Day16.cs
index 446aefc..6427e27 100644
--- a/AOC2015/Day16.cs
+++ b/AOC2015/Day16.cs
@@ -8,10 +8,6 @@ public sealed partial class Day16() : Day(2015, 16, "Aunt Sue")
[GeneratedRegex(@": \d\d")]
private static partial Regex TwoDigitsRegex();
- public override void ProcessInput()
- {
- }
-
private IEnumerable Common() =>
Input
.Select(i => TwoDigitsRegex().Replace(i, ": 9"))
diff --git a/AOC2015/Day23.cs b/AOC2015/Day23.cs
index 8de06b8..b4e98e2 100644
--- a/AOC2015/Day23.cs
+++ b/AOC2015/Day23.cs
@@ -5,10 +5,6 @@ namespace AOC2015;
///
public sealed class Day23() : Day(2015, 23, "Opening the Turing Lock")
{
- public override void ProcessInput()
- {
- }
-
private int RunOperations(int initialA = 0, int initialB = 0)
{
Dictionary registers = new()
@@ -53,4 +49,4 @@ public sealed class Day23() : Day(2015, 23, "Opening the Turing Lock")
public override object Part1() => RunOperations();
public override object Part2() => RunOperations(1);
-}
\ No newline at end of file
+}
diff --git a/AOC2015/Day24.cs b/AOC2015/Day24.cs
index 1ad27c0..c29a3d6 100644
--- a/AOC2015/Day24.cs
+++ b/AOC2015/Day24.cs
@@ -5,10 +5,6 @@ namespace AOC2015;
///
public sealed class Day24() : Day(2015, 24, "It Hangs in the Balance")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day02.cs b/AOC2016/Day02.cs
index 6790e93..e3a8f1c 100644
--- a/AOC2016/Day02.cs
+++ b/AOC2016/Day02.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day02() : Day(2016, 2, "Bathroom Security")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
List answer = [];
diff --git a/AOC2016/Day05.cs b/AOC2016/Day05.cs
index f0d0c77..75b4e28 100644
--- a/AOC2016/Day05.cs
+++ b/AOC2016/Day05.cs
@@ -7,10 +7,6 @@ namespace AOC2016;
///
public sealed class Day05() : Day(2016, 5, "How About a Nice Game of Chess?")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
var s = Input.First();
@@ -55,4 +51,4 @@ public sealed class Day05() : Day(2016, 5, "How About a Nice Game of Chess?")
return new string(answer);
}
-}
\ No newline at end of file
+}
diff --git a/AOC2016/Day07.cs b/AOC2016/Day07.cs
index fc31f23..4ccf991 100644
--- a/AOC2016/Day07.cs
+++ b/AOC2016/Day07.cs
@@ -11,10 +11,6 @@ public sealed partial class Day07() : Day(2016, 7, "Internet Protocol Version 7"
[GeneratedRegex(@"\[(\w*)\]")]
private static partial Regex InsideBracketsRegex();
- public override void ProcessInput()
- {
- }
-
private static bool SupportsTls(string input) =>
!InsideBracketsRegex().Matches(input).Any(m => CheckAbba(m.ValueSpan)) &&
BracketsRegex().Split(input).Any(v => CheckAbba(v));
diff --git a/AOC2016/Day08.cs b/AOC2016/Day08.cs
index 858d542..2edc16e 100644
--- a/AOC2016/Day08.cs
+++ b/AOC2016/Day08.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day08() : Day(2016, 8, "Two-Factor Authentication")
{
- public override void ProcessInput()
- {
- }
-
private static string PrintGrid(char[,] screen)
{
var sb = new StringBuilder();
diff --git a/AOC2016/Day09.cs b/AOC2016/Day09.cs
index 8ce2006..50d1920 100644
--- a/AOC2016/Day09.cs
+++ b/AOC2016/Day09.cs
@@ -5,10 +5,7 @@ namespace AOC2016;
///
public sealed class Day09() : Day(2016, 9, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
+
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day10.cs b/AOC2016/Day10.cs
index 389e61a..b828818 100644
--- a/AOC2016/Day10.cs
+++ b/AOC2016/Day10.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day10() : Day(2016, 10, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day11.cs b/AOC2016/Day11.cs
index 6cc0349..58f3437 100644
--- a/AOC2016/Day11.cs
+++ b/AOC2016/Day11.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day11() : Day(2016, 11, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day12.cs b/AOC2016/Day12.cs
index 8f54020..44d4993 100644
--- a/AOC2016/Day12.cs
+++ b/AOC2016/Day12.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day12() : Day(2016, 12, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day13.cs b/AOC2016/Day13.cs
index 823dbf7..3888b91 100644
--- a/AOC2016/Day13.cs
+++ b/AOC2016/Day13.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day13() : Day(2016, 13, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day14.cs b/AOC2016/Day14.cs
index bad147c..870bfbd 100644
--- a/AOC2016/Day14.cs
+++ b/AOC2016/Day14.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day14() : Day(2016, 14, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day15.cs b/AOC2016/Day15.cs
index 33a7b77..b437418 100644
--- a/AOC2016/Day15.cs
+++ b/AOC2016/Day15.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day15() : Day(2016, 15, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day16.cs b/AOC2016/Day16.cs
index b668150..d5e514f 100644
--- a/AOC2016/Day16.cs
+++ b/AOC2016/Day16.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day16() : Day(2016, 16, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day17.cs b/AOC2016/Day17.cs
index 849d3bb..3b40ed2 100644
--- a/AOC2016/Day17.cs
+++ b/AOC2016/Day17.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day17() : Day(2016, 17, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day18.cs b/AOC2016/Day18.cs
index 2f069b2..ced922f 100644
--- a/AOC2016/Day18.cs
+++ b/AOC2016/Day18.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day18() : Day(2016, 18, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day19.cs b/AOC2016/Day19.cs
index 87ac6aa..3e0e402 100644
--- a/AOC2016/Day19.cs
+++ b/AOC2016/Day19.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day19() : Day(2016, 19, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day20.cs b/AOC2016/Day20.cs
index 98c89be..8e03469 100644
--- a/AOC2016/Day20.cs
+++ b/AOC2016/Day20.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day20() : Day(2016, 20, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day21.cs b/AOC2016/Day21.cs
index c62a5e3..4d4c06d 100644
--- a/AOC2016/Day21.cs
+++ b/AOC2016/Day21.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day21() : Day(2016, 21, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day22.cs b/AOC2016/Day22.cs
index 691cb74..d1d5ebc 100644
--- a/AOC2016/Day22.cs
+++ b/AOC2016/Day22.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day22() : Day(2016, 22, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day23.cs b/AOC2016/Day23.cs
index e91c707..3685d79 100644
--- a/AOC2016/Day23.cs
+++ b/AOC2016/Day23.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day23() : Day(2016, 23, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day24.cs b/AOC2016/Day24.cs
index 1af97c3..2f55dbe 100644
--- a/AOC2016/Day24.cs
+++ b/AOC2016/Day24.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day24() : Day(2016, 24, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2016/Day25.cs b/AOC2016/Day25.cs
index 4374cac..beb3121 100644
--- a/AOC2016/Day25.cs
+++ b/AOC2016/Day25.cs
@@ -5,10 +5,6 @@ namespace AOC2016;
///
public sealed class Day25() : Day(2016, 25, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day01.cs b/AOC2017/Day01.cs
index 6a7c231..5c3e5f3 100644
--- a/AOC2017/Day01.cs
+++ b/AOC2017/Day01.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day01() : Day(2017, 1, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day02.cs b/AOC2017/Day02.cs
index 1ef16f9..e787cc3 100644
--- a/AOC2017/Day02.cs
+++ b/AOC2017/Day02.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day02() : Day(2017, 2, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day03.cs b/AOC2017/Day03.cs
index dcc7c2e..abe2f26 100644
--- a/AOC2017/Day03.cs
+++ b/AOC2017/Day03.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day03() : Day(2017, 3, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day04.cs b/AOC2017/Day04.cs
index 0280269..00dd69d 100644
--- a/AOC2017/Day04.cs
+++ b/AOC2017/Day04.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day04() : Day(2017, 4, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day05.cs b/AOC2017/Day05.cs
index 4575d34..d7914cd 100644
--- a/AOC2017/Day05.cs
+++ b/AOC2017/Day05.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day05() : Day(2017, 5, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day06.cs b/AOC2017/Day06.cs
index 2343fc5..4292642 100644
--- a/AOC2017/Day06.cs
+++ b/AOC2017/Day06.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day06() : Day(2017, 6, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day07.cs b/AOC2017/Day07.cs
index 78fd805..79b6697 100644
--- a/AOC2017/Day07.cs
+++ b/AOC2017/Day07.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day07() : Day(2017, 7, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day08.cs b/AOC2017/Day08.cs
index a47dff5..e84e63a 100644
--- a/AOC2017/Day08.cs
+++ b/AOC2017/Day08.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day08() : Day(2017, 8, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day09.cs b/AOC2017/Day09.cs
index 40fa67c..5e05841 100644
--- a/AOC2017/Day09.cs
+++ b/AOC2017/Day09.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day09() : Day(2017, 9, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day10.cs b/AOC2017/Day10.cs
index c683b56..0c69006 100644
--- a/AOC2017/Day10.cs
+++ b/AOC2017/Day10.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day10() : Day(2017, 10, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day11.cs b/AOC2017/Day11.cs
index 10f0ff5..80199da 100644
--- a/AOC2017/Day11.cs
+++ b/AOC2017/Day11.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day11() : Day(2017, 11, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day12.cs b/AOC2017/Day12.cs
index 0f1fb21..a8a70e2 100644
--- a/AOC2017/Day12.cs
+++ b/AOC2017/Day12.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day12() : Day(2017, 12, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day13.cs b/AOC2017/Day13.cs
index 462e20b..797d2f4 100644
--- a/AOC2017/Day13.cs
+++ b/AOC2017/Day13.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day13() : Day(2017, 13, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day14.cs b/AOC2017/Day14.cs
index 07b021f..df2fc7a 100644
--- a/AOC2017/Day14.cs
+++ b/AOC2017/Day14.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day14() : Day(2017, 14, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day15.cs b/AOC2017/Day15.cs
index bfb9019..1cfd1e9 100644
--- a/AOC2017/Day15.cs
+++ b/AOC2017/Day15.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day15() : Day(2017, 15, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day16.cs b/AOC2017/Day16.cs
index cb23b9b..d642d3b 100644
--- a/AOC2017/Day16.cs
+++ b/AOC2017/Day16.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day16() : Day(2017, 16, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day17.cs b/AOC2017/Day17.cs
index 9354c27..979b170 100644
--- a/AOC2017/Day17.cs
+++ b/AOC2017/Day17.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day17() : Day(2017, 17, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day18.cs b/AOC2017/Day18.cs
index 2c500fd..2b5b4a0 100644
--- a/AOC2017/Day18.cs
+++ b/AOC2017/Day18.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day18() : Day(2017, 18, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day19.cs b/AOC2017/Day19.cs
index 7b54941..3fef34f 100644
--- a/AOC2017/Day19.cs
+++ b/AOC2017/Day19.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day19() : Day(2017, 19, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day20.cs b/AOC2017/Day20.cs
index 96bbae5..8cf9184 100644
--- a/AOC2017/Day20.cs
+++ b/AOC2017/Day20.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day20() : Day(2017, 20, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day21.cs b/AOC2017/Day21.cs
index 0b1c6bc..27ef463 100644
--- a/AOC2017/Day21.cs
+++ b/AOC2017/Day21.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day21() : Day(2017, 21, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day22.cs b/AOC2017/Day22.cs
index 975dfb8..6c8b020 100644
--- a/AOC2017/Day22.cs
+++ b/AOC2017/Day22.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day22() : Day(2017, 22, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day23.cs b/AOC2017/Day23.cs
index c127e46..432645d 100644
--- a/AOC2017/Day23.cs
+++ b/AOC2017/Day23.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day23() : Day(2017, 23, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2017/Day24.cs b/AOC2017/Day24.cs
index a31dada..eeec026 100644
--- a/AOC2017/Day24.cs
+++ b/AOC2017/Day24.cs
@@ -5,11 +5,7 @@ namespace AOC2017;
///
public sealed class Day24() : Day(2017, 24, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
- public override object Part1() => "";
+ public override object Part1() => "";
public override object Part2() => "";
}
diff --git a/AOC2017/Day25.cs b/AOC2017/Day25.cs
index b7c0d48..3818c07 100644
--- a/AOC2017/Day25.cs
+++ b/AOC2017/Day25.cs
@@ -5,10 +5,6 @@ namespace AOC2017;
///
public sealed class Day25() : Day(2017, 25, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day01.cs b/AOC2018/Day01.cs
index 5a53abe..95f1391 100644
--- a/AOC2018/Day01.cs
+++ b/AOC2018/Day01.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day01() : Day(2018, 1, "Chronal Calibration")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => Input.Select(int.Parse).Sum();
public override object Part2()
diff --git a/AOC2018/Day02.cs b/AOC2018/Day02.cs
index b160ff5..171533e 100644
--- a/AOC2018/Day02.cs
+++ b/AOC2018/Day02.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day02() : Day(2018, 2, "Inventory Management System")
{
- public override void ProcessInput()
- {
- }
-
private static bool HasNChars(string line, int count)
{
for (var i = 'a'; i <= 'z'; i++)
@@ -31,4 +27,4 @@ public sealed class Day02() : Day(2018, 2, "Inventory Management System")
throw new("Correct IDs not found");
}
-}
\ No newline at end of file
+}
diff --git a/AOC2018/Day04.cs b/AOC2018/Day04.cs
index 457a87d..0dc6e8e 100644
--- a/AOC2018/Day04.cs
+++ b/AOC2018/Day04.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day04() : Day(2018, 4, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day05.cs b/AOC2018/Day05.cs
index e246b69..a28afdf 100644
--- a/AOC2018/Day05.cs
+++ b/AOC2018/Day05.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day05() : Day(2018, 5, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day06.cs b/AOC2018/Day06.cs
index 51c1c4a..91cc9ed 100644
--- a/AOC2018/Day06.cs
+++ b/AOC2018/Day06.cs
@@ -5,11 +5,7 @@ namespace AOC2018;
///
public sealed class Day06() : Day(2018, 6, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
- public override object Part1() => "";
+ public override object Part1() => "";
public override object Part2() => "";
}
diff --git a/AOC2018/Day07.cs b/AOC2018/Day07.cs
index 3b7962d..2769d82 100644
--- a/AOC2018/Day07.cs
+++ b/AOC2018/Day07.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day07() : Day(2018, 7, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day08.cs b/AOC2018/Day08.cs
index 4e02751..56160ea 100644
--- a/AOC2018/Day08.cs
+++ b/AOC2018/Day08.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day08() : Day(2018, 8, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day09.cs b/AOC2018/Day09.cs
index e7fac5a..03a41a6 100644
--- a/AOC2018/Day09.cs
+++ b/AOC2018/Day09.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day09() : Day(2018, 9, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day10.cs b/AOC2018/Day10.cs
index 44d3cfe..c2f6ed0 100644
--- a/AOC2018/Day10.cs
+++ b/AOC2018/Day10.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day10() : Day(2018, 10, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day11.cs b/AOC2018/Day11.cs
index f120efb..1c3573f 100644
--- a/AOC2018/Day11.cs
+++ b/AOC2018/Day11.cs
@@ -5,11 +5,7 @@ namespace AOC2018;
///
public sealed class Day11() : Day(2018, 11, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
- public override object Part1() => "";
+ public override object Part1() => "";
public override object Part2() => "";
}
diff --git a/AOC2018/Day12.cs b/AOC2018/Day12.cs
index 4da985b..a015ff6 100644
--- a/AOC2018/Day12.cs
+++ b/AOC2018/Day12.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day12() : Day(2018, 12, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day13.cs b/AOC2018/Day13.cs
index 32c2290..7cb0cf5 100644
--- a/AOC2018/Day13.cs
+++ b/AOC2018/Day13.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day13() : Day(2018, 13, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day14.cs b/AOC2018/Day14.cs
index 193f3cd..abc8324 100644
--- a/AOC2018/Day14.cs
+++ b/AOC2018/Day14.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day14() : Day(2018, 14, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day15.cs b/AOC2018/Day15.cs
index fcfec09..af36288 100644
--- a/AOC2018/Day15.cs
+++ b/AOC2018/Day15.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day15() : Day(2018, 15, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day16.cs b/AOC2018/Day16.cs
index 4a9c425..7747a08 100644
--- a/AOC2018/Day16.cs
+++ b/AOC2018/Day16.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day16() : Day(2018, 16, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day17.cs b/AOC2018/Day17.cs
index 4b9238e..ab8ea05 100644
--- a/AOC2018/Day17.cs
+++ b/AOC2018/Day17.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day17() : Day(2018, 17, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day18.cs b/AOC2018/Day18.cs
index d0bdcc4..cc5881b 100644
--- a/AOC2018/Day18.cs
+++ b/AOC2018/Day18.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day18() : Day(2018, 18, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day19.cs b/AOC2018/Day19.cs
index a48c2f1..49b1801 100644
--- a/AOC2018/Day19.cs
+++ b/AOC2018/Day19.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day19() : Day(2018, 19, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day20.cs b/AOC2018/Day20.cs
index 7372564..187c368 100644
--- a/AOC2018/Day20.cs
+++ b/AOC2018/Day20.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day20() : Day(2018, 20, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day21.cs b/AOC2018/Day21.cs
index aa411e9..474bc96 100644
--- a/AOC2018/Day21.cs
+++ b/AOC2018/Day21.cs
@@ -5,11 +5,7 @@ namespace AOC2018;
///
public sealed class Day21() : Day(2018, 21, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
- public override object Part1() => "";
+ public override object Part1() => "";
public override object Part2() => "";
}
diff --git a/AOC2018/Day22.cs b/AOC2018/Day22.cs
index 74a103d..88a2979 100644
--- a/AOC2018/Day22.cs
+++ b/AOC2018/Day22.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day22() : Day(2018, 22, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day23.cs b/AOC2018/Day23.cs
index 8652d67..37f9f54 100644
--- a/AOC2018/Day23.cs
+++ b/AOC2018/Day23.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day23() : Day(2018, 23, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day24.cs b/AOC2018/Day24.cs
index 5ae89ee..d89f1e9 100644
--- a/AOC2018/Day24.cs
+++ b/AOC2018/Day24.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day24() : Day(2018, 24, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2018/Day25.cs b/AOC2018/Day25.cs
index db2e25f..b31048c 100644
--- a/AOC2018/Day25.cs
+++ b/AOC2018/Day25.cs
@@ -5,10 +5,6 @@ namespace AOC2018;
///
public sealed class Day25() : Day(2018, 25, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2019/Day18.cs b/AOC2019/Day18.cs
index e65c52c..4973bfe 100644
--- a/AOC2019/Day18.cs
+++ b/AOC2019/Day18.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day18() : Day(2019, 18, "Many-Worlds Interpretation")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2019/Day20.cs b/AOC2019/Day20.cs
index f332dd8..a3e0801 100644
--- a/AOC2019/Day20.cs
+++ b/AOC2019/Day20.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day20() : Day(2019, 20, "Donut Maze")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2019/Day21.cs b/AOC2019/Day21.cs
index eb3f96a..dd939f4 100644
--- a/AOC2019/Day21.cs
+++ b/AOC2019/Day21.cs
@@ -1,22 +1,8 @@
namespace AOC2019;
-public sealed class Day21 : Day
+public sealed class Day21() : Day(2019, 21, "Springdroid Adventure")
{
- private readonly IntCodeVM _vm;
-
- public Day21() : base(2019, 21, "Springdroid Adventure") =>
- _vm = new(Input.First());
-
- public override void ProcessInput()
- {
- }
-
- public override object Part1()
- {
- _vm.Reset();
- var halt = _vm.Run();
- return "";
- }
+ public override object Part1() => "";
public override object Part2() => "";
}
diff --git a/AOC2019/Day22.cs b/AOC2019/Day22.cs
index 0afc7d8..4a62d15 100644
--- a/AOC2019/Day22.cs
+++ b/AOC2019/Day22.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day22() : Day(2019, 22, "Slam Shuffle")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2019/Day23.cs b/AOC2019/Day23.cs
index 9345aa6..b06344c 100644
--- a/AOC2019/Day23.cs
+++ b/AOC2019/Day23.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day23() : Day(2019, 23, "Category Six")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
var vms = Enumerable.Range(0, 50)
diff --git a/AOC2019/Day24.cs b/AOC2019/Day24.cs
index bf4e405..9d7a9ef 100644
--- a/AOC2019/Day24.cs
+++ b/AOC2019/Day24.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day24() : Day(2019, 24, "Planet of Discord")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2019/Day25.cs b/AOC2019/Day25.cs
index 36a4be1..35eeb59 100644
--- a/AOC2019/Day25.cs
+++ b/AOC2019/Day25.cs
@@ -2,10 +2,6 @@ namespace AOC2019;
public sealed class Day25() : Day(2019, 25, "Cryostasis")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2020/Day11.cs b/AOC2020/Day11.cs
index bc629e1..5353c98 100644
--- a/AOC2020/Day11.cs
+++ b/AOC2020/Day11.cs
@@ -5,10 +5,6 @@ namespace AOC2020;
///
public sealed class Day11() : Day(2020, 11, "Seating System")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
var prev = new LifeGame(Input);
@@ -73,13 +69,13 @@ public sealed class Day11() : Day(2020, 11, "Seating System")
{
var next = new LifeGame { _h = _h, _w = _w, Grid = Grid.Select(s => s.ToArray()).ToArray() };
for (var y = 0; y < _h; y++)
- for (var x = 0; x < _w; x++)
- next.Grid[y][x] = Grid[y][x] switch
- {
- 'L' when CountAdjacent(y, x) == 0 => '#',
- '#' when CountAdjacent(y, x) >= 4 => 'L',
- _ => Grid[y][x]
- };
+ for (var x = 0; x < _w; x++)
+ next.Grid[y][x] = Grid[y][x] switch
+ {
+ 'L' when CountAdjacent(y, x) == 0 => '#',
+ '#' when CountAdjacent(y, x) >= 4 => 'L',
+ _ => Grid[y][x]
+ };
// next.PrintBoard();
return next;
@@ -91,8 +87,7 @@ public sealed class Day11() : Day(2020, 11, "Seating System")
private int CountAdjacent(int y, int x) =>
new[]
{
- At(y - 1, x - 1), At(y - 1, x + 0), At(y - 1, x + 1),
- At(y + 0, x - 1), At(y + 0, x + 1),
+ At(y - 1, x - 1), At(y - 1, x + 0), At(y - 1, x + 1), At(y + 0, x - 1), At(y + 0, x + 1),
At(y + 1, x - 1), At(y + 1, x + 0), At(y + 1, x + 1)
}.Count(c => c == '#');
@@ -100,13 +95,13 @@ public sealed class Day11() : Day(2020, 11, "Seating System")
{
var next = new LifeGame { _h = _h, _w = _w, Grid = Grid.Select(s => s.ToArray()).ToArray() };
for (var y = 0; y < _h; y++)
- for (var x = 0; x < _w; x++)
- next.Grid[y][x] = Grid[y][x] switch
- {
- 'L' when CanSee(y, x) == 0 => '#',
- '#' when CanSee(y, x) >= 5 => 'L',
- _ => Grid[y][x]
- };
+ for (var x = 0; x < _w; x++)
+ next.Grid[y][x] = Grid[y][x] switch
+ {
+ 'L' when CanSee(y, x) == 0 => '#',
+ '#' when CanSee(y, x) >= 5 => 'L',
+ _ => Grid[y][x]
+ };
// next.PrintBoard();
return next;
@@ -115,9 +110,8 @@ public sealed class Day11() : Day(2020, 11, "Seating System")
private int CanSee(int y, int x) =>
new[]
{
- TraceRay(y, x, -1, -1), TraceRay(y, x, -1, +0), TraceRay(y, x, -1, +1),
- TraceRay(y, x, +0, -1), TraceRay(y, x, +0, +1),
- TraceRay(y, x, +1, -1), TraceRay(y, x, +1, +0), TraceRay(y, x, +1, +1)
+ TraceRay(y, x, -1, -1), TraceRay(y, x, -1, +0), TraceRay(y, x, -1, +1), TraceRay(y, x, +0, -1),
+ TraceRay(y, x, +0, +1), TraceRay(y, x, +1, -1), TraceRay(y, x, +1, +0), TraceRay(y, x, +1, +1)
}.Count(c => c == '#');
private char TraceRay(int y, int x, int dy, int dx)
diff --git a/AOC2020/Day12.cs b/AOC2020/Day12.cs
index 594584c..00dba2e 100644
--- a/AOC2020/Day12.cs
+++ b/AOC2020/Day12.cs
@@ -5,10 +5,6 @@ namespace AOC2020;
///
public sealed class Day12() : Day(2020, 12, "Rain Risk")
{
- public override void ProcessInput()
- {
- }
-
private static void Swap(ref int x, ref int y) => (y, x) = (x, y);
private (int x, int y, int sx, int sy) ProcessInstructions()
diff --git a/AOC2020/Day14.cs b/AOC2020/Day14.cs
index 18b9cce..4137023 100644
--- a/AOC2020/Day14.cs
+++ b/AOC2020/Day14.cs
@@ -5,10 +5,6 @@ namespace AOC2020;
///
public sealed class Day14() : Day(2020, 14, "Docking Data")
{
- public override void ProcessInput()
- {
- }
-
private static readonly char[] SquareBrackets = ['[', ']'];
private static readonly char[] BracketsAndEquals = [.. SquareBrackets, '='];
diff --git a/AOC2020/Day20.cs b/AOC2020/Day20.cs
index 48615ad..c0c3bce 100644
--- a/AOC2020/Day20.cs
+++ b/AOC2020/Day20.cs
@@ -8,10 +8,6 @@ public sealed partial class Day20() : Day(2020, 20, "Jurassic Jigsaw")
[GeneratedRegex("(?<=#.{77})#.{4}#{2}.{4}#{2}.{4}#{3}(?=.{77}#.{2}#.{2}#.{2}#.{2}#.{2}#)")]
private static partial Regex MonsterRegex();
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
var puzzlePieces = ParsePiecesFromInput(Input.ToArray());
diff --git a/AOC2020/Day25.cs b/AOC2020/Day25.cs
index 0dd9d62..bc07a76 100644
--- a/AOC2020/Day25.cs
+++ b/AOC2020/Day25.cs
@@ -5,10 +5,6 @@ namespace AOC2020;
///
public sealed class Day25() : Day(2020, 25, "Combo Breaker")
{
- public override void ProcessInput()
- {
- }
-
private static long Transform(long subject, int loopSize)
{
var value = 1L;
diff --git a/AOC2021/Day02.cs b/AOC2021/Day02.cs
index 22e619a..ed00c91 100644
--- a/AOC2021/Day02.cs
+++ b/AOC2021/Day02.cs
@@ -5,10 +5,6 @@ namespace AOC2021;
///
public sealed class Day02() : Day(2021, 2, "Dive!")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1()
{
int horiz = 0, depth = 0;
diff --git a/AOC2021/Day05.cs b/AOC2021/Day05.cs
index d42b391..16f54a8 100644
--- a/AOC2021/Day05.cs
+++ b/AOC2021/Day05.cs
@@ -5,10 +5,6 @@ namespace AOC2021;
///
public sealed partial class Day05() : Day(2021, 5, "Hydrothermal Venture")
{
- public override void ProcessInput()
- {
- }
-
private int Solve(bool diagonals = false) =>
Input
.Select(s => NonDigits().Split(s).Select(int.Parse).ToList())
diff --git a/AOC2021/Day08.cs b/AOC2021/Day08.cs
index 73f46b7..6dabeed 100644
--- a/AOC2021/Day08.cs
+++ b/AOC2021/Day08.cs
@@ -9,10 +9,6 @@ public sealed class Day08() : Day(2021, 8, "Seven Segment Search")
"abcdefg".ToCharArray().Permute().Select(m => m.ToArray()).ToList();
private static readonly int[] SearchValues = { 2, 3, 4, 7 };
- public override void ProcessInput()
- {
- }
-
private static int MatchDigit(string lit) =>
lit switch
{
diff --git a/AOC2022/Day03.cs b/AOC2022/Day03.cs
index e815383..d224cf4 100644
--- a/AOC2022/Day03.cs
+++ b/AOC2022/Day03.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day03() : Day(2022, 3, "Rucksack Reorganization")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() =>
Input.Sum(rucksack => RankItem(rucksack.Chunk(rucksack.Length / 2).Aggregate>((a, b) => a.Intersect(b)).Single()));
@@ -16,4 +12,4 @@ public sealed class Day03() : Day(2022, 3, "Rucksack Reorganization")
Input.Chunk(3).Sum(group => RankItem(group.Aggregate>((a, b) => a.Intersect(b)).Single()));
private static int RankItem(char item) => item - (char.IsUpper(item) ? '&' : '`');
-}
\ No newline at end of file
+}
diff --git a/AOC2022/Day16.cs b/AOC2022/Day16.cs
index e183182..6986299 100644
--- a/AOC2022/Day16.cs
+++ b/AOC2022/Day16.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day16() : Day(2022, 16, "Proboscidea Volcanium")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day17.cs b/AOC2022/Day17.cs
index 639903d..66a52eb 100644
--- a/AOC2022/Day17.cs
+++ b/AOC2022/Day17.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day17() : Day(2022, 17, "Pyroclastic Flow")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day18.cs b/AOC2022/Day18.cs
index a98abdd..eeb4ee6 100644
--- a/AOC2022/Day18.cs
+++ b/AOC2022/Day18.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day18() : Day(2022, 18, "Boiling Boulders")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day19.cs b/AOC2022/Day19.cs
index 2ef18e2..d2ef757 100644
--- a/AOC2022/Day19.cs
+++ b/AOC2022/Day19.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day19() : Day(2022, 19, "Not Enough Minerals")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day20.cs b/AOC2022/Day20.cs
index e044dd3..4a0a5a7 100644
--- a/AOC2022/Day20.cs
+++ b/AOC2022/Day20.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day20() : Day(2022, 20, "Grove Positioning System")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day21.cs b/AOC2022/Day21.cs
index ee11a0d..4d0ea4f 100644
--- a/AOC2022/Day21.cs
+++ b/AOC2022/Day21.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day21() : Day(2022, 21, "Monkey Math")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day22.cs b/AOC2022/Day22.cs
index 146d3b0..35558b3 100644
--- a/AOC2022/Day22.cs
+++ b/AOC2022/Day22.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day22() : Day(2022, 22, "Monkey Map")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day23.cs b/AOC2022/Day23.cs
index 7967620..99cc191 100644
--- a/AOC2022/Day23.cs
+++ b/AOC2022/Day23.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day23() : Day(2022, 23, "Unstable Diffusion")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day24.cs b/AOC2022/Day24.cs
index 8ac4765..69dc89b 100644
--- a/AOC2022/Day24.cs
+++ b/AOC2022/Day24.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day24() : Day(2022, 24, "Blizzard Basin")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2022/Day25.cs b/AOC2022/Day25.cs
index c40df07..5aab297 100644
--- a/AOC2022/Day25.cs
+++ b/AOC2022/Day25.cs
@@ -5,10 +5,6 @@ namespace AOC2022;
///
public sealed class Day25() : Day(2022, 25, "Full of Hot Air")
{
- public override void ProcessInput()
- {
- }
-
public override object Part1() => "";
public override object Part2() => "";
diff --git a/AOC2023/Day01.cs b/AOC2023/Day01.cs
index 3a8b8b8..f64d248 100644
--- a/AOC2023/Day01.cs
+++ b/AOC2023/Day01.cs
@@ -1,14 +1,13 @@
namespace AOC2023;
+///
+/// Day 1
+///
public class Day01() : Day(2023, 1, "Trebuchet?!")
{
private static readonly List SingleDigits =
["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
- public override void ProcessInput()
- {
- }
-
public override object Part1() =>
Input.Sum(line => (line.First(char.IsAsciiDigit) - '0') * 10 + (line.Last(char.IsAsciiDigit) - '0'));
diff --git a/AOC2023/Day02.cs b/AOC2023/Day02.cs
index 2139fcd..d2e0ef8 100644
--- a/AOC2023/Day02.cs
+++ b/AOC2023/Day02.cs
@@ -1,14 +1,10 @@
namespace AOC2023;
///
-/// Day 2:
+/// Day 2
///
public sealed class Day02() : Day(2023, 2, "Cube Conundrum")
{
- public override void ProcessInput()
- {
- }
-
private static bool PossibleGame(string line)
{
var rounds = line.Split(": ", 2)[1];
diff --git a/AOC2023/Day03.cs b/AOC2023/Day03.cs
index c19f8e8..9858adc 100644
--- a/AOC2023/Day03.cs
+++ b/AOC2023/Day03.cs
@@ -1,7 +1,7 @@
namespace AOC2023;
///
-/// Day 3:
+/// Day 3
///
public sealed class Day03() : Day(2023, 3, "Gear Ratios")
{
diff --git a/AOC2023/Day04.cs b/AOC2023/Day04.cs
index 672d783..c21a8e2 100644
--- a/AOC2023/Day04.cs
+++ b/AOC2023/Day04.cs
@@ -1,7 +1,7 @@
namespace AOC2023;
///
-/// Day 4:
+/// Day 4
///
public sealed class Day04() : Day(2023, 4, "Scratchcards")
{
diff --git a/AOC2023/Day05.cs b/AOC2023/Day05.cs
new file mode 100644
index 0000000..31aba10
--- /dev/null
+++ b/AOC2023/Day05.cs
@@ -0,0 +1,11 @@
+namespace AOC2023;
+
+///
+/// Day 5
+///
+public class Day05() : Day(2023, 5, "If you Give A Seed A Fertilizer")
+{
+ public override object Part1() => "";
+
+ public override object Part2() => "";
+}
diff --git a/AOC2023/input2023/day05.in b/AOC2023/input2023/day05.in
new file mode 100644
index 0000000..e3d4e99
--- /dev/null
+++ b/AOC2023/input2023/day05.in
@@ -0,0 +1,250 @@
+seeds: 28965817 302170009 1752849261 48290258 804904201 243492043 2150339939 385349830 1267802202 350474859 2566296746 17565716 3543571814 291402104 447111316 279196488 3227221259 47952959 1828835733 9607836
+
+seed-to-soil map:
+3680121696 1920754815 614845600
+1920754815 3846369604 448597692
+193356576 570761634 505124585
+2369352507 2535600415 31531965
+2400884472 2567132380 1279237224
+0 459278395 111483239
+698481161 97868205 361410190
+1059891351 0 15994868
+111483239 15994868 81873337
+
+soil-to-fertilizer map:
+1633669237 1273301814 72865265
+2398515176 2671190790 99210785
+2397916384 3018946373 598792
+4034325916 3061716397 20017393
+3298612516 3793795301 14249501
+4030007411 3051046904 2833129
+1906984482 224872691 14620134
+864506893 1590633724 149044542
+1029530319 442871336 36727018
+1921604616 770934113 68546178
+3560536321 3114405501 28822192
+1019762634 1263534129 9767685
+3852235341 3579014714 60339892
+2385228698 1577946038 12687686
+2234322470 239492825 150906228
+0 170310676 54562015
+3208946111 3808044802 89666405
+1209615399 839480291 424053838
+4032840540 4041982568 1485376
+2497725961 2174737461 293042810
+2002543511 1346167079 231778959
+3312862017 3475611771 103402943
+318739997 1739678266 354749094
+1013551435 3012735174 6211199
+4014277153 4160859076 15730258
+3589358513 3143227693 230682158
+1990150794 2467780271 12392717
+3051046904 3081733790 32671711
+3820040671 3761600631 32194670
+148429321 0 170310676
+673489091 2480172988 191017802
+1066257337 627576051 143358062
+2790768771 2770401575 242333599
+3091554979 4043467944 117391132
+3416264960 3897711207 144271361
+3912575233 3373909851 101701920
+4072291714 3639354606 104297620
+3083718615 3053880033 7836364
+54562015 3019545165 13557205
+1759006785 479598354 147977697
+68119220 2094427360 80310101
+1706534502 390399053 52472283
+4054343309 3743652226 17948405
+
+fertilizer-to-water map:
+0 1095885172 129797665
+2661548513 1044284418 17872363
+3282164642 3678907615 214830258
+1440687421 2218635146 325889720
+3496994900 4208791298 25912548
+3253828209 4136945159 5561683
+1797056017 864689597 109403664
+3259389892 4186016548 22774750
+2578517508 1225682837 83031005
+3193832718 3618912124 59995491
+3695649169 3214450646 211194594
+820325042 974093261 70191157
+1284591017 1074888739 20996433
+2929761569 3893737873 85668135
+1305587450 2605461705 73959171
+2168339930 1062156781 12731958
+2465234843 2135490203 52666067
+3522907448 4108091872 882860
+3523790308 4255675252 39292044
+2517900910 1308713842 60616598
+3563082352 3176039879 38410767
+3015429704 3979406008 128685864
+1913427402 2131043562 4446641
+2235159285 1419841841 190190495
+3673886186 4108974732 21762983
+891504291 1610032336 393086726
+3927815169 3425645240 193266884
+4121082053 3002154636 173885243
+2084864581 2004107154 83475349
+1917874043 557612753 69524983
+890516199 2003119062 988092
+766355924 2551492587 53969118
+1379546621 0 61140800
+3187625274 4130737715 6207444
+528804063 627137736 237551861
+1987399026 230411125 97465555
+1906459681 2544524866 6967721
+2184647884 1369330440 50511401
+2425349780 2091158499 39885063
+2181071888 2087582503 3575996
+3144115568 4142506842 43509706
+1766577141 2188156270 30478876
+359533738 61140800 169270325
+129797665 327876680 229736073
+3906843763 4234703846 20971406
+3601493119 2929761569 72393067
+
+water-to-light map:
+2375927917 1595026882 126334140
+1307603095 818620477 43777869
+2050676589 1855896418 112224406
+3618302244 2909504698 119958941
+3078570200 3088215627 6211083
+3084781283 3094426710 141266337
+524666822 53020621 149058240
+673725062 862398346 147671362
+2364320682 2577001713 11607235
+1941578413 1584221500 10805382
+2162900995 2536766467 40235246
+162015400 237365123 4480592
+821396424 241845715 141336168
+166495992 1138498800 212882164
+4277433486 4220367555 17533810
+3226047620 2229635217 307131250
+2909428734 1968120824 34606070
+1885573816 3954749082 56004597
+2711875933 2868267590 41237108
+0 726306378 92314099
+2944034804 1721361022 134535396
+1584221500 3392008740 301352316
+962732592 34415039 18605582
+2235705153 2101019688 128615529
+4252936467 4237901365 24497019
+92314099 202078861 35286262
+981338174 400041457 326264921
+379378156 1010069708 128429092
+3591930858 3693361056 26371386
+3785017329 3719732442 235016640
+2502262057 4010753679 209613876
+3533178870 3029463639 58751988
+3738261185 2821511446 46756144
+4020033969 2806534555 14976891
+1952383795 2002726894 98292794
+127600361 0 34415039
+2753113041 3235693047 156315693
+507807248 383181883 16859574
+2203136241 4262398384 32568912
+4035010860 2588608948 217925607
+
+light-to-temperature map:
+2137189745 1335050925 100355790
+639139367 2440321747 987829
+1663612748 1778059435 153830272
+1122754252 1950103191 82536600
+1929621334 1199531530 135519395
+1286703174 2032639791 207137687
+245313533 981575774 217955756
+2597564380 2824691125 293777778
+895004176 331442633 25226735
+1493840861 236388681 616173
+1494457034 764560381 107637728
+1817443020 1435406715 112178314
+1205290852 356669368 33552643
+474799702 0 164339665
+2341054397 2260378974 100255179
+1043066658 2360634153 79687594
+125852143 390222011 119461390
+3924383937 3130691909 13614218
+2467721984 3747288823 76649669
+2065140729 164339665 72049016
+920230911 1673437172 104622263
+640127196 509683401 254876980
+1024853174 1931889707 18213484
+2331983314 2251307891 9071083
+2237545535 237004854 94437779
+3912160931 3118468903 12223006
+1238843495 933716095 47859679
+3326002417 3517222025 230066798
+3556069215 3144306127 241363224
+3797432439 4180238804 114728492
+1602094762 872198109 61517986
+2544371653 4127046077 53192727
+2891342158 3823938492 303107585
+463269289 2239777478 11530413
+3194449743 3385669351 131552674
+3937998155 2467721984 356969141
+0 1547585029 125852143
+
+temperature-to-humidity map:
+2687600833 2313887435 187105587
+3281196981 2291603041 22284394
+1771250828 1899269239 314167725
+784031720 478456148 306959384
+2605226464 1771250828 58348072
+2085418553 3793564740 111907603
+1090991104 785415532 575136195
+3437652344 1829598900 69670339
+2874706420 2500993022 389039942
+3303481375 3905472343 134170969
+305575572 0 478456148
+3263746362 2890032964 17450619
+2527060387 2213436964 78166077
+2428623843 3695128196 98436544
+2663574536 4270940999 24026297
+3507322683 2907483583 787644613
+2197326156 4039643312 231297687
+0 1360551727 305575572
+
+humidity-to-location map:
+1919184105 1156349110 51114849
+4031284281 3411510751 25609498
+0 171183359 79004094
+1253227229 2072782209 122019778
+4056893779 3437120249 136289693
+3402931364 4156827458 101778985
+84557792 1207463959 134801591
+635909965 1371746366 266495395
+4029464617 4127764171 1819664
+4193183472 2857352625 101783824
+1375247007 2200355685 41445634
+1996492203 0 171183359
+3601595563 3699895117 427869054
+2218993186 1133540977 22808133
+3217192942 2959136449 140385316
+2987922009 4258606443 9236491
+2628749093 2543337773 86365212
+2167675562 369831582 51317624
+3504710349 2446452559 96885214
+902405360 421149206 108869392
+3357578258 2811999519 45353106
+1196458443 1638241761 56768786
+1178674352 693035436 17784091
+1970298954 530018598 26193249
+2868723842 3099521765 91954544
+1522874936 895259169 18612073
+2841599480 4267842934 27124362
+1880563756 1695010547 38620349
+1011274752 913871242 137918784
+219359383 556211847 136823589
+1785350971 250187453 95212785
+2960678386 4129583835 27243623
+540622614 1977494858 95287351
+356182972 710819527 184439642
+1498443592 345400238 24431344
+1416692641 1051790026 81750951
+1541487009 1733630896 243863962
+79004094 2194801987 5553698
+1149193536 1342265550 29480816
+2997158500 3191476309 220034442
+2715114305 3573409942 126485175
+2446452559 2629702985 182296534
diff --git a/AOC2023/input2023/test05.in b/AOC2023/input2023/test05.in
new file mode 100644
index 0000000..f756727
--- /dev/null
+++ b/AOC2023/input2023/test05.in
@@ -0,0 +1,33 @@
+seeds: 79 14 55 13
+
+seed-to-soil map:
+50 98 2
+52 50 48
+
+soil-to-fertilizer map:
+0 15 37
+37 52 2
+39 0 15
+
+fertilizer-to-water map:
+49 53 8
+0 11 42
+42 0 7
+57 7 4
+
+water-to-light map:
+88 18 7
+18 25 70
+
+light-to-temperature map:
+45 77 23
+81 45 19
+68 64 13
+
+temperature-to-humidity map:
+0 69 1
+1 0 69
+
+humidity-to-location map:
+60 56 37
+56 93 4
diff --git a/DayXX.cs.txt b/DayXX.cs.txt
index fc3a7e7..cc0f03f 100644
--- a/DayXX.cs.txt
+++ b/DayXX.cs.txt
@@ -1,21 +1,11 @@
namespace AOCYYYY;
///
-/// Day Q:
+/// Day Q
///
public sealed class DayXX() : Day(YYYY, Q, "Puzzle Name")
{
- public override void ProcessInput()
- {
- }
+ public override object Part1() => "";
- public override object Part1()
- {
- return "";
- }
-
- public override object Part2()
- {
- return "";
- }
+ public override object Part2() => "";
}