作者 閱讀時間11分鐘

數字華容道怎麼解:3x3、4x4、5x5逐步教學

兩句話說完所有方形數字華容道的解法,再一步一步拆解3x3、4x4和5x5:疊對技巧、找出無解棋盤的奇偶性檢查,以及為什麼Klotski需要另一套思路。

要解開數字華容道,先完成最上面一列,再完成它下面一列,一直做到只剩兩列;這兩列從左到右一欄一欄完成,最後剩下的2×2小方塊,只要讓空格繞著它轉圈,就會自己歸位。你唯一需要的技巧,是用在每一列和每一欄的最後兩塊:它們要疊成一對一起放進去,而不是一塊一塊放。

整個方法就這樣,3×3、4×4和5×5都通用。下面會一步一步說清楚,也會講到判斷棋盤到底有沒有解的奇偶性檢查,以及Klotski和汽車逃脫謎題需要的另一套方法,因為這類謎題的棋子大小不一。想找個棋盤練手,來這裡玩一局:我們的免費Sliding Puzzle在瀏覽器就能玩,有3x3、4x4和5x5三種尺寸,每次洗牌都保證有解。

規則:一個空格,而一半的打亂方式無解

滑塊拼圖是一個方框,裡面擺滿有數字的方塊,只缺一格。任何緊鄰空格的方塊都能滑進去,目標是讓方塊從左到右、從上到下照順序排好,空格留在右下角。3×3版本叫8-puzzle,4×4叫15 puzzle(也就是最常見的數字華容道),5×5叫24 puzzle,名字來自裡面的方塊數量。

把方塊撬出來再隨手裝回去,你能排出的所有排列裡,剛好有一半永遠解不開。滑動永遠不會改變一個隱藏的量,叫作奇偶性,用一支鉛筆就能檢查。從左到右、從上到下讀出方塊上的數字,跳過空格,數一數有幾對是大數排在小數前面。每一對這樣的數字,就是一個逆序對。

  • 奇數寬度(3×3、5×5):逆序對的數量是偶數時,拼圖才有解,而且一定有解。
  • 偶數寬度(4×4):再加上空格所在的列數,列從上往下數,第1列到第4列。這個總數是偶數時,拼圖才有解,而且一定有解。(如果改成從下往上數,總數就要是奇數。同一條規則,只是倒過來看。)

來看一個3×3的例子。棋盤是1 3 _ / 4 2 5 / 7 8 6,空格在右上角。依序讀出來是1、3、4、2、5、7、8、6。逆序對有:3在2前面、4在2前面、7在6前面、8在6前面,一共四個,是偶數,所以有解。四步就能解開:3往右滑、2往上滑、5往左滑、6往上滑。現在換一個已經完成的棋盤,把7和8對調。這是一個逆序對,奇數,不管怎麼滑都修不好。

正是這個陷阱的4×4版本,讓15 puzzle一夕成名。1880年,它在美國掀起一股熱潮,謎題作家Sam Loyd後來聲稱自己曾提供1,000美元獎金,懸賞能把14和15對調過的已完成棋盤復原的人。一個逆序對,加上空格在第4列,總數是5:奇數,所以不可能。這筆獎金從來沒有被領走的風險。任何像樣的電子版拼圖,都是從已完成的棋盤出發、用合法移動來打亂的,所以你螢幕上那一局一定有解。被兄弟姊妹撬開過的實體拼圖,就很難說了。

3×3(8-puzzle)分四個階段解開

列從上往下編號,欄從左往右編號。「鎖住」的意思是:從此以後,空格再也不經過這些格子。

  1. 1號方塊歸位。讓空格繞一繞,把1帶到左上角。鎖住。
  2. 2號和3號疊成一對。把2放在右上角(那是3的位置,不是2自己的),3放在它正下方,也就是第2列第3欄。經由第2列把空格移到最上面一列的中間格,絕對不要穿過角落。先把2往左滑,再把3往上滑。第一列完成,鎖住。
  3. 4號和7號疊成一對,橫著放。把7放在4的位置(第2列第1欄),4緊貼在它右邊,也就是正中間。沿著最下面一列把空格移到左下角。先把7往下滑,再把4往左滑。左邊一欄完成,鎖住。
  4. 5、6、8號:轉圈。剩下的是一個2×2的小方塊,裡面有三塊方塊和一個空格。讓空格朝同一個方向繞著它轉,三塊方塊會跟著輪轉,直到歸位。方向對的話,最多不會超過六步;如果轉了一圈毫無進展,就換個方向。

