国际象棋运动,内存不足 python 循环

hmm*_*bob 1 python loops chess

当从 (0,0) 开始时,我的任务是计算骑士可以采取的所有潜在位置。我是初学者,所以我的代码很笨拙,但它似乎适用于较小的迭代集。一旦我深入 8-9 步,我就会耗尽内存。

def moves(pos):
    re=[[]]
    for i in range(0,len(pos)):
        x,y=pos[i]
        a=[x+2,y+1]
        b=[x+2,y-1]
        c=[x-2,y+1]
        d=[x-2,y-1]
        e=[x+1,y+2]
        f=[x+1,y-2]
        g=[x-1,y+2]
        h=[x-1,y-2]
        re.append(a)
        re.append(b)
        re.append(c)
        re.append(d)
        re.append(e)
        re.append(f)
        re.append(g)
        re.append(h)
    del re[0]
    return re
def clean(a):
    cmoves=[]
    for i in range(0,len(a)):
        if a[i][0]>-1 and a[i][1]>-1 and a[i][0]<9 and a[i][1]<9 :
            cmoves.append(a[i])
    return cmoves 
def comb(a):
   return clean(moves(a))
pos= [[0,0]]  
a=comb(res)
steps_count=10
for step in range(steps_count):
    res=comb(res)  
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助或提示,谢谢。

orl*_*rlp 5

在 中clean,也删除重复的位置。set如果您将坐标转换为使用tuples 而不是lists ,则可以使用 a来跟踪您之前看到的位置。