[英]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.