技術帝:俄羅斯方塊可以永遠的玩下去嗎?
- 來源:3DM-迪奧死神
- 作者:迪奧死神
- 編輯:ChunTian
我們首先要證明一個引理:在循環(huán)中的任意時刻,通道n的實際循環(huán)區(qū)內絕對不可能出現(xiàn)形如“口■”的兩個并排的格子。如圖4.1,假設圖中星號方塊所在行是通道n的實際循環(huán)區(qū)內位置最低的“口■”的結構。假如這一行被消掉了,又由歸納假設,不存在哪個“S”形方塊跨越了該通道的左邊界,因此只有一種可能:某個“S”形方塊從左側面擠了進來(如圖4.2)。但這樣一來,我們又產生了一個更低的“口■”,矛盾。這就是說,星號方塊所在行一直沒被消去。但這也是不可能的,因為實際循環(huán)區(qū)內是一個新陳代謝、以舊換新的更替過程,每一行最后都是會被消除的。
接下來,考慮命題P(n+1)。要想讓“S”形方塊占據通道n的格子,只有圖5這四種情況。但是,由于我們之前證明了通道n中不能存在“口■”,因此在這個“S”形方塊落下之前,星號方塊都是已經有了的了。注意到,每一個“S”形方塊的下落都致使“■口”形結構的減少,但第一種情形除外——它消除了一個“■口”形結構,但在其上方帶來了一個新的,使得“■口”形結構個數(shù)保持不變。沒有哪種情形能夠增加“■口”的個數(shù)。但是,通道n的“■口”形結構個數(shù)應該是恒定的,因為它在一個循環(huán)區(qū)里。因此,只有第一種情況才能夠被接受。
因此,僅含有“S”形方塊的循環(huán)只有一種情況——“S”形方塊在各個通道內重疊,填滿并消除若干行后回到初始狀態(tài)。實際循環(huán)區(qū)內的每個通道都是一個模樣:底下是0個或多個“■■”,頂部一個“■口”。注意,最右側那個通道的最頂端是一個“■口”,右邊這個空白一輩子也不可能用“Z”形方塊填上。也就是說,在一個只含“S”形方塊的循環(huán)區(qū)內,必然會有某一行,它的最右側是一個“■口”,它保證了該行不能僅用“Z”形方塊消掉。如圖6所示,箭頭所指的行無法單用“Z”形方塊消除,因為星號位置不可能用“Z”形方塊填充。
下面我們給出游戲機害死人的算法:
1. 不斷給出“S”形方塊并顯示下一個方塊也為“S”,直到出現(xiàn)一個循環(huán);
2. 給一個“S”形方塊并顯示下一個方塊為“Z”;
3. 不斷給出“Z”形方塊并顯示下一個方塊也為“Z”,直到出現(xiàn)一個循環(huán);
4. 給一個“Z”形方塊并顯示下一個方塊為“S”;
5. 跳回1并重復執(zhí)行。
這樣的話,玩家為什么會無解呢?由上面的結論,在第1步后,游戲區(qū)域中出現(xiàn)了一個不能用“Z”消除的行。即使再給你一個“S”形方塊,這一點仍然無法挽救,因為填充星號空格的唯一途徑就是插一個“S”進去,但這立即又產生了一個“Z”永遠放不進去的空位。然后,玩家就拿到了一大堆“Z”,最終必然會產生另一個循環(huán),且這個循環(huán)區(qū)在剛才那個無法消去的行之上(循環(huán)區(qū)不可能包含一個不能消除的行,因為正如前面所說,一個實際循環(huán)區(qū)的所有行最終都是會被消掉的,這樣才可能循環(huán))。這個循環(huán)區(qū)的最左邊那個通道將會產生一個“口■”結構,是“S”所不能消去的。于是,游戲機又給出一大堆的“S”,最終使得兩種無法消去的行交替出現(xiàn),直至Game Over。
有兩點值得注意。一、雖然我們這里假設游戲機是有主觀能動性的,但事實上呢,即使方塊是隨機出的,如果你足夠倒霉的話,這個特殊的方塊序列可能恰好就讓你一個不錯地碰上了;雖然這種怪事的發(fā)生概率極低,但理論上說仍然是可能的,因此俄羅斯方塊終究不是玩不死的,總有一個時候會Game Over。二、這個結論可以直接擴展到場地為任意寬度的俄羅斯方塊游戲。當場地寬為偶數(shù)時,上述證明同樣有效;當場地寬為奇數(shù)時,無窮多個方形方塊就可以直接干掉玩家。

玩家點評 (0人參與,0條評論)
熱門評論
全部評論