Roderic Day před 5 roky
rodič
revize
1f0f9398c2
1 změnil soubory, kde provedl 24 přidání a 0 odebrání
  1. +24
    -0
      y2019/p16.py

+ 24
- 0
y2019/p16.py Zobrazit soubor

@@ -0,0 +1,24 @@
import sys
from itertools import accumulate, cycle
from multiprocessing import Pool


def _next(ns, i):
g = cycle([n for n in [0, 1, 0, -1] for _ in range(i + 1)])
next(g) # throw away one
return abs(sum(a * b for a, b in zip(ns, g))) % 10


text = sys.stdin.read().strip()

ns = [int(n) for n in text]
with Pool() as pool:
for _ in range(100):
ns = pool.starmap(_next, [(ns, i) for i in range(len(ns))])
print(''.join(str(c) for c in ns[:8]))

offset = int(text[:7])
pending = [int(n) for n in (text * 10000)[offset:]][::-1]
for _ in range(100):
pending = [n % 10 for n in accumulate(pending)]
print(''.join(str(c) for c in pending[::-1][:8]))

Načítá se…
Zrušit
Uložit