色彩洪水遊戲是一種棋盤遊戲,玩家從一個角落開始向外重新著色一個區域,吸收相鄰的同色方格,直到所有格子都變成同一種顏色。瀏覽器遊戲 Flood It 採用了這個概念並將其固定下來:一個固定的 5 乘 5 四色棋盤、一條確定性的擴展規則,以及一個已由廣度優先搜尋獨立證實的八步最少步數下限。遊戲沒有隨機關卡,而是提供一個特定的固定盤面、三組經過驗證的獲勝序列,以及在步數限制內完成棋盤即可獲得的精確 1,000 分。初始區域只有左上角那一格,顏色為藍色,每一個合法的重新著色選擇要不是讓區域擴大,就是白白浪費一步,因此這個謎題讀起來像是在一個小型狀態圖上進行乾淨的搜尋,而不是一場猜謎遊戲。理解規則與八步的上限,正是區分一場乾淨的 1,000 分通關與卡死局面的關鍵。

color flood puzzle
color flood puzzle

Flood It 如何將色彩洪水遊戲轉化為經過稽核的固定盤面

色彩洪水遊戲要求玩家重複選擇一個顏色,把與起始格子相連的區塊重新著色,藉此改變一個有顏色的格子網格。大多數手機版與瀏覽器版本每次開始都會產生一個隨機棋盤,計算你花費的步數,並依效率或速度來計分。Flood It 則刻意去掉了隨機性。它內建一個公開的固定起始棋盤、四個標示好名稱的顏色(藍、珊瑚、金、青綠),以及一個與單一數值上限綁定的計分方式,而非以計時器為依據。

這個通用規則與兩份有完整文獻紀錄的參考資料一致。Arthur、Clifford、Jalsenius、Montanaro 和 Sach 合著的正式複雜度論文(arXiv:1001.4420)將一步定義為:選擇一個顏色,並改變與左上角格子相連的單色連通區塊。Simon Tatham 的 Flood 文件 則獨立描述了:選擇一個方塊顏色來對左上角區域進行洪水填色,並在步數限制內完成。這些來源定義了通用問題的規則,但並未提供 Flood It 專屬的固定盤面、配色、分數、操作方式或失敗處理策略,因此這款遊戲本身就是一個經過稽核的獨立作品,而不是別人關卡包的換皮。

解構固定的 5x5 棋盤

以下列出公開的、以列為主序(row-major)排列的起始棋盤。每個數字是一個顏色 ID,由左至右、由上至下讀取。

RowColor IDs (left to right)
Row 101231
Row 211320
Row 320231
Row 432102
Row 513023

介面把這些 ID 對應到四個有名稱的顏色,並在每個格子上標上字母:藍 (B)、珊瑚 (C)、金 (G)、青綠 (T)。25 個格子的分布如下,精確無誤:

  • 5 個藍色格子
  • 7 個珊瑚色格子
  • 7 個金色格子
  • 6 個青綠色格子

每一列都互不相同,沒有任何一列是另一列的複本,而這樣的佈局刻意混雜各種顏色,使得受控制的區域必須在棋盤上曲折前進,而不是以直線方式擴張。由於起始棋盤是固定的而非隨機產生,這個謎題的行為可以被精確稽核,而不必依賴任何未被記錄的隨機種子。重新開始永遠會還原成同一個排列,而受控制的區域會被外框標示出來,所以擴張過程不是只靠顏色在傳達資訊,這也讓不單靠色相感知來辨識顏色的玩家能夠清楚閱讀棋盤。

逐步說明如何遊玩 Flood It

規則簡單到可以寫在餐巾紙上,但搜尋空間卻很緊湊,每一步都很重要。請從一局全新的遊戲開始,依照以下步驟進行。

  1. 從外框標示的左上角格子開始,它的顏色是藍色,請從另外三種顏色(珊瑚、金、青綠)中挑選一個。與該格子相連的整個單色區域都會被重新著色成你選的顏色,而任何已經顯示該新顏色、且與之相鄰(上下左右)的格子都會併入你的區域。
  2. 繼續挑選顏色,每一步選一個,同時觀察外框標示的區域如何成長。只有水平與垂直方向的相鄰格子會被納入洪水擴張;在角落相接的兩格雖然看起來很近,但仍然是分開的。
  3. 使用棋盤下方四個大型顏色按鈕,或按 1 到 4 直接選擇藍、珊瑚、金或青綠,也可以用方向鍵移動游標,再按 Space 選定。
  4. 如果某個顏色證明是不好的選擇,按 Delete 或 Backspace 來復原上一步。復原會以原始棋盤為基準重新播放剩餘的顏色歷史,因此不會依賴任何隱藏的中間狀態快照。
  5. 重複以上步驟,直到全部 25 格形成一個連通的單色棋盤。選擇區域目前的顏色會被禁用,因為這不會改變棋盤,也不算是有意義的標準步數。
  6. 當棋盤看起來已經解開時,選擇 Check board 或按 Enter。若在第八步或之前完成檢查且棋盤為單色,即可獲得精確的 1,000 分;其他任何結果則依下述的兩次錯誤合約處理。

