Roderic Day 4 lat temu
rodzic
commit
a53718fc23
1 zmienionych plików z 38 dodań i 0 usunięć
  1. +38
    -0
      y2020/p23.py

+ 38
- 0
y2020/p23.py Wyświetl plik

@@ -0,0 +1,38 @@
import sys


def play(start, cycles):
lim = len(start)
cur = start[0]
ns = [None for _ in range(lim + 1)]

for a, b in zip(start, start[1:] + start[:1]):
ns[a] = b

for _ in range(cycles):
a = ns[cur]
b = ns[a]
c = ns[b]

dest = (cur - 1) or lim
while dest in (a, b, c):
dest = (dest - 1) or lim

ns[dest], ns[c], ns[cur] = a, ns[dest], ns[c]
cur = ns[cur]

return ns


text = sys.stdin.read().strip()
ns = [int(n) for n in text]

ordering = play(ns, 100)
sol = [1]
for _ in range(len(ordering) - 2):
sol.append(ordering[sol[-1]])
print(''.join(str(n) for n in sol[1:]))

ns.extend(n + 1 for n in range(len(ns), 1_000_000))
ordering = play(ns, 10_000_000)
print(ordering[1] * ordering[ordering[1]])

Ładowanie…
Anuluj
Zapisz