day 8, somewhat easy
part 1 realy easy part 2 made with a trick, got from reddit megathread else naive approach would have taken 40 day of computation
This commit is contained in:
parent
baabb6cd88
commit
492af0c576
|
@ -0,0 +1,24 @@
|
|||
import sys
|
||||
from itertools import cycle
|
||||
|
||||
L = [l for l in sys.stdin.read().splitlines()]
|
||||
|
||||
I = L[0] # instructions
|
||||
|
||||
for l in L[2:]:
|
||||
print(f'%{l}%')
|
||||
|
||||
Q = [l.split(' = ') for l in L[2:] ]
|
||||
P = {k:v[1:-1].split(", ") for [k,v] in Q }
|
||||
|
||||
print(P)
|
||||
|
||||
C = 'AAA'
|
||||
N = 0
|
||||
for i in cycle(I):
|
||||
if C == 'ZZZ':
|
||||
break
|
||||
C = P[C][i == 'R']
|
||||
N += 1
|
||||
print(C)
|
||||
print(N)
|
|
@ -0,0 +1,22 @@
|
|||
import sys
|
||||
from itertools import cycle
|
||||
from math import lcm
|
||||
|
||||
I, _, *P = [l for l in sys.stdin.read().splitlines()]
|
||||
Q = [l.split(' = ') for l in P ]
|
||||
P = {k:v[1:-1].split(", ") for [k,v] in Q }
|
||||
|
||||
G = [p for p in P.keys() if p[2] == 'A' ]
|
||||
R = []
|
||||
for n,g in enumerate(G):
|
||||
print(n+1, g, '', end='')
|
||||
C = g
|
||||
N = 0
|
||||
for i in cycle(I):
|
||||
if C[2] == 'Z':
|
||||
break
|
||||
C = P[C][i == 'R']
|
||||
N += 1
|
||||
print(N)
|
||||
R.append(N)
|
||||
print('steps: sum:', sum(R), 'lcm:', lcm(*R))
|
Loading…
Reference in New Issue