// #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