ben
/
aoc
1
0
Fork 0
aoc/AOC2015/Day02.cs

46 lines
1.3 KiB
C#
Raw Permalink Normal View History

2022-12-03 05:55:49 +00:00
namespace AOC2015;
/// <summary>
2022-12-03 05:41:38 +00:00
/// Day 2: <a href="https://adventofcode.com/2015/day/2"/>
/// </summary>
2023-09-20 18:38:58 +00:00
public sealed class Day02() : Day(2015, 2, "I Was Told There Would Be No Math")
{
private List<List<int>>? _gifts;
2023-12-01 07:30:47 +00:00
public override void ProcessInput() =>
_gifts = Input.Select(line => line.Split('x').Select(int.Parse).ToList()).ToList();
2023-12-01 07:30:47 +00:00
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];
2023-12-01 07:30:47 +00:00
var smallestSideArea = 1;
for (var i = 0; i < gift.Count; i++)
{
if (i == biggestDimension) continue;
smallestSideArea *= gift[i];
}
return surfaceArea + smallestSideArea;
});
2023-12-01 07:30:47 +00:00
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;
});
}