| @@ -0,0 +1,22 @@ | |||
| from collections import deque | |||
| def run(src, cycles=1, factor=1): | |||
| els = deque([(i, int(n) * factor) for i, n in enumerate(src)]) | |||
| zero, = [el for el in els if el[1] == 0] | |||
| order = list(els) | |||
| for _ in range(cycles): | |||
| for el in order: | |||
| idx = els.index(el) | |||
| els.rotate(-idx) | |||
| els.popleft() | |||
| els.rotate(-el[1]) | |||
| els.appendleft(el) | |||
| idx = els.index(zero) | |||
| els.rotate(-idx) | |||
| return sum(els[n % len(els)][1] for n in [1000, 2000, 3000]) | |||
| els = open(0).read().splitlines() | |||
| print(run(els)) | |||
| print(run(els, cycles=10, factor=811589153)) | |||