Files
aocpy/2018/d10.py

55 lines
1.1 KiB
Python

from lib import str_to_ints
def print_points(objs):
x_min, x_max = 10**9, 0
y_min, y_max = 10**9, 0
exist = set()
for x, y, _, _ in objs:
x_min = min(x_min, x)
y_min = min(y_min, y)
x_max = max(x_max, x)
y_max = max(y_max, y)
exist.add((x, y))
if x_max - x_min > 67:
return False
for y in range(y_min, y_max + 1):
s = ""
for x in range(x_min, x_max + 1):
if (x, y) in exist:
s += "X"
else:
s += " "
print(s)
return True
def part_1(data):
objs = []
for line in data.splitlines():
x, y, dx, dy = str_to_ints(line)
objs.append((x,y, dx, dy))
for t in range(1_000_000):
for i in range(len(objs)):
x, y, dx, dy = objs[i]
on = (x + dx, y + dy, dx, dy)
objs[i] = on
if print_points(objs):
print(t + 1)
break
def main():
input_file = __file__.replace(".py", ".txt")
with open(input_file) as f:
data = f.read()
part_1(data)
if __name__ == "__main__":
main()