diff --git a/aoc2021.test/DayTests.cs b/aoc2021.test/DayTests.cs index 723205e..04b9d4f 100644 --- a/aoc2021.test/DayTests.cs +++ b/aoc2021.test/DayTests.cs @@ -29,7 +29,7 @@ public class DayTests // part 1 s.Reset(); s.Start(); - var part1Actual = day.Part1(); + var part1Actual = day.Part1().ToString(); s.Stop(); Console.Write($"Part 1: {part1Actual,-25} "); Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); @@ -38,7 +38,7 @@ public class DayTests // part 2 s.Reset(); s.Start(); - var part2Actual = day.Part2(); + var part2Actual = day.Part2().ToString(); s.Stop(); Console.Write($"Part 2: {part2Actual,-25} "); Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); @@ -72,7 +72,7 @@ public class DayTests // part 1 s.Reset(); s.Start(); - var part1Actual = day.Part1(); + var part1Actual = day.Part1().ToString(); s.Stop(); Console.Write($"Part 1: {part1Actual,-25} "); Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); @@ -81,7 +81,7 @@ public class DayTests // part 2 s.Reset(); s.Start(); - var part2Actual = day.Part2(); + var part2Actual = day.Part2().ToString(); s.Stop(); Console.Write($"Part 2: {part2Actual,-25} "); Console.WriteLine($"{s.ScaleMilliseconds()} ms elapsed"); diff --git a/aoc2021/Day.cs b/aoc2021/Day.cs index 15c4923..5e67d33 100644 --- a/aoc2021/Day.cs +++ b/aoc2021/Day.cs @@ -20,8 +20,8 @@ public abstract class Day Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"input/{(UseTestInput ? "test" : "day")}{DayNumber,2:00}.in"); - public abstract string Part1(); - public abstract string Part2(); + public abstract object Part1(); + public abstract object Part2(); public void AllParts(bool verbose = true) { diff --git a/aoc2021/Day01.cs b/aoc2021/Day01.cs index 529492d..e34daed 100644 --- a/aoc2021/Day01.cs +++ b/aoc2021/Day01.cs @@ -12,9 +12,9 @@ public sealed class Day01 : Day _readings = Input.Select(int.Parse).ToList(); } - public override string Part1() => - Enumerable.Range(0, _readings.Count - 1).Count(i => _readings[i + 1] > _readings[i]).ToString(); + public override object Part1() => + Enumerable.Range(0, _readings.Count - 1).Count(i => _readings[i + 1] > _readings[i]); - public override string Part2() => - Enumerable.Range(0, _readings.Count - 3).Count(i => _readings[i + 3] > _readings[i]).ToString(); + public override object Part2() => + Enumerable.Range(0, _readings.Count - 3).Count(i => _readings[i + 3] > _readings[i]); } diff --git a/aoc2021/Day02.cs b/aoc2021/Day02.cs index a099520..243973c 100644 --- a/aoc2021/Day02.cs +++ b/aoc2021/Day02.cs @@ -9,7 +9,7 @@ public sealed class Day02 : Day { } - public override string Part1() + public override object Part1() { int horiz = 0, depth = 0; foreach (var line in Input) @@ -30,10 +30,10 @@ public sealed class Day02 : Day } } - return $"{horiz * depth}"; + return horiz * depth; } - public override string Part2() + public override object Part2() { int aim = 0, depth = 0, horiz = 0; foreach (var line in Input) @@ -55,6 +55,6 @@ public sealed class Day02 : Day } } - return $"{horiz * depth}"; + return horiz * depth; } } diff --git a/aoc2021/Day03.cs b/aoc2021/Day03.cs index f8e18dc..7579ffe 100644 --- a/aoc2021/Day03.cs +++ b/aoc2021/Day03.cs @@ -12,7 +12,7 @@ public sealed class Day03 : Day _report = Input.ToList(); } - public override string Part1() + public override object Part1() { var l = _report.Count / 2; var g = new StringBuilder(); @@ -28,10 +28,10 @@ public sealed class Day03 : Day var gamma = g.ToString().BigIntegerFromBinaryString(); var epsilon = e.ToString().BigIntegerFromBinaryString(); - return $"{gamma * epsilon}"; + return gamma * epsilon; } - public override string Part2() + public override object Part2() { var o = _report; var c = _report; @@ -57,6 +57,6 @@ public sealed class Day03 : Day } var co2 = c.Single().BigIntegerFromBinaryString(); - return $"{o2 * co2}"; + return o2 * co2; } } diff --git a/aoc2021/Day04.cs b/aoc2021/Day04.cs index 26a7ea5..bf5e787 100644 --- a/aoc2021/Day04.cs +++ b/aoc2021/Day04.cs @@ -32,7 +32,7 @@ public sealed class Day04 : Day _size = (int)Math.Sqrt(currentBoard.Count); } - public override string Part1() + public override object Part1() { int i = _size, b = FirstWin(i); while (b == -1) @@ -42,10 +42,10 @@ public sealed class Day04 : Day } var called = _call.Take(i).ToHashSet(); - return $"{called.Last() * _boards[b].Where(x => !called.Contains(x)).Sum()}"; + return called.Last() * _boards[b].Where(x => !called.Contains(x)).Sum(); } - public override string Part2() + public override object Part2() { Dictionary wonBoards = new(); for (var i = 0; i < _boards.Count; i++) @@ -62,7 +62,7 @@ public sealed class Day04 : Day var called = _call.Take(j).ToHashSet(); var b = wonBoards.Single(kvp => !kvp.Value).Key; - return $"{called.Last() * _boards[b].Where(x => !called.Contains(x)).Sum()}"; + return called.Last() * _boards[b].Where(x => !called.Contains(x)).Sum(); } private int FirstWin(int i) diff --git a/aoc2021/Day05.cs b/aoc2021/Day05.cs index 83d0e62..14c0d1c 100644 --- a/aoc2021/Day05.cs +++ b/aoc2021/Day05.cs @@ -21,7 +21,7 @@ public sealed class Day05 : Day .GroupBy(k => k) .Count(k => k.Count() > 1); - public override string Part1() => $"{Solve()}"; + public override object Part1() => Solve(); - public override string Part2() => $"{Solve(diagonals: true)}"; + public override object Part2() => Solve(diagonals: true); } diff --git a/aoc2021/Day06.cs b/aoc2021/Day06.cs index 60687c5..a6707cc 100644 --- a/aoc2021/Day06.cs +++ b/aoc2021/Day06.cs @@ -29,7 +29,7 @@ public sealed class Day06 : Day _p2 = counts.Values.Sum(); } - public override string Part1() => $"{_p1}"; + public override object Part1() => _p1; - public override string Part2() => $"{_p2}"; + public override object Part2() => _p2; } diff --git a/aoc2021/Day07.cs b/aoc2021/Day07.cs index 0b936f3..56f88ba 100644 --- a/aoc2021/Day07.cs +++ b/aoc2021/Day07.cs @@ -14,17 +14,17 @@ public sealed class Day07 : Day private static long ArithmeticSumTo(long n) => n * (n + 1) / 2L; - public override string Part1() + public override object Part1() { var i = _tape[_tape.Count / 2]; - return $"{_tape.Select(t => Math.Abs(t - i)).Sum()}"; + return _tape.Select(t => Math.Abs(t - i)).Sum(); } - public override string Part2() + public override object Part2() { var avg = (decimal)_tape.Sum() / _tape.Count; var floor = _tape.Select(t => ArithmeticSumTo(Math.Abs(t - (long)Math.Floor(avg)))).Sum(); var ceil = _tape.Select(t => ArithmeticSumTo(Math.Abs(t - (long)Math.Ceiling(avg)))).Sum(); - return $"{Math.Min(floor, ceil)}"; + return Math.Min(floor, ceil); } } diff --git a/aoc2021/Day08.cs b/aoc2021/Day08.cs index 27931eb..dca969f 100644 --- a/aoc2021/Day08.cs +++ b/aoc2021/Day08.cs @@ -75,12 +75,11 @@ public sealed class Day08 : Day return int.Parse(digits.ToString()); } - public override string Part1() => + public override object Part1() => Input .Select(line => line.Split(" | ")[1].Split(' ')) .Select(outputs => outputs.Count(o => new[] { 2, 3, 4, 7 }.Contains(o.Length))) - .Sum() - .ToString(); + .Sum(); - public override string Part2() => Input.Select(Decode).Sum().ToString(); + public override object Part2() => Input.Select(Decode).Sum(); } diff --git a/aoc2021/Day09.cs b/aoc2021/Day09.cs index 111decb..62ae66e 100644 --- a/aoc2021/Day09.cs +++ b/aoc2021/Day09.cs @@ -31,9 +31,9 @@ public sealed class Day09 : Day } } - public override string Part1() => _part1Sum.ToString(); + public override object Part1() => _part1Sum; - public override string Part2() + public override object Part2() { var sizes = new List(); foreach (var (x, y) in _lowPoints) @@ -66,7 +66,6 @@ public sealed class Day09 : Day return sizes .OrderByDescending(x => x) .Take(3) - .Aggregate(1L, (a, b) => a * b) - .ToString(); + .Aggregate(1L, (a, b) => a * b); } } diff --git a/aoc2021/Day10.cs b/aoc2021/Day10.cs index bd93c77..a9f5399 100644 --- a/aoc2021/Day10.cs +++ b/aoc2021/Day10.cs @@ -67,11 +67,11 @@ public sealed class Day10 : Day } } - public override string Part1() => $"{_score1}"; + public override object Part1() => _score1; - public override string Part2() + public override object Part2() { var sorted = _scores2.OrderBy(i => i).ToList(); - return $"{sorted[sorted.Count / 2]}"; + return sorted[sorted.Count / 2]; } } diff --git a/aoc2021/Day11.cs b/aoc2021/Day11.cs index e93e180..efbdf7f 100644 --- a/aoc2021/Day11.cs +++ b/aoc2021/Day11.cs @@ -55,7 +55,7 @@ public sealed class Day11 : Day } } - public override string Part1() => $"{_flashesAfter100}"; + public override object Part1() => _flashesAfter100; - public override string Part2() => $"{_totalTurns}"; + public override object Part2() => _totalTurns; } diff --git a/aoc2021/Day12.cs b/aoc2021/Day12.cs index 7413206..876c678 100644 --- a/aoc2021/Day12.cs +++ b/aoc2021/Day12.cs @@ -54,9 +54,9 @@ public sealed class Day12 : Day return true; } - public override string Part1() => - $"{WalkGraph(_edges, "start", new())}"; + public override object Part1() => + WalkGraph(_edges, "start", new()); - public override string Part2() => - $"{TraverseGraph(_edges, "start", new())}"; + public override object Part2() => + TraverseGraph(_edges, "start", new()); } \ No newline at end of file diff --git a/aoc2021/DayXX.cs.txt b/aoc2021/DayXX.cs.txt index ba02380..ee51c1a 100644 --- a/aoc2021/DayXX.cs.txt +++ b/aoc2021/DayXX.cs.txt @@ -9,7 +9,7 @@ public sealed class DayXX : Day { } - public override string Part1() => ""; + public override object Part1() => ""; - public override string Part2() => ""; + public override object Part2() => ""; }