diff --git a/Day.cs b/Day.cs index e12d7eb..ccd06c6 100644 --- a/Day.cs +++ b/Day.cs @@ -1,16 +1,23 @@ using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; namespace aoc2019 { public abstract class Day { public abstract int DayNumber { get; } + public virtual IEnumerable Input => + File.ReadLines($"input/day{DayNumber}.in"); + public virtual void AllParts() { Console.WriteLine($"Day {DayNumber}:"); Console.WriteLine(Part1()); Console.WriteLine(Part2()); } + public abstract string Part1(); public abstract string Part2(); } diff --git a/Day1.cs b/Day1.cs index dd57645..0cc0176 100644 --- a/Day1.cs +++ b/Day1.cs @@ -8,8 +8,11 @@ namespace aoc2019 { public override int DayNumber => 1; - private readonly IEnumerable masses = - File.ReadLines("input/day1.in").Select(int.Parse); + private readonly IEnumerable masses; + public Day1() + { + masses = Input.Select(int.Parse); + } private static int FuelCost(int weight) => weight / 3 - 2; private static int FullCost(int cost) diff --git a/Day2.cs b/Day2.cs index 1549e28..f474c45 100644 --- a/Day2.cs +++ b/Day2.cs @@ -8,8 +8,11 @@ namespace aoc2019 { public override int DayNumber => 2; - private readonly IEnumerable input = - File.ReadLines("input/day2.in").First().Split(',').Select(int.Parse); + private readonly IEnumerable input; + public Day2() + { + input = Input.First().Split(',').Select(int.Parse); + } public int RunIntCode(int noun, int verb) { diff --git a/Day3.cs b/Day3.cs index e3f998f..442c58a 100644 --- a/Day3.cs +++ b/Day3.cs @@ -14,7 +14,7 @@ namespace aoc2019 public Day3() { - wires = File.ReadAllLines("input/day3.in").Select(ParseWire).ToList(); + wires = Input.Select(ParseWire).ToList(); intersections = wires[0].Keys.Intersect(wires[1].Keys); } diff --git a/Day4.cs b/Day4.cs index 1a7ece7..fad209d 100644 --- a/Day4.cs +++ b/Day4.cs @@ -12,9 +12,7 @@ namespace aoc2019 public Day4() { - var range = File.ReadLines("input/day4.in") - .First().Split('-').Select(int.Parse).ToList(); - + var range = Input.First().Split('-').Select(int.Parse).ToList(); start = range[0]; end = range[1]; } diff --git a/Day5.cs b/Day5.cs index ca9a08f..ecfa14e 100644 --- a/Day5.cs +++ b/Day5.cs @@ -8,8 +8,11 @@ namespace aoc2019 { public override int DayNumber => 5; - private readonly IEnumerable tape = - File.ReadLines("input/day5.in").First().Split(',').Select(int.Parse); + private readonly IEnumerable tape; + public Day5() + { + tape = Input.First().Split(',').Select(int.Parse); + } private int output; public void RunIntCode(List v, int input)