make ProcessInput virtual instead of abstract and remove empty method bodies
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
843f58cf8c
commit
b254c48ec4
|
@ -2,23 +2,66 @@ using CommandLine;
|
|||
|
||||
namespace AOC.Common;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for a day's solution. Provides stopwatch timing and command line parsing.
|
||||
/// </summary>
|
||||
/// <param name="year"></param>
|
||||
/// <param name="day"></param>
|
||||
/// <param name="puzzleName"></param>
|
||||
public abstract class Day(int year, int day, string puzzleName)
|
||||
{
|
||||
/// <summary>
|
||||
/// The year this Day is from.
|
||||
/// </summary>
|
||||
public int Year { get; } = year;
|
||||
/// <summary>
|
||||
/// What day it is.
|
||||
/// </summary>
|
||||
public int DayNumber { get; } = day;
|
||||
/// <summary>
|
||||
/// The name of the puzzle.
|
||||
/// </summary>
|
||||
public string PuzzleName { get; } = puzzleName;
|
||||
|
||||
/// <summary>
|
||||
/// Enumerable of all lines in the input file.
|
||||
/// </summary>
|
||||
protected IEnumerable<string> Input => File.ReadLines(FileName);
|
||||
|
||||
/// <summary>
|
||||
/// Input file as a <see cref="ReadOnlySpan">span</see>.
|
||||
/// </summary>
|
||||
protected ReadOnlySpan<char> InputBytes => File.ReadAllText(FileName);
|
||||
|
||||
/// <summary>
|
||||
/// Path to the input file in the format of "inputYEAR/dayNN.in".
|
||||
/// </summary>
|
||||
public string FileName =>
|
||||
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
|
||||
$"input{Year}/{(UseTestInput ? "test" : "day")}{DayNumber,2:00}.in");
|
||||
|
||||
/// <summary>
|
||||
/// A toggle to read the test input file instead of the real input.
|
||||
/// </summary>
|
||||
public static bool UseTestInput { get; set; }
|
||||
private readonly Stopwatch _stopwatch = new();
|
||||
|
||||
public abstract void ProcessInput();
|
||||
/// <summary>
|
||||
/// Initial parsing of the puzzle input.
|
||||
/// </summary>
|
||||
public virtual void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Solve Part 1.
|
||||
/// </summary>
|
||||
/// <returns>object whose string representation will be the answer</returns>
|
||||
public abstract object Part1();
|
||||
/// <summary>
|
||||
/// Solve Part 2.
|
||||
/// </summary>
|
||||
/// <returns>object whose string representation will be the answer</returns>
|
||||
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; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parse the command line args and run the appropriate puzzles.
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
/// <exception cref="ApplicationException"></exception>
|
||||
/// <exception cref="ArgumentOutOfRangeException"></exception>
|
||||
public static void RunFromArgs(string[] args)
|
||||
{
|
||||
var days = Assembly.GetEntryAssembly()?.GetTypes()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2015;
|
|||
/// </summary>
|
||||
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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -8,10 +8,6 @@ public sealed class Day07() : Day(2015, 7, "Some Assembly Required")
|
|||
private readonly Dictionary<string, Func<ushort>> _actions = [];
|
||||
private readonly Dictionary<string, ushort> _wires = [];
|
||||
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1()
|
||||
{
|
||||
ProcessInstructions();
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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<string> Common() =>
|
||||
Input
|
||||
.Select(i => TwoDigitsRegex().Replace(i, ": 9"))
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2015;
|
|||
/// </summary>
|
||||
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<char, int> registers = new()
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2015;
|
|||
/// </summary>
|
||||
public sealed class Day24() : Day(2015, 24, "It Hangs in the Balance")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day02() : Day(2016, 2, "Bathroom Security")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1()
|
||||
{
|
||||
List<int> answer = [];
|
||||
|
|
|
@ -7,10 +7,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
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();
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day08() : Day(2016, 8, "Two-Factor Authentication")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
private static string PrintGrid(char[,] screen)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
|
|
@ -5,9 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day09() : Day(2016, 9, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day10() : Day(2016, 10, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day11() : Day(2016, 11, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day12() : Day(2016, 12, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day13() : Day(2016, 13, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day14() : Day(2016, 14, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day15() : Day(2016, 15, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day16() : Day(2016, 16, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day17() : Day(2016, 17, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day18() : Day(2016, 18, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day19() : Day(2016, 19, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day20() : Day(2016, 20, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day21() : Day(2016, 21, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day22() : Day(2016, 22, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day23() : Day(2016, 23, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day24() : Day(2016, 24, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2016;
|
|||
/// </summary>
|
||||
public sealed class Day25() : Day(2016, 25, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day01() : Day(2017, 1, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day02() : Day(2017, 2, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day03() : Day(2017, 3, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day04() : Day(2017, 4, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day05() : Day(2017, 5, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day06() : Day(2017, 6, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day07() : Day(2017, 7, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day08() : Day(2017, 8, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day09() : Day(2017, 9, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day10() : Day(2017, 10, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day11() : Day(2017, 11, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day12() : Day(2017, 12, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day13() : Day(2017, 13, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day14() : Day(2017, 14, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day15() : Day(2017, 15, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day16() : Day(2017, 16, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day17() : Day(2017, 17, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day18() : Day(2017, 18, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day19() : Day(2017, 19, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day20() : Day(2017, 20, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day21() : Day(2017, 21, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day22() : Day(2017, 22, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day23() : Day(2017, 23, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,11 +5,7 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
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() => "";
|
||||
}
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2017;
|
|||
/// </summary>
|
||||
public sealed class Day25() : Day(2017, 25, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
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()
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
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++)
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day04() : Day(2018, 4, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day05() : Day(2018, 5, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,11 +5,7 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
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() => "";
|
||||
}
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day07() : Day(2018, 7, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day08() : Day(2018, 8, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day09() : Day(2018, 9, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day10() : Day(2018, 10, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,11 +5,7 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
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() => "";
|
||||
}
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day12() : Day(2018, 12, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day13() : Day(2018, 13, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day14() : Day(2018, 14, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day15() : Day(2018, 15, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day16() : Day(2018, 16, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day17() : Day(2018, 17, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day18() : Day(2018, 18, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day19() : Day(2018, 19, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day20() : Day(2018, 20, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,11 +5,7 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
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() => "";
|
||||
}
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day22() : Day(2018, 22, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day23() : Day(2018, 23, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day24() : Day(2018, 24, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2018;
|
|||
/// </summary>
|
||||
public sealed class Day25() : Day(2018, 25, "Puzzle Name")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -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() => "";
|
||||
|
|
|
@ -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() => "";
|
||||
|
|
|
@ -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() => "";
|
||||
}
|
||||
|
|
|
@ -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() => "";
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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() => "";
|
||||
|
|
|
@ -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() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2020;
|
|||
/// </summary>
|
||||
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)
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2020;
|
|||
/// </summary>
|
||||
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()
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2020;
|
|||
/// </summary>
|
||||
public sealed class Day14() : Day(2020, 14, "Docking Data")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
private static readonly char[] SquareBrackets = ['[', ']'];
|
||||
private static readonly char[] BracketsAndEquals = [.. SquareBrackets, '='];
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2020;
|
|||
/// </summary>
|
||||
public sealed class Day25() : Day(2020, 25, "Combo Breaker")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
private static long Transform(long subject, int loopSize)
|
||||
{
|
||||
var value = 1L;
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2021;
|
|||
/// </summary>
|
||||
public sealed class Day02() : Day(2021, 2, "Dive!")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1()
|
||||
{
|
||||
int horiz = 0, depth = 0;
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2021;
|
|||
/// </summary>
|
||||
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())
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2022;
|
|||
/// </summary>
|
||||
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<IEnumerable<char>>((a, b) => a.Intersect(b)).Single()));
|
||||
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2022;
|
|||
/// </summary>
|
||||
public sealed class Day16() : Day(2022, 16, "Proboscidea Volcanium")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2022;
|
|||
/// </summary>
|
||||
public sealed class Day17() : Day(2022, 17, "Pyroclastic Flow")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
|
@ -5,10 +5,6 @@ namespace AOC2022;
|
|||
/// </summary>
|
||||
public sealed class Day18() : Day(2022, 18, "Boiling Boulders")
|
||||
{
|
||||
public override void ProcessInput()
|
||||
{
|
||||
}
|
||||
|
||||
public override object Part1() => "";
|
||||
|
||||
public override object Part2() => "";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue