#!/usr/bin/env python # 2021 - Advent Of Code - 7 part 2 def parse_file(file): with open(file, encoding="utf-8") as f: line = f.readline() list_state = [int(x) for x in line.split(',')] return list_state def sum_n(n): return int(n*(n+1) / 2) # init_state = parse_file('input_example.txt') init_state = parse_file('input.txt') nb_crabs = len(init_state) print(f'Initial state with {nb_crabs} crabs: {init_state}') max_h = max(init_state) print(f'maximum horizontal position is {max_h}') all_diff = [0] * max_h min_fuel = sum_n(max_h) * nb_crabs min_fuel_pos = 0 for m in range(max_h): list_diff = [sum_n(abs(m-x)) for x in init_state] if sum(list_diff) < min_fuel: min_fuel = sum(list_diff) min_fuel_pos = m all_diff[m] = list_diff print(f'min fuel {min_fuel} for position {min_fuel_pos}')