簡體   English   中英

國際象棋運動,用完 memory python 循環

[英]Chess movement, running out of memory python loops

我的任務是計算從 (0,0) 開始時騎士可以采取的所有潛在位置。 我是初學者,所以我的代碼很笨拙,但它似乎適用於較小的迭代集。 一旦我深入 8-9 步,我就會用完 memory。

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)  

非常感謝任何幫助或提示,謝謝。

clean中,還刪除重復的位置。 如果您將坐標轉換為使用tuple s 而不是list s,則可以使用set來跟蹤您以前見過的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM