Solve day 9 till 11 and part 1 day 12 2018
This commit is contained in:
54
2018/d10.py
Normal file
54
2018/d10.py
Normal file
@@ -0,0 +1,54 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user