為什麼要疊對:如果先把2放回原位,3要進角落的唯一路線就得穿過2的位置,所以放3就會把2擠出去。先疊好再轉,兩步就能讓兩塊同時歸位。大多數人都要把一塊一塊放的方法試好幾遍,才肯相信這件事。我們試的次數比大多數人都多。

4×4(15 puzzle):兩列、兩欄,最後轉圈

15 puzzle的思路跟上面一樣,只是多一個階段。先一列一列解第1列(1到4號)和第2列(5到8號),再一欄一欄解最下面兩列:先9和13,再10和14,最後在剩下的2×2裡把11、12和15轉回原位。每一列的前兩塊都很簡單,一塊一塊走回去就好。只有最後一對需要技巧。

一列的最後兩塊,一步一步來

下面以第1列為例,1號和2號已經歸位並鎖住。

  1. 先把4號移開。如果4在第1列或第2列,把它移到第3列或更下面。這樣它就不會在第2步時溜進錯的格子。
  2. 把3號放到右上角(第1列第4欄),那是4的位置,不是3的。
  3. 把4號帶到它正下方的格子(第2列第4欄),只移動第2到第4列的方塊,讓3留在角落。
  4. 把空格移到第2列第3欄,就在4號旁邊,一樣不碰第1列。然後把第1列第3欄的方塊往下滑進空格。現在空格就在3的位置,3在它右邊,4在3下面。
  5. 3往左滑,4往上滑。第1列完成,鎖住。

第2列也一樣:5和6一塊一塊放進去,然後把7放到第2列第4欄,8放在它下面的第3列第4欄,空格移到第2列第3欄,再用同樣的兩步:7往左,8往上。

小提示如果3已經在角落,4卻跑到3的位置上,你沒辦法靠轉圈脫身。別跟它硬拚:把3從角落移出來往下放,把4送到第3列,然後從第1步重新疊這一對。感覺像在倒退,但想原地修好,代價更大。

最下面兩列,一次解一欄

第1列和第2列鎖住之後,還剩兩列,每列四格:9、10、11、12在上,13、14、15和空格在下。這裡不能再一列一列解,因為沒有多出來的列可以暫放方塊,所以要改成一欄一欄往右推進,用的還是同一個疊對技巧,只是橫過來。

  1. 第1欄(9號和13號)。把13放在9的位置(第3列第1欄),9緊貼在它右邊(第3列第2欄)。沿著第4列把空格移到第4列第1欄。先把13往下滑,再把9往左滑。鎖住這一欄。
  2. 第2欄(10號和14號)。往右移一欄再做一次:14放在第3列第2欄,10放在第3列第3欄,空格移到第4列第2欄。14往下滑,10往左滑。鎖住。
  3. 最後的2×2(11、12和15號)。讓空格繞著這個小方塊轉,直到三塊全部歸位,跟3×3的做法完全一樣。只要洗牌是合法的,它們一定會歸位。

這個方法很可靠,但不算短。電腦搜尋最短路線時,任何一局15 puzzle都不會超過80步單格移動,而需要整整80步的局面只有17個。一列一列解要走的步數比這多,但你可以一路做下去不用停下來想,對人來說,這比步數重要得多。

5×5(24 puzzle)就是多一列一欄的4×4

每個更大的棋盤,都能剝成比它小一號的棋盤。在5×5上,先解第1列(1到5號,4和5疊成一對),再解它下面的左邊一欄(6、11、16和21號,16和21橫著疊成一對:21放在16的位置,16緊貼在它右邊,空格在下方,然後21往下滑、16往左滑)。兩者都鎖住後,剩下的就是由7到10號、12到15號、17到20號和22到24號組成的一個4×4。照上面的方法解它就好,只是要把這些數字當成位置來讀,而不是1到15。

你也可以一路一列一列解到第3列,再把最下面兩列一欄一欄解完;兩條路線最後都會落在同一個2×2轉圈。5×5大約有7.76×10²⁴種可達的排列,至今還沒有人確定其中最難的一種到底需要幾步。我們能找到最新的界限來自2016年,認為落在152到205步單格移動之間。

Klotski和汽車逃脫謎題需要另一套方法

