2048 gam的合并左函数

2024-04-26 10:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在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}$

请帮忙。谢谢您!在


Tags: storeinhelperforlenreturnifdef