在戰艦謎題中,戰艦不能對角接觸——不同的戰艦在任何方向上都必須至少隔著一個水域格子,包括角落在內。這條規則適用於盤面上每一對戰艦,因此一艘長度 3 的巡洋艦、一艘長度 2 的驅逐艦和一艘長度 1 的潛水艇,連共用一個角落相鄰格子的情況都不允許。這個角落規則正是戰艦謎題與雙人猜測遊戲的區別所在:每次擺放都完整顯示在同一個邏輯盤面上,因此限制條件變成一個嚴密的擺放問題,而非一場獵尋遊戲。Conceptis 在其戰艦規則集中也記載了相同的禁令,明確指出每艘戰艦周圍的格子都必須保持水域。在 Lizely 的固定五乘五題目中,這條規則結合另外三項條件——僅限直線戰艦、精確的艦隊規模,以及五行加五列的提示總和——共同指引如何在六步擺放動作中擺出已揭示的六格艦隊。理解為何要強制角落間隔,以及究竟是哪幾對格子會觸發拒絕,是規劃乾淨擺放並達到 940 分最佳成績的最快方法。

can ships touch diagonally when i play battleships puzzle
戰艦謎題中戰艦可以對角接觸嗎?不可以

為何存在角落間隔規則

對角分隔規則正是將戰艦從猜測遊戲轉變為單人邏輯謎題的關鍵。Conceptis 在其戰艦規則參考中說明了這條規則:戰艦之間即使對角也不能接觸,因此任何以邊或角落接觸戰艦的格子都必須保持空白。少了這條限制,一個含六格戰艦的五乘五盤面會容納許多相互重疊的艦隊擺法;有了它,已揭示的擺放方式才能同時滿足所有提示。

戰艦謎題引擎將這條規則作為強制驗證機制。每次按下空白鍵後,它會重新計算已佔用格子的連通元件,再檢查每個元件的對角鄰格。若某個對角鄰格屬於不同元件,該擺放會被判定為矛盾而遭拒。即使其他限制都看似滿足,只要擺放讓兩艘戰艦在角落相吻,就不會被接受——戰艦周圍那圈水域是解答的一部分,而非可有可無的裝飾。

角落規則也驅動著計分。由於每次擺放動作都有觸發對角衝突的風險,經驗豐富的玩家只會擺放能同時通過四項限制的六格:直線形狀、艦隊規模、提示總和與水域間隔。六步乾淨俐落的動作,不需回溯,即可獲得 940 分。

艦隊、列與欄提示如何互動

除了不可對角接觸的規則外,謎題還要求你將一個特定艦隊放入一個五乘五的盤面,其行列提示是固定的。艦隊正好六格:一艘長度 3 的巡洋艦、一艘長度 2 的驅逐艦和一艘長度 1 的潛水艇。從上到下的列提示為 3、0、1、1 和 1。從左到右的欄提示為 1、2、1、0 和 2。

提示與艦隊必須在已佔用格數總和上一致。將列提示相加為 3 + 0 + 1 + 1 + 1 = 6,將欄提示相加為 1 + 2 + 1 + 0 + 2 = 6。兩者都等於已揭示艦隊的大小,這在盤面看起來有歧義時是一個實用的合理性檢查。提示為 0 的那一列代表該列必須全部是水域;提示為 0 的那一欄也必須全部是水域。因此,零提示的行或列是對角規則的強力錨點,因為它保證沒有戰艦會與其水域通道相鄰。

行/欄提示對擺放的意義
第 1 列(最上)3此列恰好有三格戰艦段。
第 2 列0此列五格必須全部為水域;此列為禁接觸的錨點。
第 3 列1此列恰好有一格戰艦段。
第 4 列1此列恰好有一格戰艦段。
第 5 列(最下)1此列恰好有一格戰艦段。
第 1 欄(最左)1此欄恰好有一格戰艦段。
第 2 欄2此欄恰好有兩格戰艦段。
第 3 欄1此欄恰好有一格戰艦段。
第 4 欄0此欄五格必須全部為水域;即使對角也不可有戰艦段接觸。
第 5 欄(最右)2此欄恰好有兩格戰艦段。

由於必須有兩條線全為水域,謎題留下了四列與四欄可以容納戰艦。這四列的合併容量為 3 + 1 + 1 + 1 = 6,四個非零欄提示的合併容量為 1 + 2 + 1 + 2 = 6,與艦隊規模完全一致。一旦在腦中將水域列與水域欄扣除,擺放盤面就小到僅憑不可對角接觸的規則就能推導出剩餘配置。

如何擺放戰艦避免對角接觸