一列一列解,只在所有棋子大小相同時才有用。Klotski以及它所屬的整個滑塊謎題家族,混合了不同形狀的棋子,而且根本沒有哪一列要完成,因為沒有一塊棋子有編了號的「家」。真正重要的只有一塊:你想讓它逃出去的那一塊。

Klotski的經典開局是一個4×5的盤子,裡面有十塊棋子:一個2×2的大方塊在上方正中間,下面橫躺著一個2×1的長塊,再下面是兩個1×1的小方塊,兩側各有兩個直立的1×2長塊,最底下各有一個1×1的小方塊。兩個空格靠在一起,位在底部正中間。目標是把2×2的大方塊移到底部正中間,再從框上的缺口出去。在中國,同一道謎題叫作華容道,大方塊就是正在逃命的曹操。幾塊木頭,戲份還真不少。

  1. 先規劃目標棋子的路線。在動任何東西之前,一格一格描出大方塊(或要逃出去的車)通往出口的路徑。
  2. 從出口往回推。看路徑上的下一步:哪裡必須空出來、哪塊棋子擋著、這塊棋子能移到哪裡。然後對擋著它的那塊棋子問同樣的問題。這條鏈才是真正的謎題。
  3. 在Klotski裡,讓兩個空格待在一起。直立的1×2長塊只能橫向移進兩個上下相疊的空格,橫躺的2×1長塊要上下移動則需要兩個並排的空格,大方塊永遠需要兩個空格。把空格拆開,就會困住一半的棋子。
  4. 用移動的棋子算步數,而不是用格數。在Klotski裡,一塊棋子滑到它能到的任何位置都算一步,照這個算法,經典開局至少需要81步。「把這一塊推到左邊牆」這種計畫,比一串單格移動更容易記在腦子裡。

汽車滑塊謎題,也就是Rush Hour家族,又多了一條規則:每輛車都鎖定在自己的車道上,所以橫停的車只能左右走。這讓往回推的鏈更好用,因為每輛擋路車最後能停的地方只有那幾個。一旦想通這點,接下來要練的就是減少步數,那是另一門功夫,請看停車解謎提速指南。

3x3、4x4、5x5和Klotski一覽

拼圖棋盤棋子空格數隨機排列中有解的比例最多需要的步數方法
8-puzzle3×38塊數字方塊1一半(181,440種局面)31先第一列,再左邊一欄,最後轉動2×2
15 puzzle4×415塊數字方塊1一半(10,461,394,944,000種局面)80先第1、2列,再一欄一欄,最後轉動2×2
24 puzzle5×524塊數字方塊1一半(約7.76×10²⁴種局面)尚無定論(152到205)剝掉一列一欄,再當成4×4來解
Klotski4×5四種尺寸共10塊2不是打亂類謎題;經典開局有解經典開局81步(移動一塊算一步)規劃大方塊的路線,往回推
Sliding Puzzle(我們的)3×3、4×4或5×5數字方塊或圖片1每次洗牌在你看到之前都經過有解檢查每種尺寸記錄你的最少步數和最快時間從上往下一列一列,再一欄一欄,最後轉動2×2
Car Parking(我們的)6×6鎖定在各自車道上的小車和廂型車依關卡而定每一關都經過求解器檢查每關的標準步數,也就是求解器算出的最少步數從出口往回推

讓棋盤解不開的常見錯誤

  • 把一列的最後兩塊一塊一塊放。第二塊一定會把第一塊擠出去。疊起來再轉。
  • 讓空格溜回已經完成的列。每回去一趟都會毀掉之前的成果。如果某條路線非得這樣走,就換一條。
  • 把最下面兩列當成列來解。根本沒地方暫放方塊。只剩兩列時,改成一欄一欄解。
  • 把最後的2×2當成三塊各自獨立的方塊。它就是一次轉圈。轉下去,如果第一圈毫無變化,就換個方向。
  • 算錯奇偶性。不要把空格算成方塊;在4×4上,別忘了加上空格所在的列數。
  • 在Klotski裡把兩個空格拆開。較大的棋子需要兩個並排的空格才能動。

去哪裡線上玩數字華容道:先玩我們的免費15 puzzle,再玩Car Parking

