day 20 python solution

这个提交包含在:
magical 2022-12-19 21:34:48 -08:00
父节点 47c10a1027
当前提交 009fa446c2
共有 2 个文件被更改,包括 5046 次插入0 次删除

5000
day20/input 普通文件

文件差异内容过多而无法显示 加载差异

46
day20/sol.py 普通文件
查看文件

@ -0,0 +1,46 @@
data = []
for line in open("input"):
data.append(int(line.strip()))
#data = [1, 2, -3, 3, -2, 0, 4, ]
def mix(data, rounds=1):
#assert len(set(data)) == len(data)
copy = list(data)
idx = list(range(len(data)))
for _ in range(rounds):
for k in range(len(data)):
i = idx.index(k)
x = copy[i]
if x != 0:
j = (i+x) % (len(copy)-1)
if x < 0 and j == 0:
j = len(copy)-1
copy.insert(j, copy.pop(i))
idx.insert(j, idx.pop(i))
else:
j = i
#print(x, i, j, copy)
return copy
def answer(data):
i = data.index(0)
n = 0
for j in 1000, 2000, 3000:
x = data[(i+j)%len(copy)]
#print(x)
n += x
return n
#print(copy)
copy = mix(data)
print(answer(copy))
p2 = [x*811589153 for x in data]
print(answer(mix(p2, 10)))