namespace AOC2015; /// /// Day 2: /// public sealed class Day02() : Day(2015, 2, "I Was Told There Would Be No Math") { private List>? _gifts; public override void ProcessInput() => _gifts = Input.Select(line => line.Split('x').Select(int.Parse).ToList()).ToList(); public override object Part1() => _gifts!.Sum(gift => { var biggestDimension = gift.IndexOf(gift.Max()); var surfaceArea = 2 * gift[0] * gift[1] + 2 * gift[1] * gift[2] + 2 * gift[0] * gift[2]; var smallestSideArea = 1; for (var i = 0; i < gift.Count; i++) { if (i == biggestDimension) continue; smallestSideArea *= gift[i]; } return surfaceArea + smallestSideArea; }); public override object Part2() => _gifts!.Sum(gift => { var biggestDimension = gift.IndexOf(gift.Max()); var bowArea = gift.Aggregate(1, (i, i1) => i * i1); var smallestSide = 0; for (var i = 0; i < gift.Count; i++) { if (i == biggestDimension) continue; smallestSide += 2 * gift[i]; } return smallestSide + bowArea; }); }