練上面這套方法的棋盤,就是我們自己的Sliding Puzzle,在瀏覽器裡免費玩,免下載、免註冊。可以選3×3、4×4或5×5,數字方塊或搶案主題圖片都行,每次洗牌在你看到之前都會檢查奇偶性,所以你永遠不會碰上無解的那一半。復原次數不限,遊戲也會為每種尺寸記錄你的最少步數和最快時間。它的限制:這些紀錄存在你的瀏覽器裡,清除網站資料或用無痕視窗玩,紀錄就會消失。

Klotski和Rush Hour這一支,可以試試Car Parking:一個6×6的停車場、一輛被車陣團團圍住的金色小車,每輛車都鎖定在自己的車道上。一輛車換個地方停好就算一步,不管它滑了多遠;240關的每一關都會顯示標準步數,那是我們的求解器找到的最短解法,每關還有三次提示。它練的是從出口往回推,而不是一列一列還原。Getaway Garage每滑一下就讓所有車輛一起動,並消除三輛一組的同色車,又是另一種謎題;如果你想聽背後的故事,我們的塞車解謎簡史就是從15 puzzle熱潮講起。

判斷規則很簡單。如果所有棋子大小相同,就從上往下完成每一列,剩兩列時改成一欄一欄,最後轉動那個小方塊。如果棋子大小不一,就挑出那塊必須逃出去的棋子,從出口往回規劃。第一種去4×4 Sliding Puzzle試,第二種去Car Parking試,兩個都能在瀏覽器裡免費玩。

常見問題

4x4數字華容道怎麼解?

先解最上面一列,再解第二列,已經完成的列絕對不再動。每列的最後兩塊:把第三塊放進角落,第四塊放在它正下方,把空格移到角落旁邊,然後把第三塊往左滑、第四塊往上滑。最下面兩列從左到右一欄一欄解,用的是同一個技巧,只是橫過來;最後讓空格繞著剩下的2×2轉,直到11、12和15歸位。

數字華容道(滑塊拼圖)怎麼解?

從上往下一列一列解,直到只剩兩列,然後從左到右一欄一欄解,最後轉動剩下的2×2小方塊。每一列或每一欄的最後兩塊要疊成一對一起放,而不是一塊一塊放。同樣的方法適用於3×3、4×4和5×5的棋盤。

每個數字華容道都有解嗎?

不是。所有隨機排列中,剛好有一半無解。數一數逆序對,也就是照順序讀方塊時,大數排在小數前面的數對。在3×3或5×5上,逆序對數量是偶數時有解。在4×4上,再加上空格所在的列數(從上往下數,1到4);總數是偶數時有解。從已完成狀態出發、用滑動打亂的拼圖,永遠有解。

解數字華容道最快的方法是什麼?

對人來說,是一列一列還原再加上疊對技巧:它不是最短的路線,但不需要停下來想。某個棋盤的最短解法要靠電腦搜尋才找得到,這種搜尋太慢,人腦根本做不來。

15 puzzle要幾步才能解開?

任何有解的15 puzzle都能在80步單格移動以內解開,而需要整整80步的局面只有17個。如果一次滑動一整排方塊算一步,最多是43步。3×3的8-puzzle從來不需要超過31步單格移動。一列一列還原比最佳解多走不少步,但照著做容易得多。

Klotski是什麼謎題?

Klotski是一種滑塊謎題,棋盤是4×5,有四種尺寸的十塊棋子和兩個空格。在經典開局中,一個2×2的大方塊位在上方正中間,目標是把它滑到底部正中間,再移出框外。經典開局至少需要81步,每塊棋子滑到新位置算一步。

汽車滑塊謎題怎麼解?

從出口開始往回推。找出擋住要逃出去那輛車的車,想清楚它得移到哪裡,再找出擋住那個位置的車,以此類推,直到找到一輛能動的車。每輛車只能沿著自己的車道移動,所以它能停的地方並不多。你可以在我們的免費網頁遊戲Car Parking裡練習,每一關都有經過求解器檢查的標準步數。

哪裡可以線上玩數字華容道?

我們的免費Sliding Puzzle能在任何現代瀏覽器上執行,免下載、免註冊。它提供3×3、4×4(也就是15 puzzle)和5×5三種棋盤,可以選數字方塊或圖片,每次洗牌都有解,還會在那個瀏覽器裡為每種尺寸記錄你的最少步數和最快時間。

讀完了,實際玩玩看

Match Heist是經營這個部落格的工作室出品的3D汽車三消解謎遊戲,iOS和Android免費下載。

在App Store下載Match Heist在Google Play取得Match Heist