aoc2022/d11/sample2.py

31 lines
682 B
Python
Raw Permalink Normal View History

2022-12-11 13:04:43 +00:00
from collections import deque
PRIMES = (23,19,13,17)
def mods(x):
return [x%i for i in PRIMES]
M = [
[
deque(mods(x) for x in [ 79, 98 ])
, lambda old: [((o%i)*(19%i))%i for (o,i) in zip(old,PRIMES)]
, lambda x: 3 if x[0] else 2
,0
],[
deque(mods(x) for x in [ 54, 65, 75, 74 ])
, lambda old: [((o%i)+(6%i))%i for (o,i) in zip(old,PRIMES)]
, lambda x: 0 if x[1] else 2
,0
],[
deque(mods(x) for x in [ 79, 60, 97 ])
, lambda old: [((o%i)*(o%i))%i for (o,i) in zip(old,PRIMES)]
, lambda x: 3 if x[2] else 1
,0
],[
deque(mods(x) for x in [ 74 ])
, lambda old: [((o%i)+(3%i))%i for (o,i) in zip(old,PRIMES)]
, lambda x: 1 if x[3] else 0
,0
]
]