以下步驟示範已揭示的六格解答,每個階段都套用禁接觸規則。

  1. 開啟戰艦謎題,閱讀印在盤面邊緣的五個列提示與五個欄提示。
  2. 在最左上角的格子按下空白鍵以開始擺放巡洋艦;用方向鍵向右移動,再按兩次空白鍵,使長度 3 的巡洋艦橫跨頂列。
  3. 在巡洋艦旁任何一個不能屬於其他戰艦的未佔用格子上按 Enter 鍵,以保持你的禁接觸推論過程一目了然。
  4. 移至第三列最右欄並按下空白鍵;再向下移動並再按一次空白鍵,使長度 2 的驅逐艦垂直落入最右欄,滿足其為 2 的提示。
  5. 在唯一能完成第 2 欄為 2 的提示、同時對角上與前兩艘戰艦都保持淨空的那一格按下空白鍵——那一格就是潛水艇。
  6. 再次逐一檢視每列與每欄,比對戰艦段數量與印出的提示,並確認沒有任何戰艦段對角接觸另一段。
  7. 停在任一格;六次戰艦動作已從起始的 1,000 分產生 940 分的成績。

什麼算作對角接觸

對角接觸是指兩個屬於不同戰艦元件的格子之間共用單一角落的接觸。在這個五乘五盤面上,只以角落相接的格子很容易列舉:(0,0) 對角接觸 (1,1);(0,1) 對角接觸 (1,0) 與 (1,2);以此類推遍及整個盤面。位於 (0,2)——頂列巡洋艦的右端——的戰艦段對角接觸 (1,3) 與 (1,1),但這些格子在此解答中保持水域,因此巡洋艦與驅逐艦之間沒有任何角落接觸。

戰艦 A 的格子對角相鄰格子若有其他戰艦佔用該格的結果
(0,0) 巡洋艦左上端(1,1)判定為對角碰撞而拒絕。
(0,2) 巡洋艦右端(1,1)、(1,3)任一格若成為其他戰艦則判定拒絕。
(2,4) 驅逐艦頂端(1,3)、(3,3)任一格若成為其他戰艦則判定拒絕。
(3,4) 驅逐艦底端(2,3)、(4,3)任一格若成為其他戰艦則判定拒絕。
(4,1) 潛水艇(3,0)、(3,2)任一格若成為其他戰艦則判定拒絕。

邊對邊接觸是另一項相關但獨立的禁令。共用一條邊的格子——例如 (0,2) 與 (0,3)——也不能分屬不同的戰艦;正交接觸同樣會被拒絕。驗證器會掃描每個元件的兩種鄰格,因此每艘戰艦周圍的完整禁接觸環是連續不斷的水域邊界。這正是第 2 列與第 4 欄為零提示如此重要的原因:它們在無需任何戰艦動作的情況下延伸了自然的水域環,釋放了原本會變得模糊的對角位置。

計分、動作與水域標記

起始分數為 1,000 分,每次戰艦動作扣 10 分。戰艦動作是指任何會切換戰艦段開關的空白鍵按下,水域標記與方向鍵移動皆不計入。已揭示的解答需要六次戰艦動作才能完成:巡洋艦三次、驅逐艦兩次、潛水艇一次。1,000 減去 6 乘以 10 等於 940,這就是本謎題的最佳成績;結果向下取整為 0,因此分數不會出現負值。

以 Enter 鍵放置的水域標記不會影響分數或艦隊驗證。它們僅作為推理輔助,用於在解題過程中追蹤已被排除的格子。滑鼠與觸控使用者可以點擊切換戰艦段,並使用快捷選單手勢來標記水域。

盤面內建多項安全機制。重新開始會清除戰艦、水域標記、分數、步數與矛盾狀態,因此擺放中若觸發對角衝突,可直接放棄而不損失本次的任何資訊。連按兩次 Escape 鍵會開啟共用的模擬試算表封面,再按一次 Escape 鍵即可原封不動地恢復艦隊。盤面本身採用響應式 CSS 網格中的語意化按鈕而非 canvas,每個格子都會向輔助技術宣告其所在列、欄、戰艦、水域與鍵盤選擇狀態。沒有計時器、沒有隨機服務、沒有音效,也無需帳號,因此 940 分的目標完全取決於你如何乾淨俐落地規劃六次戰艦動作。

同款遊戲,相關的固定邏輯謎題

對角分隔規則是固定邏輯謎題中反覆出現的概念。帳篷謎題將樹木與帳篷配對的同時使配對間保持距離,包括對角方向,正是將同一角落間隔原則套用於不同的形狀組合。Stitches、Thermometers 與 Heyawake 也各自在類似的緊湊盤面上加入自身的禁接觸或連通性檢查,並獎勵同一種細心規劃——讓巡洋艦、驅逐艦與潛水艇在 Lizely 五乘五盤面上零角落接觸地就定位。規則的精神完全相同;只是被擺放的形狀改變了。

想更仔細比較禁接觸與禁轉彎規則,請閱讀戰艦謎題中的戰艦可以轉彎嗎?禁轉彎規則;想看讓艦隊乾淨就定位的精確六步動作順序,請嘗試戰艦謎題攻略與技巧:6 步達 940 分。兩篇都沿用相同的艦隊、相同的提示以及本文所闡述的同一條角落間隔約定,並強化將對角規則從限制轉化為實用約束的規劃思維。