在Pipes Puzzle中,你不能移動或交換管線方塊:九個管線方塊中的每一個,都固定鎖在自己 3 x 3 的格子裡,你能對一個方塊採取的唯一合法動作,就是把它順時針旋轉 90 度。這條「只能旋轉」的規則,直接來自 Pipes Puzzle 所屬的 Net 風格連接遊戲家族,在這類遊戲中,方塊的排列是固定的,只需要把每個方塊上的開口方向調整正確。棋盤把每個方塊繪製成代表上、右、下、左開口的文字線條符號,旋轉一個方塊會讓每個開口順時針移動一格,同時保持方塊的位置與方塊上開口的數量不變。因為方塊的位置永遠不會改變,這個謎題會化簡成一個確定性的方向問題,有一個公開的已解網路:九個頂點,恰好由八條互相對應的邊連接成一個統一的無環網路,從公開的打亂狀態出發,經過 18 次順時針旋轉即可到達。

你對一個管線方塊能做什麼、不能做什麼
Pipes Puzzle 中九個格子的每一個,都放著一個固定的管線方塊,而這個方塊永遠不會離開它被指定的那一列與那一欄。方塊會待在原本的位置上,但可以每次旋轉 90 度,而且每一次旋轉都會保留這個方塊一開始的開口數量。棋盤用四種文字線條符號來繪製每一個開口位元:上、右、下、左。當你順時針旋轉一個方塊時,這個方塊上的每一個開口,都會沿著遮罩順時針移動一格,這代表只有一個開口的方塊,會產生四種可能的方向,而有兩個開口的方塊,只會產生符合其管線形狀的方向。
移動、拖曳、交換與方塊互換,都被刻意停用。這裡沒有備用方塊庫存,沒有可以放入方塊的插槽,也沒有辦法重新排列這個 3 x 3 的網格。如果你習慣像15 Puzzle那樣,在棋盤上滑動編號方塊,那種直覺在這裡並不適用。這個謎題只會改變方向,絕不會改變排列。若想直接對照另一個謎題中類似的規則問題,Klotski guide on whether pieces can rotate or move more than one cell解釋了同一條「移動」與「重新定向」界線,在滑塊類謎題中的版本。
為什麼 Pipes Puzzle 會鎖定方塊位置
只能旋轉的設計,並不是隨意的選擇。Pipes Puzzle 是連接類遊戲的精簡版本,這類遊戲也被稱為 Net、FreeNet 或 NetWalk,而其規則契約,遵循的是 Simon Tatham 維護的 Net 文件。Tatham 描述的是一個被打亂的網路,透過旋轉方塊直到整個網路完全連通、且沒有封閉迴路,才算修復完成,而這項描述,在任何方向調整工作開始之前,就已經固定了幾何結構。一份獨立的 Puzzolve 指南,強化了同樣的五項特性:相鄰方塊之間的開口彼此對應、一個統一的網路、沒有朝向邊界外的開口、只旋轉不移動,以及一個無環的樹狀結構。
因為這個謎題事先就定義好方塊排列與打亂用的旋轉,完成過程是可重現的。Pipes Puzzle 使用一個固定的 3 x 3 蛇形配置,公開的已解網路,會沿著頂列穿過、順著右側往下、再橫穿回中間、沿著左側往下,最後橫穿底列。這個網路含有九個頂點與八條互相對應的邊,恰好符合一個連通無環樹的確切邊數。要還原最初「一、二、三次轉動」的打亂狀態,需要 18 次順時針旋轉,並從起始值 1,000 分中獲得 820 分。如果方塊位置可以改變,以上這些都不可能成立,因為打亂狀態與解答,兩者都假設使用同樣的九個格子。Simon Tatham's Net documentation完整描述了這種只靠方向、不靠移動的修復方式。
如何旋轉方塊,直到網路完全連通
- 用方向鍵把游標移到你想調整方向的管線方塊上。游標會停在棋盤邊緣,絕不會環繞整個網格。
- 按下空白鍵或 Enter,把選取的方塊順時針旋轉 90 度。每按一次,就會把該方塊上的每個開口,順時針移動一格,而不會把方塊從它的格子中移走。
- 如果你使用滑鼠或觸控裝置,直接點擊一個方塊,就能把同一個方塊順時針旋轉。點擊等同於選取該方塊後再按下空白鍵。
- 每次旋轉之後,檢查狀態列上的鬆散端數量,以及已連接到第一個方塊的格子數量。所謂鬆散端,是指一個開口指向格子外面,或朝向一個沒有對應開回來的相鄰方塊。
- 持續旋轉各個方塊,直到狀態列回報鬆散端為零、九個方塊全部連通,且恰好有八條互相對應的邊、沒有迴路。到了那個時候,完成狀態會凍結所有旋轉,以保持最終結果穩定。
- 如果你想把打亂狀態、游標位置、分數、步數與即時分析,全部還原回這一局開始時的狀態,請按下 Restart。
確認棋盤已解出的四項檢查
驗證會在每一次旋轉之後執行,因此你在每次點擊時就會收到回饋,而不是只在最後才收到。針對每個方塊上的每一個開口,瀏覽器會根據該開口位元,計算出相鄰的列與欄。你可以從狀態列與規則引擎中讀到四項檢查。前兩項偵測不對應與鬆散端,後兩項則強制檢查網路的形狀,因此一個所有開口都對應、卻仍存在一個雜散迴路的棋盤,依然算作未解出。
| 驗證檢查 | 偵測的內容 | 對這一局的影響 |
|---|---|---|
| 朝外開口 | 一個開口指向 3 x 3 網格之外的一列或一欄 | 在狀態列上算作一個鬆散端 |
| 對應不符 | 一個開口朝向的相鄰方塊,其開口位元並未對應回來 | 在狀態列上算作一個鬆散端 |
| 連通性缺口 | 從第一個方塊開始的廣度優先走訪,無法抵達全部九個格子 | 狀態列回報連通的方塊少於九個 |
| 相鄰圖中出現迴路 | 一個互斥集合聯集操作,發現兩個頂點已經在同一個元件中 | 即使每個開口都對應,解答仍會被拒絕 |
一個未解出的棋盤,會被明確偵測為一種死鎖方向,但方塊仍然可以編輯,因為旋轉另一個方塊,可能修復這個網路。旋轉不會破壞先前的進度;它只會從頭重新評估整個圖。要完成謎題,需要零個不對應、九個方塊全部連通、恰好八條邊,且沒有迴路。自動化測試涵蓋了方塊只旋轉不移動、互相對應的邊、朝外開口、全部九格連通性、八邊不變量、禁止迴路、由上到右的旋轉、固定的表格大小、初始的死鎖狀態,以及完整的 18 次旋轉完成序列。
分數、重新開始,與老闆鍵快捷方式
Pipes Puzzle 使用一個透明的計分公式,獎勵較少的旋轉次數。分數的計算方式是 max(0, 1000 減去 10 乘以旋轉次數),起始基準為 1,000。以公開的打亂狀態為例,這代表一次確定的計算:1000 減去 10 乘以 18,等於 1000 減去 180,結果是 820 分。如果你需要更多旋轉來修正早期的失誤,每多一次旋轉,就會從總分中扣掉 10 分,而分數永遠不會低於零。完成後的最佳分數,可能只會儲存在 localStorage 中,因此結果永遠不會離開你的瀏覽器,也沒有任何伺服器呼叫來發布分數。
Restart 會把九個打亂用的旋轉、游標位置、分數、步數,以及即時分析,全部還原回起始狀態。老闆鍵是連按兩次 Escape:在 400 毫秒內按兩次 Escape,就會用共用的模擬作業試算表蓋住這個謎題,再連按兩次即可回到原封不動的網路。棋盤在表面、線條、前景、強調色與聚焦狀態上,使用的是 Lizely 的 CSS 變數,而且沒有 canvas、沒有動畫迴圈、沒有音效、沒有下載的美術素材,也沒有亂數產生器。每個方塊都會向輔助技術公開它的索引與目前的開口遮罩,而選取狀態,對螢幕報讀器與鍵盤使用者而言,都有一個可見的外框。
其他值得一試的連接類謎題
Pipes Puzzle 是幾款共享「完成網路」這個目標的連接類謎題之一。如果你喜歡調整方塊方向直到每個開口都對應,可以試試Numberlink,它會用連續的正交路徑,把成對相符的數字連接起來,同時避免重複使用格子與分岔。Hashi Bridges則用不交叉的單橋或雙橋,連接編號的島嶼,直到每個提示都被滿足,而整組島嶼構成一個網路。若想玩帶有數字的著色變化版本,Hitori會在一個五乘五的網格中,把重複的數字塗黑,同時讓黑色格子彼此不相鄰,並讓剩下的白色格子保持連通;而Tents Puzzle則要在滿足每一列與每一欄提示的同時,把樹木與帳篷配對。
請把 Pipes 當成一個短小的空間網路挑戰,而不是能力或專注力的測驗。固定的 3 x 3 棋盤、公開的打亂狀態,以及只能旋轉的規則,代表每一局都可以重現,因此你可以把它當成一項平靜的邏輯練習,而不是一場計分測驗,反覆回來玩。驗證回饋與狀態列,都會在每次旋轉之後更新,這讓這個謎題成為一個實用的沙盒,可以用來實驗網路限制:改動一個方塊,觀察鬆散端數量的變化,再持續調整,直到整個圖變成一棵擁有九個頂點與八條邊的單一無環樹。
如果你還在權衡選項,Picture Word Puzzles: Decode 5 Visual Rebus Cards這篇文章有詳細說明。