這周,給大家分享一個有趣的幾何問題:)
在俄羅斯方塊中,一共有 5 種不同的形狀。這 5 種形狀,都是由 4 個小方格組成的。如下所示:
在真正的俄羅斯方塊遊戲中,其實一共有 7 種形狀。這是因為上圖的形狀 B 和形狀 D 不是對稱的。所以,對這兩種形狀做鏡面反射,可以得到另外兩個形狀,這兩個形狀,在我們今天的問題中不討論。
值得一提的是,這些形狀,在英文中,被稱為 Tetromino。其中, tetra- 這個前綴,就表示「四」的意思。我們變換這個詞根,可以得到一系列不同的英文單詞。
比如,只由一個小方格組成的形狀,就叫做 Monomino。
mono- 前綴,表示單獨的,也就是「一」。比如「獨裁者」,就是 monarch;比如「獨白」,就是 monologue;比如「壟斷」,就是 monopoly;比如「一夫一妻制」,就是 monogamy;比如我們數學中學的單調函數,「單調的」,就是 monotonous;等等等等。
Monomino 的形狀只有孤零零的一種:
如果由兩個小方格組成,就是 Domino,也就是大名鼎鼎的多米諾。相信大家都見過高手玩兒多米諾骨牌的超酷視頻。
其中,du- 這個前綴,就是表示「二」,比如「兩個人決鬥」,就是 duel;比如「二重唱」,就是 duet;比如「兩倍」,就是 double;等等等等。
因為對稱性,Domino 的形狀也只有孤零零的一種:
如果由三個小方格組成,就是 Triomino。其中,tri- 這個前綴,就表示「三」。比如「三角形」,就是 triangle。
Triomino 一共有兩種。由於形狀的不同,被稱為 Straight Triomino 和 Bent Triomino,非常好理解。
而由四個小方格組成,就是上面所說的 Tetromino,也就是俄羅斯方塊遊戲中的形狀。值得一提的是,俄羅斯方塊這個遊戲,官方的英文名字就是 Tetris,詞根也是 tetra-。其實,這個名字和「俄羅斯」沒有什麼關係:)
由五個小方格組成,就是 Pentomino。其中,pent- 這個前綴,就是「五」的意思。比如大名鼎鼎的五角大樓,就叫 The Pentagon。而 pentagon 本身,就是五邊形的意思。
由五個小方格組成的不同形狀,一共有 12 種,如下圖所示:
由 4 個格子組成的不同形狀有 5 種;由 5 個格子組成的不同形狀有 12 種。當我們使用更多的格子時,所能夠組成的不同形狀,將以幾何級數的速度上升。這本身也是一個很有意思的,經典的組合數學的問題,不過我們這篇文章不探討這個問題。
這篇文章,我們探討如下問題:
對於俄羅斯方塊的五種不同形狀,每種形狀使用了 4 個小格子。如果我們每種形狀都取一個,則一共有 20 個小格子。
用這 5 個形狀,能否填滿一個 5*4 的棋盤格?
注意,填滿的定義是:不能有格子是空的,也不能有格子同時被兩個形狀佔據(不能重疊)。
為了方便大家思考,我再把俄羅斯方塊的五種不同形狀擺上:
廣告過後,就是答案:)
解答:
可能計算機專業的同學,會嘗試使用程序,用窮舉法試驗一下。實際上,這個程序並不那麼好寫,但我還是建議計算機專業的同學嘗試一下,是一個很好的編程練習。
對於這個問題,正確答案是:不可能。
是的,這又是一個《沒有解的問題》。
如果同學們可以正確地實現這個程序,你的程序會告訴你沒有解。但是,要想理解為什麼這五種形狀不能填滿一個 5*4 的棋盤格,還有更加巧妙的思考,可以不藉助計算機,直接看出來。
這個思考本身,在問題中,我已經提示給大家了。就是「棋盤格」。
說起棋盤格,大家想到什麼?一定是西洋棋中,黑白相間的格子。這正是想明白這個問題的關鍵。
大家可以看到,一個 5*4 的棋盤格,可以被這樣劃分為 10 個黑格子;10 個白格子。
如果,我們將俄羅斯方塊中的五種形狀,也按照棋盤格的方式,用黑白相間的格子表示,就是這樣:
這裡,大家要注意,中間的形狀 C,也就是 T 形狀,同時佔據了三個黑色格子和一個白色格子。而其他所有形狀,都佔據了兩個黑格子和兩個白格子。因此,這五種形狀,佔據了 11 個黑格子和 9 個白格子。他們是不可能擺在一個有 10 個黑格子和 10 個白格子的 5*4 的棋盤格中的。
證畢。
怎麼樣,是不是很簡單?是不是很酷?
這本身是一個非常經典的,解決棋盤覆蓋問題的技巧,同時,在我看來,也是非常巧妙的一種思維轉換方式。我們從探討 5*4 的棋盤格整體,轉而去考察 10 個黑格子和 10 個白格子這樣的一個「局部」。
最後,給同學們留一個思考題:
這個問題本身,雖然背景依然是俄羅斯方塊,但和上面介紹的俄羅斯方塊覆蓋問題無關。但同樣,可以巧妙地通過思維的轉換,快速看出答案。
問題如下:
現在,你和 bobo 老師一起玩兒一個遊戲。這個遊戲是這樣的:
我們面對一個 5*4 的棋盤格,一共有五種形狀可供我們選擇,就是俄羅斯方塊中的五種形狀各一個。
你和 bobo 老師輪流,每次拿出一個形狀,擺在棋盤上。每個形狀只能使用一次。
如果誰最後無法把任何剩餘的形狀拼進棋盤格中,誰就輸了。依然是,格子之間不能重疊。
傲嬌的 bobo 老師讓你先行動。問:第一步,你要選怎樣的圖形,怎麼擺放,能保證自己肯定贏?
在這裡,給同學們四個選項:
看看大家能不能思考出答案?更關鍵的是,能不能解釋清楚,為什麼?
答案我會在下周揭曉。不過,根據我的經驗,一般,同學們在留言區,就能把正確答案分析出來了:)
對了,大家應該看出來了,這篇文章中大部分配圖,都是我手繪的。炫耀一下下
大家加油!
本文相關閱讀推薦:
沒有解的問題
神一樣的隨機算法
稀奇古怪面試題三則
1 + 2 + 3 + ⋯ + ∞ = -1/12?這不是一個愚人節玩笑。
《是不是很酷》雖然只是一個個人公眾號,但在用心做技術原創。每周至少一更。希望一起陪你,用技術人的眼光,觀察這個世界,探索這個世界。
如果喜歡我的文章,點個」在看「吧