瀏覽代碼

2020/23

master
Roderic Day 4 年之前
父節點
當前提交
a53718fc23
共有 1 個文件被更改,包括 38 次插入0 次删除
  1. +38
    -0
      y2020/p23.py

+ 38
- 0
y2020/p23.py 查看文件

@@ -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]])

Loading…
取消
儲存