advent2022/eleven.py

29 lines
679 B
Python
Raw Normal View History

2022-12-11 23:36:55 +02:00
#!/usr/bin/env python3
from useful import *
def monkey(p):
ls = p.strip().split('\n')
op = ls[2].strip().split()[4]
2022-12-11 23:40:38 +02:00
return [op, *[numbers(l) for l in ls[1:3]], *[numbers(l)[0] for l in ls[3:]]]
2022-12-11 23:36:55 +02:00
2022-12-11 23:40:38 +02:00
ms = [monkey(p) for p in pgphs(open(0).read())]
ic(ms)
2022-12-11 23:58:02 +02:00
def op(base, leop, vals):
if not vals: # happens once in our input; is 'old * old'
return base * base
return base * vals[0] if leop == '*' else base + vals[0]
def rnd():
for m in ms:
a = m[1]
for i in a:
i = op(i, m[0], m[2]) // 3
ms[m[4 if not (i % m[3]) else 5]][1].append(i)
#ic(ms)
m[1] = []
for i in range(20):
rnd()
ic(ms)