refactor p1 and p2 to return objects
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Ben Harris 2021-12-12 15:09:41 -05:00
parent 7feb07944a
commit 18a5d9aae3
Signed by: ben
GPG Key ID: 4E0AF802FFF7960C
15 changed files with 47 additions and 49 deletions

View File

@ -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");

View File

@ -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)
{

View File

@ -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]);
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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<int, bool> 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)

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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();
}

View File

@ -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<long>();
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);
}
}

View File

@ -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];
}
}

View File

@ -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;
}

View File

@ -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());
}

View File

@ -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() => "";
}