day 8, generators are faster (2x)
This commit is contained in:
22
d08/run.py
Normal file
22
d08/run.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import sys
|
||||||
|
from itertools import cycle
|
||||||
|
from math import lcm
|
||||||
|
|
||||||
|
I, _, *P = [l for l in sys.stdin.read().splitlines()]
|
||||||
|
# 0000000000111111111
|
||||||
|
# 0123456789012345678
|
||||||
|
# BCN = (HFN, KFC)
|
||||||
|
P = {l[0:3]:(l[7:10],l[12:15]) for l in P}
|
||||||
|
|
||||||
|
def countsteps(g):
|
||||||
|
C = g
|
||||||
|
N = 0
|
||||||
|
for i in cycle(I):
|
||||||
|
if C[2] == 'Z':
|
||||||
|
break
|
||||||
|
C = P[C][i == 'R']
|
||||||
|
N += 1
|
||||||
|
return N
|
||||||
|
|
||||||
|
print("part 1:", countsteps("AAA"))
|
||||||
|
print("part 2:", lcm(*(countsteps(p) for p in P.keys() if p[2] == 'A')))
|
Reference in New Issue
Block a user