30 lines
573 B
Python
30 lines
573 B
Python
import re
|
|
|
|
|
|
def solve(data):
|
|
M = [
|
|
tuple(map(int, re.search(r"(\d+) pos.+ion (\d+)", r).groups()))
|
|
for r in data.splitlines()
|
|
]
|
|
p1 = wait_and_press(M)
|
|
p2 = wait_and_press(M + [(11, 0)])
|
|
return p1, p2
|
|
|
|
|
|
def wait_and_press(M):
|
|
t = 0
|
|
while True:
|
|
if all((ti + lp[1]) % lp[0] == 0 for ti, lp in enumerate(M, start=t + 1)):
|
|
break
|
|
t += 1
|
|
return t
|
|
|
|
|
|
if __name__ == "__main__":
|
|
with open("./input/15.txt", "r") as f:
|
|
inp = f.read().strip()
|
|
|
|
p1, p2 = solve(inp)
|
|
|
|
print(p1)
|
|
print(p2)
|