19 lines
658 B
C#
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 |