var response = await new HttpClient().GetStringAsync("https://tompafireadventofcode.free.beeceptor.com/day7");
var positions = response.Split(',').Select(int.Parse);
var posibleEndPositions = Enumerable.Range(positions.Min(), positions.Max() - positions.Min());
var positionsWithStepsToNPosition = positions.SelectMany(p => posibleEndPositions.Select(p2 => new { start = p, end = p2, steps = Math.Abs(p2 - p) }));
var endPositionWithFewestTotalSteps = positionsWithStepsToNPosition
.Select(x => new { end = x.Key, totalSteps = x.Sum(y => y.steps) })
.MinBy(x => x.totalSteps);
Console.WriteLine($"Shortest number of steps: {endPositionWithFewestTotalSteps.totalSteps} (to position {endPositionWithFewestTotalSteps.end})");
var fuelConsumptionForSteps = positionsWithStepsToNPosition.Select(p => p.steps).Distinct()
.ToDictionary(steps => steps, steps => GetFuelConsumtion(steps));
var endPositionWithLowestFuelConsumption = positionsWithStepsToNPosition
.Select(x => new { end = x.Key, fuelConsumption = x.Sum(y => fuelConsumptionForSteps[y.steps]) })
.MinBy(x => x.fuelConsumption);
Console.WriteLine($"Lowest fuel consumption: {endPositionWithLowestFuelConsumption.fuelConsumption} (to position {endPositionWithLowestFuelConsumption.end})");
int GetFuelConsumtion(int steps)
for (var i = 1; i <= steps; i++)