赞
踩
《2048》是一款热门的数字游戏。游戏中,每个方块上的数字都有2的幂,数字方块会根据指令整体进行上下左右移动,如果两个数字相同的方块在移动中碰撞,他们就会合成一个新的方块。例如下图为4*4格子的游戏,0表示格子为空,图a为移动前格子中的数字,图b为图a左移后的结果:
例如:
输入
0 0 2 4
0 2 2 2
0 4 2 2
8 8 2 2
输出
2 4 0 0
4 2 0 0
4 4 0 0
16 4 0 0
从左到右遍历,如果a[i][j] == a[i][j+1]
则让 a[i][j] += a[i][j]
同时清除 a[i][j+1] = 0
最后删掉数组中的0元素
重新用一个空矩阵,把a的值挨个复制进去
n = 4 a = [[0,0,2,4],[0,2,2,2],[0,4,2,2],[8,8,2,2]] for i in range(len(a)): for j in range(len(a[0])-1): if a[i][j] == a[i][j+1]: a[i][j] += a[i][j] a[i][j+1] = 0 print(a) for i in range(len(a)): while 0 in a[i]: a[i].remove(0) print(a) ans = [[0]*n for _ in range(n)] for i in range(len(a)): for j in range(len(a[i])): ans[i][j] = a[i][j] print(ans)
输出结果:
[[0, 0, 2, 4], [0, 4, 0, 2], [0, 4, 4, 0], [16, 0, 4, 0]]
[[2, 4], [4, 2], [4, 4], [16, 4]]
[[2, 4, 0, 0], [4, 2, 0, 0], [4, 4, 0, 0], [16, 4, 0, 0]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。