From add3743091dee570e63ad5c0c2c953b58896f1cc Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Sun, 1 Dec 2024 00:13:50 -0500 Subject: [PATCH] Day 1 --- AdventOfCode/AdventOfCode.csproj | 2 +- .../AOC2024/Day1/HistorianHysteria.cs | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 AdventOfCode/Problems/AOC2024/Day1/HistorianHysteria.cs diff --git a/AdventOfCode/AdventOfCode.csproj b/AdventOfCode/AdventOfCode.csproj index a96ed50..3d8672d 100644 --- a/AdventOfCode/AdventOfCode.csproj +++ b/AdventOfCode/AdventOfCode.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 enable enable diff --git a/AdventOfCode/Problems/AOC2024/Day1/HistorianHysteria.cs b/AdventOfCode/Problems/AOC2024/Day1/HistorianHysteria.cs new file mode 100644 index 0000000..0c4dcc2 --- /dev/null +++ b/AdventOfCode/Problems/AOC2024/Day1/HistorianHysteria.cs @@ -0,0 +1,40 @@ +using AdventOfCode.Runner.Attributes; + +using System; +using System.Collections.Frozen; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AdventOfCode.Problems.AOC2024.Day1; +[ProblemInfo(2024, 1, "Historian Hysteria")] +internal class HistorianHysteria : Problem +{ + private int[] _left = []; + private int[] _right = []; + + public override void CalculatePart1() + { + Part1 = _left.Order() + .Zip(_right.Order()) + .Select(a => Math.Abs(a.First - a.Second)) + .Sum(); + } + + public override void CalculatePart2() + { + var rightFeq = _right.GroupBy(x => x) + .ToFrozenDictionary(g => g.Key, g => g.Count()); + Part2 = _left.Select(x => rightFeq.TryGetValue(x, out var f) ? f * x : 0) + .Sum(); + } + + public override void LoadInput() + { + var lines = ReadInputLines("input.txt"); + var data = lines.Select(l => l.Split(' ').Select(int.Parse)).ToList(); + _left = data.Select(l => l.First()).ToArray(); + _right = data.Select(l => l.Last()).ToArray(); + } +}