一筆畫遊戲,是一種邏輯謎題,玩家必須不提筆、不重複畫線,把一個固定圖形上的每一條邊都描過一次。One Line Draw 把這個概念,套用到一張手工設計、由八個標了字母的節點與九條無向邊構成的單一圖形上,並利用圖論中的奇偶性,讓整條路線完全是確定性的。一個完整的解答會經過十個節點,因為要走完九步邊,才能把它們連接起來,而一次獲勝的過程,僅限於這張圖實際容許的八條有方向的歐拉路徑。這裡沒有隨機產生的內容、沒有計時揭曉,也沒有填格子的花招——玩家唯一要描的,就是印出來的這張圖本身。每一條通過驗證的路徑,都會獲得恰好 1,000 分並讓盤面凍結;而一次錯誤的九步嘗試,第一次可以修改,第二次就會讓這一局卡死。結果是一個簡短而透明的練習迴圈,適合任何在研究歐拉路徑,或單純想找一個乾淨、以瀏覽器運作的一筆畫謎題的人,完整介面就在 One Line Draw

draw one stroke game
一筆畫遊戲

這款一筆畫遊戲長什麼樣子

One Line Draw 呈現的是一張固定不變的靜態圖形:八個標示 A 到 H 的圓形節點,以及九條印出來的線段。中央的主幹是 A-B-C-D。這條主幹上還接了兩個三角形迴圈,B-E-F-B 位於上方,C-G-H-C 位於下方。除此之外沒有其他邊,也沒有任何邊互相交叉,空白區域不具備任何作用。每一個節點,都位於一個為 390 像素寬檢視畫面而設計的有界面板中,而且每一個節點,都是它自己獨立的可點按按鈕,帶有語音標籤,讓游標與鍵盤永遠知道目前反白的是哪一個端點。

這張圖不是隨機產生的。這個固定的圖形,在每一次造訪、每一次按下「Restart」時,都會完全以同樣的方式重現,這也正是為什麼一套獨立的深度優先搜尋,能夠事先列舉出完整的解答集合,並鎖定精確的路線數量。

節點度數角色
A1奇數;主幹端點
B4偶數;主幹交會點與上方迴圈的錨點
C4偶數;主幹交會點與下方迴圈的錨點
D1奇數;主幹端點
E、F各為 2偶數;上方三角形 B-E-F-B
G、H各為 2偶數;下方三角形 C-G-H-C

如何遊玩 One Line Draw

  1. 先觀察這張八節點的圖,找出看起來像端點的那兩個頂點。奇數度的節點 A 與 D,就位於這條主幹的兩端。
  2. 依序點按相連的節點,或使用方向鍵在 A 到 H 之間循環,按空白鍵選定目前反白的節點。每一步,都會透過一條共用的邊,延伸這條路線。
  3. 持續進行九步邊,讓這條路線總共經過十次節點造訪,並且不重複地用完全部九條印出來的邊。
  4. 如果路線走錯了,按「Undo」(或 Delete、Backspace),移除最近一步;或按「Clear」(或 C),清空整條路線,同時保留這一局的進行狀態與分數。
  5. 按「Check trail」,或按 Enter,來驗證這條路線。一條通過驗證的歐拉路徑,會獲得恰好 1,000 分並讓盤面凍結。

狀態面板同時回報已涵蓋的相異邊數,以及總共走過的步數,所以任何悄悄發生的重複,都會以這兩個數字之間的落差顯現出來。點按一個不相鄰的節點,不會延伸路線,也不會被算成一次錯誤,這讓草擬階段保有一定的容錯空間。

為什麼 A 與 D 是僅有的兩個端點

這款遊戲套用的是標準的歐拉路徑規則:一個連通的無向圖,若且唯若恰好有零個或恰好有兩個奇數度頂點時,才存在一條能把每條邊恰好用一次的開放路徑。當存在兩個奇數度頂點時,這條路徑必須從其中一個出發,在另一個結束。One Line Draw 的這張圖,恰好有兩個奇數度節點,也就是 A 與 D,這代表任何一條獲勝的路線,都不可能從 B、C、E、F、G 或 H 出發或結束。這項奇偶性事實,不只是個小知識;它會立刻把每一條合法路線,收斂到只剩兩種端點選擇,這也是為什麼這個介面在鍵盤操作時,一律預設從節點 A 開始選取。

OpenStax 當代數學教材中談 歐拉路徑 的那一章,提供了路徑的定義,而同樣的奇偶性規則,也支撐著每一個已發表的歐拉路徑證明,所以這項提示所依據的,是標準的數學原理,而不是死記下來的走法。相對地,這張圖的具體形狀,則是這個謎題原創的設計,並經過獨立稽核。

