diff --git a/7/7_2.py b/7/7_2.py new file mode 100755 index 0000000..4852ebb --- /dev/null +++ b/7/7_2.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# 2021 - Advent Of Code - 7 part 2 + +def parse_file(file): + with open(file) 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}')