Quick actions

cmd+k|ctrl+k

Navigation

Languages

aoc2017-day15-2

Snippet info

Language

Python

Visibility

public

Author

christophe.guillon.perso

Created

2017-12-15T07:03:58Z

Updated

2017-12-18T11:43:23Z

from functools import reduce

def generate(current, factor, rem, scale=1):
    while True:
        current = (current * factor) % rem
        if current % scale == 0: yield current

gen = (1 if (x & 0xFFFF) == (y & 0xFFFF) else 0 for x,y in
       zip(generate(618,16807,2**31-1,4),
           generate(814,48271,2**31-1,8)))
s = reduce(lambda x,y: x+y,(next(gen) for _ in range(5000000)))
print(s)
INFO