2021aoc/Day7.cs

19 lines
658 B
C#

// #define Day7
#if Day7
var positions = File.ReadAllText("day7/input").Split(",")
.Select(int.Parse).OrderBy(x => x).ToList();
// Part 1, although uncertain if this is 100% correct
int start = positions[positions.Count / 2 - 1];
int end = positions[positions.Count / 2];
var res = Enumerable.Range(start, end - start + 1).Select(i => positions.Select(p => Math.Abs(i - p)).Sum()).Min();
Console.WriteLine(res);
// Part 2
var resPart2 = Enumerable.Range(0, positions.Last())
.Select(i => positions.Select(p => SumGauss(Math.Abs(i - p))).Sum())
.Min();
Console.WriteLine(resPart2);
double SumGauss(long a) => (Math.Pow(a, 2) + a) / 2;
#endif