小米机试 2048

小米机试 2048

题目说明

《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的值挨个复制进去

python代码

python 复制代码
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)

输出结果:

python 复制代码
[[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]]
相关推荐
PXM的算法星球1 小时前
【leetcode】3524 求出数组的X值1
算法·leetcode·职场和发展
椰羊~王小美4 小时前
LeetCode -- Flora -- edit 2025-04-27
算法·leetcode·职场和发展
缘友一世5 小时前
从线性回归到逻辑回归
算法·逻辑回归·线性回归
前端_学习之路6 小时前
javaScript--数据结构和算法
javascript·数据结构·算法
weixin_428498496 小时前
使用HYPRE库并行装配IJ稀疏矩阵指南: 矩阵预分配和重复利用
算法·矩阵
雾削木8 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
__lost8 小时前
小球在摆线上下落的物理过程MATLAB代码
开发语言·算法·matlab
mit6.82410 小时前
[Lc_week] 447 | 155 | Q1 | hash | pair {}调用
算法·leetcode·哈希算法·散列表
jerry60911 小时前
优先队列、堆笔记(算法第四版)
java·笔记·算法
勤劳的牛马11 小时前
📚 小白学算法 | 每日一题 | 算法实战:加1!
算法