Added 2018 Day 6 (oops)
This commit is contained in:
parent
ff5ddb945a
commit
da49ee0eac
|
@ -0,0 +1,54 @@
|
||||||
|
with open('day6-input', 'r') as file:
|
||||||
|
data = [l.strip('\n') for l in file]
|
||||||
|
import numpy as np
|
||||||
|
coords = [[int(i.rstrip(',')) for i in c.split()] for c in data]
|
||||||
|
|
||||||
|
def distance(c1, c2):
|
||||||
|
dx = abs(c1[0]-c2[0])
|
||||||
|
dy = abs(c1[1]-c2[1])
|
||||||
|
return dx+dy
|
||||||
|
|
||||||
|
distances = {}
|
||||||
|
for coord in coords:
|
||||||
|
distances[tuple(coord)] = [distance(coord, c2) for c2 in coords if c2 is not coord]
|
||||||
|
|
||||||
|
cell_coord = max(distances.items(), key=lambda x: min(x[1]))
|
||||||
|
field = np.zeros((500,500))
|
||||||
|
|
||||||
|
blacklist = set()
|
||||||
|
for c1 in [(x,y) for x in range(500) for y in range(500)]:
|
||||||
|
distances = [distance(c1, c2) for c2 in coords]
|
||||||
|
min_dist = min(distances)
|
||||||
|
if distances.count(min_dist) == 1:
|
||||||
|
cell = min(enumerate(distances), key=lambda x: x[1])[0]
|
||||||
|
field[c1] = cell
|
||||||
|
x, y = c1
|
||||||
|
if x == 0 or y == 0 or x == 499 or y == 499:
|
||||||
|
blacklist.add(cell)
|
||||||
|
a = [(field == i).sum() for i in range(len(coords)) if i not in blacklist]
|
||||||
|
print(max(a)) # Part 1
|
||||||
|
|
||||||
|
#sumarea = 0
|
||||||
|
expensive_size = 400 # Needs to fit all coords
|
||||||
|
edge_extend_size = 10000 # Increase if necessary
|
||||||
|
region = np.zeros((edge_extend_size,edge_extend_size))
|
||||||
|
for c1 in [(x,y) for x in range(-expensive_size, expensive_size) for y in range(-expensive_size, expensive_size)]:
|
||||||
|
total_dist = sum([distance(c1, c2) for c2 in coords])
|
||||||
|
#if total_dist < 10000:
|
||||||
|
#sumarea += 1
|
||||||
|
region[c1] = total_dist
|
||||||
|
#print(sumarea)
|
||||||
|
|
||||||
|
total_inc = len(coords)
|
||||||
|
|
||||||
|
r = region.copy()
|
||||||
|
for i in range(expensive_size, edge_extend_size//2+1):
|
||||||
|
r[i,:] = r[i-1,:]+total_inc
|
||||||
|
for i in range(-expensive_size, -edge_extend_size//2, -1):
|
||||||
|
r[i,:] = r[i+1,:]+total_inc
|
||||||
|
for i in range(expensive_size, edge_extend_size//2+1):
|
||||||
|
r[:,i] = r[:,i-1]+total_inc
|
||||||
|
for i in range(-expensive_size, -edge_extend_size//2, -1):
|
||||||
|
r[:,i] = r[:,i+1]+total_inc
|
||||||
|
|
||||||
|
print((r < 10000).sum()) # Part 2
|
Loading…
Reference in New Issue