我想在2048游戏中定义一个merge_left
函数,这就是我想到的:
def merge_left(mat):
score=0
def helper(row,a):
if not row:
return a
x=row[0]
if len(row)==1:
return helper(row[1:],a+[x])
return helper(row[2:], a + [2*x]) if x == row[1] else helper(row[1:], a + [x])
store=[]
for row in mat:
merged = helper([x for x in row if x != 0], [])
merged = merged + [0]*(len(row)-len(merged))
store.append(merged)
score+=accumulate(lambda x,y:x+y,0,merged)
def is_true(store):
if store==mat:
return False
else:
return True
return (store,is_true(store),score)
但是,对于score
,我只需要所有新形成的图块的值的和,而不是所有数字的总和。我怎样才能过滤掉它们,这样我就只把新形成的瓷砖加起来呢?
在这种情况下,我应该使用迭代而不是递归吗?在
示例:
^{pr2}$请帮忙。谢谢您!在
目前没有回答
相关问题 更多 >
编程相关推荐