请帮忙翻译:
请问我对 Python
不是很熟悉,但一直觉得它很棒。直到我需要转置一个 4x4 矩阵并将其用于构建游戏演示的 2048 游戏时,才发现有些棘手。游戏演示链接在这里。我有以下这个函数:
def cover_left(matrix):
new=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
for i in range(4):
count=0
for j in range(4):
if mat[i][j]!=0:
new[i][count]=mat[i][j]
count+=1
return new
如果您以这种方式调用此函数,则该函数的作用如下
cover_left([
[1,0,2,0],
[3,0,4,0],
[5,0,6,0],
[0,7,0,8]
])
它将覆盖左侧的零并生成
[ [1, 2, 0, 0],
[3, 4, 0, 0],
[5, 6, 0, 0],
[7, 8, 0, 0]]
我需要有人帮我用numpy
的方式实现这个,我认为这种方式会更快并且需要更少的代码(我正在使用深度优先搜索算法),最重要的是实现cover_up
,cover_down
和cover_left
函数。
`cover_up`
[ [1, 7, 2, 8],
[3, 0, 4, 0],
[5, 0, 6, 0],
[0, 0, 0, 0]]
`cover_down`
[ [0, 0, 0, 0],
[1, 0, 2, 0],
[3, 0, 4, 0],
[5, 7, 6, 8]]
`cover_right`
[ [0, 0, 1, 2],
[0, 0, 3, 4],
[0, 0, 5, 6],
[0, 0, 7, 8]]