小米机试 2048

打印 上一主题 下一主题

主题 622|帖子 622|积分 1866

题目阐明

《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[j] == a[j+1]
则让 a[j] += a[j]
同时扫除 a[j+1] = 0
最后删掉数组中的0元素
重新用一个空矩阵,把a的值挨个复制进去
python代码

  1. n = 4
  2. a = [[0,0,2,4],[0,2,2,2],[0,4,2,2],[8,8,2,2]]
  3. for i in range(len(a)):
  4.     for j in range(len(a[0])-1):
  5.         if a[i][j] == a[i][j+1]:
  6.             a[i][j] += a[i][j]
  7.             a[i][j+1] = 0
  8. print(a)
  9. for i in range(len(a)):
  10.     while 0 in a[i]:
  11.         a[i].remove(0)
  12. print(a)
  13. ans = [[0]*n  for _ in range(n)]
  14. for i in range(len(a)):
  15.     for j in range(len(a[i])):
  16.         ans[i][j] = a[i][j]
  17. print(ans)
复制代码
输出效果:
  1. [[0, 0, 2, 4], [0, 4, 0, 2], [0, 4, 4, 0], [16, 0, 4, 0]]
  2. [[2, 4], [4, 2], [4, 4], [16, 4]]
  3. [[2, 4, 0, 0], [4, 2, 0, 0], [4, 4, 0, 0], [16, 4, 0, 0]]
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表