其他

在2048里能够得到的最大的数是多少?

2017-06-27 Maths 52 52数学网

提示:点击上方"52数学网"↑ 快速关注!


在《2048》这款小游戏中,你能得到的最大的数是多少?


在这里,我们简单描述一下游戏的规则。游戏在一个4×4的棋盘上进行,棋盘里填有一个个的“数块”,每个数块上都写有某个形如2n的正整数。每一步,你需要从上、下、左、右四个方向中选取一个方向,按下对应的方向键之后,所有的数块都会“落”到这个方向;若有两个同种的数块在此过程中发生碰撞,则它们的值会相加起来,并合成一个新的数块。然后,系统会在棋盘中随机选择一个空白位置,并在此生出一个新的数块,上面写有数字2或者数字4(两种情况之比为9:1)。游戏开始时,棋盘上会自动生成三个随机的数块,你的目标就是通过有限步的操作,得出一个写有2048的数块。当然,即使得到了2048这个数块,游戏也不会自动结束,你还可以向更大的数发起挑战。


于是就有了我们刚才的问题:理论上,这个游戏当中能够得到的最大的数是多少?

 


可以证明,我们永远不可能在2048当中玩出218这个数字。


让我们把棋盘上的所有数全部加起来,并在累加过程中不断关注当前总和的二进制表达。如果棋盘里的数分别是2,4,16,64,16,2的话,累加结果的二进制表达依次为10→110→10110→1010110→1100110→1101000。


你会发现,由于棋盘上的每个数都是形如2n的正整数,因而把它加进总和之后,这个总和的二进制表达里最多只会多出一个数字1(如果发生了进位,数字1的个数可能会不变甚至减少)。这意味着,如果最终棋盘上的所有数之和的二进制表达当中一共有k个数字1,那就说明刚才至少有k个数在相加,换句话说棋盘里至少有k个数块。

容易看出,每走一步之后,棋盘上的所有数之和都会增加2或者4。如果最终棋盘上出现了一个218,就说明棋盘上的所有数之和至少是218,那么在此之前棋盘上的所有数之和一定经历过218- 2或者218- 4。前者的二进制表达为111111111111111110,这里面有17个数字1,超过了棋盘里总的格子数,因而显然是不可能的。后者的二进制表达是111111111111111100,这里面有16个数字1,正好是棋盘里总的格子数。


这说明,此时棋盘刚好被填满,222324,…217这16种不同的数块各有一个。这意味着棋盘里不但没有空白的格子,也没有相同种类的数块可以合并,此时玩家直接就死掉了!因而,我们是没有办法得到的218


因此,217=131072成为了2048这个游戏中数块大小的一个理论上限。








您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存