aoc2021/aoc2021/Day05.cs

28 lines
923 B
C#

namespace aoc2021;
/// <summary>
/// Day 5: <see href="https://adventofcode.com/2021/day/5"/>
/// </summary>
public sealed class Day05 : Day
{
public Day05() : base(5, "Hydrothermal Venture")
{
}
private int Solve(bool diagonals = false) =>
Input
.Select(s => Regex.Split(s, @"\D+").Select(int.Parse).ToList())
.Where(t => diagonals || t[0] == t[2] || t[1] == t[3])
.SelectMany(t =>
Enumerable.Range(0, Math.Max(Math.Abs(t[0] - t[2]), Math.Abs(t[1] - t[3])) + 1)
.Select(i => (
t[0] > t[2] ? t[2] + i : t[0] < t[2] ? t[2] - i : t[2],
t[1] > t[3] ? t[3] + i : t[1] < t[3] ? t[3] - i : t[3])))
.GroupBy(k => k)
.Count(k => k.Count() > 1);
public override object Part1() => Solve();
public override object Part2() => Solve(diagonals: true);
}