【发布时间】:2020-10-20 19:14:59
【问题描述】:
我需要一些帮助来创建 2 个函数 push_up 和 push_down(想想 2048 游戏),我已经设法创建了将值向左和向右推的函数,然后如果它们的值相等,则将它们加在一起。例如,[2,2,0,0] 将返回为 [4,0,0,0]。我有一个单独的函数来添加随机数。
我需要对 up 和 down 做同样的事情,但我不知道该怎么做。这是我的起始数组:
grid = [
[2, 2, 0, 2],
[0, 2, 0, 0],
[0, 2, 0, 4],
[4, 0, 4, 0]
]
这是我的功能:
def push_right(grid):
for row in grid:
for i, number in reversed(list(enumerate(row))):
if number == row[i-1]:
row[i] = number + row[i-1]
row[i-1] = 0
row.sort(key=lambda v: v != 0)
return grid
def push_left(grid):
for row in grid:
for i, number in reversed(list(enumerate(row))):
if number == row[i-1]:
row[i] = number + row[i-1]
row[i-1] = 0
row.sort(key=lambda v: v != 0, reverse=True)
return grid
print(push_right(grid))
print(push_left(grid))
哪些输出:
[
[0, 0, 4, 4],
[0, 0, 0, 2],
[0, 0, 2, 4],
[0, 0, 4, 4]
]
还有:
[
[8, 0, 0, 0],
[2, 0, 0, 0],
[2, 4, 0, 0],
[8, 0, 0, 0]]
我有一个可以在网格上打印出来的函数,但是我需要一些帮助来编写可以上下移动和合并的函数。例如对于数组:
[
[0, 0, 4, 4],
[0, 0, 0, 2],
[0, 0, 2, 4],
[0, 0, 4, 4]
]
向下是:
[
[0, 0, 0, 0],
[0, 0, 4, 4],
[0, 0, 2, 2],
[0, 0, 4, 8]
]
然后是:
[
[0, 0, 4, 4],
[0, 0, 2, 2],
[0, 0, 4, 8],
[0, 0, 0, 0]
]
任何帮助将不胜感激。 提前谢谢你。
【问题讨论】:
-
右推和左推是一样的吗?顺序对合并很重要。我知道您最终将其反转,但这并不能使合并正确?
-
我对编码还是很陌生,这可能是一个错误。我只是在看输出是什么。请给我一些关于如何修复它的建议。