using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; namespace aoc2019 { public abstract class Day { public abstract int DayNumber { get; } protected virtual IEnumerable Input => File.ReadLines($"input/day{DayNumber}.in"); public virtual void AllParts(bool verbose = false) { Console.WriteLine($"Day {DayNumber}:"); var s = new Stopwatch(); s.Start(); var part1 = Part1(); s.Stop(); if (verbose) Console.WriteLine($"part 1 elapsed ticks: {s.ElapsedTicks}"); Console.WriteLine(part1); s.Reset(); s.Start(); var part2 = Part2(); s.Stop(); if (verbose) Console.WriteLine($"part 2 elapsed ticks: {s.ElapsedTicks}"); Console.WriteLine(part2); Console.WriteLine(); } protected abstract string Part1(); protected abstract string Part2(); } }