gpt4 book ai didi

python - 索引错误: tuple index out of range when comparing lists

转载 作者:行者123 更新时间:2023-12-01 09:26:19 26 4
gpt4 key购买 nike

我正在尝试将不正确的 3X3 幻方转换为正确的 3X3 幻方。这是我的代码:

from itertools import *
def ms():
magic_squares = [
[8,1,6],[3,5,7],[4,9,2],
[6,1,8],[7,5,3],[2,9,4],
[4,3,8],[9,5,1],[2,7,6],
[2,7,6],[9,5,1],[4,3,8],
[2,9,4],[7,5,3],[6,1,8],
[4,9,2],[3,5,7],[8,1,6],
[6,7,2],[1,5,9],[8,3,4],
[8,3,4],[1,5,9],[6,7,2]
]
for p in permutations(range(1,10)):
if all(sum(p[i] for i in r) == 15 for r in magic_squares):
yield list(p)
def closest_ms(m):
m = sum(m, [])
return min(ms(), key = (lambda x: sum(i != j for i,j in zip(m,x))))
s = []
smo = []
for s_i in range(3):
s_t = [int(s_temp) for s_temp in input().strip().split(' ')]
s.append(s_t)
important_var = closest_ms(s)
print(important_var)

正如你所看到的,由于有 8 个正确的 3X3 幻方,我尝试使用其中的 8 个通过可能的最小变化将不正确的幻方转换为正确的幻方(使用数字 1- 9).例如,我有一个像这样的幻方:

[[5,3,4],[1,5,8],[6,4,2]]

输出应该是这样的,只需进行最小的更改:

[[8,3,4],[1,5,9],[6,7,2]]

但是我的代码给了我这个错误:IndexError: tuple index out of range in line 14

我怎样才能克服这个错误并使我的代码按预期工作?

最佳答案

我没有考虑你的算法,但我可以看到问题出在这里:

all(sum(p[i] for i in r) == 15 for r in magic_squares)

每个 r 是一个包含数字 1-9 的 3 元素列表。所以i的可能取值范围是1-9。但 p 是数字 1-9 的排列,因此 p 是包含 9 个元素的元组。 p的指数范围为0-8。

关于python - 索引错误: tuple index out of range when comparing lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com