在2048裏能夠得到的最大的數是多少?

原文:http://www.matrix67.com/blog/archives/5941#more-5941

Michael Brand 在 Using your Head is Permitted 趣題站 2014 年 4 月的謎題中提出了一個這樣的問題:在最近非常流行的小遊戲 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 。前者的二進制表達爲 11 1111 1111 1111 1110 ,這裏面有 17 個數字 1 ,超過了棋盤裏總的格子數,因而顯然是不可能的。後者的二進制表達是 11 1111 1111 1111 1100 ,這裏面有 16 個數字 1 ,正好是棋盤裏總的格子數。這說明,此時棋盤剛好被填滿, 22, 23, 24, …, 217 這 16 種不同的數塊各有一個。這意味着棋盤裏不但沒有空白的格子,也沒有相同種類的數塊可以合併,此時玩家直接就死掉了!因而,我們是沒有辦法得到 218的。

因此, 217 = 131072 成爲了 2048 這個遊戲中數塊大小的一個理論上限。但是,我們真的能弄出 131072 嗎?看上去,我們好像只需要構造出下圖所示的局面就行了,但這個局面本身能否實現,還有待進一步討論。 Michael Brand 猜測,理論上 131072 也是無法得到的,但他不能證明這一點。我雖然在網上看見過很多網友宣稱自己打出過 131072 ,甚至有的網友發出了最後幾步的視頻(比如這裏),但由於我從來沒有看到過完整的演示過程,因而也持懷疑態度。期待萬能的網友們能夠提供一種簡潔有效的構造解,來說明當運氣足夠好的情況下,我們有辦法打出 131072 ;或者找到一個更好的證明方法,足以說明 131072 也是理論上不可能實現的。

最後補充一句: 2048 的遊戲概念來源於另一款叫做 Threes! 的遊戲。如果你喜歡 2048 的話,建議你去購買 Threes! ,它無疑比 2048 更加精緻,更加有趣。我的 iPad 上只裝了一個遊戲,就是 Threes! 。

發佈了110 篇原創文章 · 獲贊 79 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章