46 lines
913 B
Python
46 lines
913 B
Python
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]}")
|