import itertools def get_area(a,b): min_x = min(a[0],b[0]) max_x = max(a[0],b[0]) min_y = min(a[1],b[1]) max_y = max(a[1],b[1]) x = max_x - min_x + 1 y = max_y - min_y + 1 return x * y def read_input(filename): space = [] for line in open(filename).read().splitlines(): x,y = line.split(",") space.append((int(x), int(y))) return space # filename = "day09/example_input" # 50 filename = "day09/input" # 4761736832 tiles = read_input(filename) # build list of (unique) combinations tiles_comb = itertools.combinations(tiles,2) print("Calculate distances") # Add distance to the list tiles_area = [] for a,b in tiles_comb: area = get_area(a,b) tiles_area.append((a,b,area)) # def jd_sort(junc_dist): # return junc_dist[2] # tiles_area.sort(key=jd_sort) tiles_area.sort(key=lambda x: x[2]) print(f"Largest area: {tiles_area[-1][2]}")