diff --git a/src/01.cs b/src/01.cs index 8a01230..c5f9a9f 100644 --- a/src/01.cs +++ b/src/01.cs @@ -4,7 +4,7 @@ internal class Day01 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/01.txt"); + var lines = Util.ReadAllLines("inputs/01.txt"); Part1(lines); Part2(lines); } diff --git a/src/02.cs b/src/02.cs index a8bf46d..e7e00aa 100644 --- a/src/02.cs +++ b/src/02.cs @@ -4,7 +4,7 @@ internal class Day02 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/02.txt"); + var lines = Util.ReadAllLines("inputs/02.txt"); var instructions = new List(); foreach (var instruction in lines) { diff --git a/src/03.cs b/src/03.cs index 31c78a1..7369935 100644 --- a/src/03.cs +++ b/src/03.cs @@ -4,7 +4,7 @@ internal class Day03 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/03.txt"); + var lines = Util.ReadAllLines("inputs/03.txt"); Part1(lines); Part2(lines); } diff --git a/src/05.cs b/src/05.cs index 183631a..024fb9b 100644 --- a/src/05.cs +++ b/src/05.cs @@ -43,7 +43,7 @@ internal class Day05 : Day internal override void Go() { - var lines = File.ReadAllLines("inputs/05.txt"); + var lines = Util.ReadAllLines("inputs/05.txt"); List segments = new(); foreach (var line in lines) { diff --git a/src/08.cs b/src/08.cs index e56f588..a51fced 100644 --- a/src/08.cs +++ b/src/08.cs @@ -4,7 +4,7 @@ internal class Day08 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/08.txt"); + var lines = Util.ReadAllLines("inputs/08.txt"); List<(List, List)> puzzle = new(); foreach (var line in lines) { diff --git a/src/09.cs b/src/09.cs index bd12a9f..a99e3f5 100644 --- a/src/09.cs +++ b/src/09.cs @@ -4,7 +4,7 @@ internal class Day09 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/09.txt"); + var lines = Util.ReadAllLines("inputs/09.txt").ToArray(); byte[,] grid = new byte[lines.Length, lines[0].Length]; for (int i = 0; i < lines.Length; i++) { diff --git a/src/10.cs b/src/10.cs index 9631252..c7ddc99 100644 --- a/src/10.cs +++ b/src/10.cs @@ -4,7 +4,7 @@ internal class Day10 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/10.txt"); + var lines = Util.ReadAllLines("inputs/10.txt"); Part1(lines); Part2(lines); } diff --git a/src/11.cs b/src/11.cs index 35da95a..0c34d08 100644 --- a/src/11.cs +++ b/src/11.cs @@ -4,7 +4,7 @@ internal class Day11 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/11.txt"); + var lines = Util.ReadAllLines("inputs/11.txt").ToArray(); var grid = new byte[lines.Length, lines[0].Length]; for (int i = 0; i < lines.Length; i++) { diff --git a/src/12.cs b/src/12.cs index cce4ae1..8fc6fa9 100644 --- a/src/12.cs +++ b/src/12.cs @@ -4,7 +4,7 @@ internal class Day12 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/12.txt"); + var lines = Util.ReadAllLines("inputs/12.txt"); var paths = new Dictionary>(); foreach (var line in lines) { diff --git a/src/13.cs b/src/13.cs index 842ce43..df8adf1 100644 --- a/src/13.cs +++ b/src/13.cs @@ -4,7 +4,7 @@ internal class Day13 : Day { internal override void Go() { - var lines = File.ReadAllLines("inputs/13.txt"); + var lines = Util.ReadAllLines("inputs/13.txt"); int phase = 0; var points = new HashSet<(int, int)>(); var folds = new List<(char, int)>(); diff --git a/src/Template.cs b/src/Template.cs index 1a56b23..0c4eeb4 100644 --- a/src/Template.cs +++ b/src/Template.cs @@ -6,7 +6,7 @@ internal class DayTemplate : Day { Logger.Log("Day #"); Logger.Log("-----"); - var lines = File.ReadAllLines("inputs/##.txt"); + var lines = Util.ReadAllLines("inputs/##.txt"); Part1(lines); Part2(lines); Logger.Log(""); diff --git a/src/Util.cs b/src/Util.cs new file mode 100644 index 0000000..dfff7ff --- /dev/null +++ b/src/Util.cs @@ -0,0 +1,32 @@ +using System.Text; + +namespace aoc2021; + +internal static class Util +{ + internal static IEnumerable ReadAllLines(string filename) + { + if (Console.IsInputRedirected) + { + string? line; + List lines = new(); + while ((line = Console.In.ReadLine()) != null) + { + if (!lines.Any()) + { + if (line.StartsWith(Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()))) + { + line = line[Encoding.UTF8.GetPreamble().Length..]; + } + } + lines.Add(line); + } + + return lines; + } + else + { + return File.ReadAllLines(filename); + } + } +}