把奇偶性,與這種主幹加迴圈的結構結合起來,也就固定了兩個三角形的先後順序。從 A 走向 D 時,必須先走完上方迴圈,才能從 B 離開前往 C;也必須先走完下方迴圈,才能從 C 離開前往 D。每個三角形都可以往任一方向走,所以 B 迴圈貢獻兩種走法,C 迴圈再貢獻兩種走法,合計產生四條從 A 到 D 的路徑。把這些各自反轉,又能得到四條從 D 到 A 的路徑,總共八條有方向的歐拉路徑。一個具體的 A 到 D 範例是 A-B-E-F-B-C-G-H-C-D,總共經過十次節點造訪、九次邊的移動;把它反轉過來的 D-C-H-G-C-B-F-E-B-A,同樣也是有效的。

操作方式、計分與終結狀態

觸控與鍵盤操作,涵蓋的是同一組動作。點按一個節點,即可選取它;方向鍵在 A 到 H 之間循環,空白鍵確認選取;Delete 或 Backspace 執行一次「Undo」;C 清空整條路線;Enter 則觸發「Check trail」。共用的遊戲外殼,會顯示即時分數、把最佳分數儲存在瀏覽器本機、提供一個「Restart」按鈕,並附有一個雙擊 Escape 的老闆鍵,會短暫用一個中性的試算表風格畫面蓋住遊戲區域,再把它還原回來。

檢查一條少於九步的路線,會被回報為尚未完成,不會讓犯錯計數增加。一條九步的路線,如果重複使用了某條邊,就必然會留下另一條邊沒有用到,第一次出現這種已完成的錯誤,會記錄一次犯錯,但仍然可以編輯,讓玩家能用「Undo」或「Clear」重新嘗試。第二次出現已完成的錯誤,會讓這一局卡死,直到按下「Restart」為止。不論是成功完成,還是卡死,都是終結狀態:在下一次「Restart」之前,每一次節點點按、方向鍵按下、空白鍵、「Undo」「Clear」與 Enter 輸入,都會被凍結。

遊戲狀態可見的計數器輸入行為
草擬中(少於 9 步)犯錯 0;路線可編輯點按與鍵盤操作可自由延伸、復原或清空
第一次完成的錯誤路徑犯錯 1;路線可編輯仍維持同樣的草擬操作方式
第二次完成的錯誤路徑犯錯 2;已鎖定只有「Restart」有反應
通過驗證的歐拉路徑分數 1,000;已鎖定只有「Restart」有反應

One Line Draw 與方格繪製類謎題有什麼不同

有好幾款熱門的一筆畫遊戲,表面上看起來很像,實際上解決的卻是完全不同的問題。填滿格子、連接編號成對的點,或單純描出一個印好的輪廓,都是各自獨立的謎題類型,而 One Line Draw 都不屬於這些類型。這裡唯一重要的對象,是這張印出來的圖,唯一的獲勝條件,就是把每一條印出來的邊恰好涵蓋一次。這個區別,在節點上表現得最清楚,因為 B 與 C 各自的度數都是 4,所以一條合法的路線,可以透過不同的邊,再次回到這些節點。重複經過某個頂點,不是錯誤;重複使用某條邊才是,而狀態面板把「已涵蓋的相異邊數」與「總步數」分開顯示,正是為了讓這種落差清楚可見。

謎題類型目標對象獲勝規則與 One Line Draw 的關聯
One Line Draw(本遊戲)9 條圖形邊把每條邊恰好描一次本文所討論的主題
Fill One Line方格中的開放格子用一條路徑涵蓋每一個開放格子涵蓋的是格子,不是邊
Numberlink方格中的格子在不交叉的情況下連接相同編號的一對格子比對的是端點成對關係,不是歐拉路徑
依形狀描繪的追蹤類遊戲一個輪廓剪影沿著印出來的輪廓描繪完全沒有圖論結構

因為這個固定圖形,有經過驗證的路線數量,這款謎題也因此具有可重現性:每一次回歸測試、每一項奇偶性證明,以及每一次恰好 1,000 分的結果,在每次重新載入時都會得到相同的結果。這款遊戲完全在瀏覽器中執行,不需要帳號,不會上傳任何資料,不會要求任何權限,也不會增加任何套件依賴,這讓整個體驗,聚焦在路線本身,而不是設定、登入,或關卡解鎖上。

想進一步了解,請參閱 How to Solve a Counting Blocks Puzzle with Hidden Cubes

想進一步了解,請參閱 Easy Klotski Puzzles: Solve One in Six Atomic Moves