add virtual implementation for reading input file

This commit is contained in:
Ben Harris 2019-12-06 02:01:51 -05:00
parent 53b7f05dee
commit 419f225bd0
6 changed files with 24 additions and 10 deletions

7
Day.cs
View File

@ -1,16 +1,23 @@
using System; using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
namespace aoc2019 namespace aoc2019
{ {
public abstract class Day public abstract class Day
{ {
public abstract int DayNumber { get; } public abstract int DayNumber { get; }
public virtual IEnumerable<string> Input =>
File.ReadLines($"input/day{DayNumber}.in");
public virtual void AllParts() public virtual void AllParts()
{ {
Console.WriteLine($"Day {DayNumber}:"); Console.WriteLine($"Day {DayNumber}:");
Console.WriteLine(Part1()); Console.WriteLine(Part1());
Console.WriteLine(Part2()); Console.WriteLine(Part2());
} }
public abstract string Part1(); public abstract string Part1();
public abstract string Part2(); public abstract string Part2();
} }

View File

@ -8,8 +8,11 @@ namespace aoc2019
{ {
public override int DayNumber => 1; public override int DayNumber => 1;
private readonly IEnumerable<int> masses = private readonly IEnumerable<int> masses;
File.ReadLines("input/day1.in").Select(int.Parse); public Day1()
{
masses = Input.Select(int.Parse);
}
private static int FuelCost(int weight) => weight / 3 - 2; private static int FuelCost(int weight) => weight / 3 - 2;
private static int FullCost(int cost) private static int FullCost(int cost)

View File

@ -8,8 +8,11 @@ namespace aoc2019
{ {
public override int DayNumber => 2; public override int DayNumber => 2;
private readonly IEnumerable<int> input = private readonly IEnumerable<int> input;
File.ReadLines("input/day2.in").First().Split(',').Select(int.Parse); public Day2()
{
input = Input.First().Split(',').Select(int.Parse);
}
public int RunIntCode(int noun, int verb) public int RunIntCode(int noun, int verb)
{ {

View File

@ -14,7 +14,7 @@ namespace aoc2019
public Day3() public Day3()
{ {
wires = File.ReadAllLines("input/day3.in").Select(ParseWire).ToList(); wires = Input.Select(ParseWire).ToList();
intersections = wires[0].Keys.Intersect(wires[1].Keys); intersections = wires[0].Keys.Intersect(wires[1].Keys);
} }

View File

@ -12,9 +12,7 @@ namespace aoc2019
public Day4() public Day4()
{ {
var range = File.ReadLines("input/day4.in") var range = Input.First().Split('-').Select(int.Parse).ToList();
.First().Split('-').Select(int.Parse).ToList();
start = range[0]; end = range[1]; start = range[0]; end = range[1];
} }

View File

@ -8,8 +8,11 @@ namespace aoc2019
{ {
public override int DayNumber => 5; public override int DayNumber => 5;
private readonly IEnumerable<int> tape = private readonly IEnumerable<int> tape;
File.ReadLines("input/day5.in").First().Split(',').Select(int.Parse); public Day5()
{
tape = Input.First().Split(',').Select(int.Parse);
}
private int output; private int output;
public void RunIntCode(List<int> v, int input) public void RunIntCode(List<int> v, int input)