一個具體的轉換過程可以幫助理解規則。最初受控制的區域只有格子 0,顏色為藍色。選擇珊瑚色會把該格重新著色,並與其右方及下方的珊瑚色格子連接起來,接著再向外擴張到這些格子在水平與垂直方向相連的其他珊瑚色格子。受控制的索引變成 0、1、5 和 6。棋盤上其他位置的獨立珊瑚色格子則會被排除在區域之外,直到後續的擴張觸及它們。

三條經過驗證的八步獲勝路線

八步的上限並非憑空猜測。一個獨立的廣度優先搜尋把每一個完整的棋盤著色視為一種狀態,對目前左上角顏色以外的三種顏色分別套用規則,執行一個獨立撰寫的洪水擴張運算,且每一個不同的棋盤只拜訪一次。這個搜尋窮舉了 415 個可達成的棋盤狀態,在深度 0 到 7 之間都找不到已解開的棋盤。第一個單色棋盤出現在深度 8。

接著由第二個獨立的枚舉檢查每一個剛好八步的合法顏色序列,找出三組最短的獲勝序列。把數字 ID 對應回介面上的顏色名稱:

SequenceStep-by-step colorsLength
1-0-2-3-1-0-2-3Coral, Blue, Gold, Teal, Coral, Blue, Gold, Teal8
1-3-2-1-0-2-3-1Coral, Teal, Gold, Coral, Blue, Gold, Teal, Coral8
1-3-2-3-1-0-2-3Coral, Teal, Gold, Teal, Coral, Blue, Gold, Teal8

Flood It 接受全部三條經過驗證的路線,並不會把玩法鎖定在某一組死背的答案上。其他任何八步序列要不是無法讓棋盤全部填滿同色,就是會走到一個剩下的步數無法挽回的狀態,這正是廣度優先搜尋與序列枚舉所獨立證明的事情。

Check Board、兩次錯誤合約與 1,000 分

大多數色彩洪水遊戲介面在 Check board 這個動作上都很模糊。Flood It 採用的是清楚的兩次錯誤合約,而不是只有單一的過/不過瞬間:

  • 如果你在第八步之前就檢查,且棋盤尚未解開,這次嘗試會被回報為未完成,不會計入錯誤次數。提早檢查不會有任何損失。
  • 第一次在第八步或之後檢查,而棋盤仍未解開時,遊戲會記錄一次錯誤,但棋盤與 Undo 功能仍然保留。你可以透過復原一個或多個顏色並挑選更強的序列來挽救這局。
  • 第二次在第八步或之後檢查,且棋盤仍未解開時,這局就會完全卡死。顏色選擇、游標移動、復原與再次檢查都不會再改變狀態,只有 Restart 能夠恢復。
  • 在第八步或之前檢查且棋盤為單色,即可獲得精確的 1,000 分,並把這局標記為已完成的終局狀態。

1,000 分這個分數是精確的。沒有速度獎勵、沒有提早通關的步數扣分、沒有隨機加成,也沒有隱藏的部分計分。完成與卡死兩者都是終局狀態,這避免了刷分的可能,也讓自動化瀏覽器檢查有一個穩定的結果可供斷言。

操作方式、復原與無障礙設計

指標與觸控操作透過棋盤下方四個大型顏色按鈕處理,其大小可在 390 像素的視窗中正常顯示而不產生水平捲動。鍵盤操作同樣完整:方向鍵可在顏色游標間循環,Space 選定目前高亮的顏色,數字鍵 1 到 4 可直接選取藍、珊瑚、金或青綠,Delete 或 Backspace 可復原上一個顏色,Enter 則觸發 Check board。重複的 keydown 事件會被忽略,因此長按一個按鍵不會意外地連續消耗好幾步。

步數歷史刻意保持可見。每次選擇會附加一個顏色字母,原生按鈕會向輔助科技暴露顏色名稱、目前顏色狀態與鍵盤選定資訊。所有規則與狀態轉換都在瀏覽器本地執行;遊戲不會上傳任何棋盤歷史、不需要帳號、不會呼叫任何遠端遊戲服務、不會要求任何裝置權限,也不會引入任何套件相依。1,000 分的結果只認證這個公開的固定盤面在其經過證明的最少步數限制內被完成,並不衡量智力、視力或注意力。

如果想從不同角度切入同一個固定盤面,請參考 Flood It 5x5 免下載指南

想進一步深入了解,請參考 四色定理遊戲:五張地圖、已證明的最少步數