战舰

战舰 技巧

舰队是一款探索舰队布局的游戏,其网格是大海,而海上隐藏着一个包含数艘船只的舰队。游戏的目的是通过逻辑推理将舰队的布局图还原出来。网格右侧和底端的提示数字告诉玩家对应行列的船体段数量。这些船只可能水平或者竖直排列,但是包含对角在内,船体间不能相触。有些时候,网格中的某些方格会被填涂为船体段或者水域,提示玩家从哪里下手。最流行的10x10战舰游戏包含了一艘战舰,俩艘巡洋舰,三艘驱逐舰和四艘潜水艇,如下图所示。

Classic Battleships puzzle Classic Battleships solution

基本技巧

1. 在已知船体段周围填空格:

让我们从下图开始,该图中已经存在了三个船体段和俩个水域方格。由于潜水艇只包含一个船体段,所以H8周围的所有方格都用X标记为水域。方格C4存在了一个船体的头端,又由于该行只能有俩个船体段,那么紧邻的C5为船尾,我们将这个驱逐舰周围的10个方格都用X标记为水域。方格F10是一艘船只的中间部分,既可能是战舰,也可能是巡洋舰,而且它还将垂直摆放,因为F10右侧紧贴网格的边缘。因此,该方格的上下俩个连续的方格必将是船体的一部分,根据这个推论,我们将其他的三个方格用X标记为水域。

Fill what you know around given ship segments (A) Fill what you know around given ship segments (B)

2. 每一行列的其余空格为水域:

当某一行列的船体数量已经用完后,该行列的其余空格必将是水域。A行和2,7列的对应提示数字为0,这也就意味着该行列可以用X标记为水域。C行的C4,C5包含了俩个船体段,而该行的提示数字为2,那么该行的其他空方格可用X标记。最后,F行和4,5列对应的提示数字均为1,而该行列的船体段已经存在了一个,那么其所在行列的空方格都可用X标记。

Remaining empty squares in a row or column are water (A) Remaining empty squares in a row or column are water (B)

3. 每一行列的其余空格为船体:

当某一行列的船体数量还不够时,玩家可以利用这个技巧找到船体所在位置。让我们看一下提示数字为4的第三列。由于该列仅存四个空格,所以每个空格将是船体的一部分。这就意味着E3存在了一艘潜水艇而H3,I3,J3是一艘巡洋舰。现在让我们重新用基本技巧2将E行的剩余空格标记为X。

Remaining empty squares in a row or column are ship segments (A) Remaining empty squares in a row or column are ship segments (B) Remaining empty squares in a row or column are ship segments (C)

高级技巧

1. 只剩一种船体则只有一种排放方法:

当只有一种方法填放唯一剩下的一种船体时,我们可以利用这个方法。这道谜题中还需放置三艘驱逐舰。在网格中有七个有效位置可摆放这三艘驱逐舰,分别是D3-E3, D10-E10, E9-E10, G3-H3, G10-H10, J2-J3, 和J9-J10。尽管这看上去令人困惑,但是其中一些可能的摆放方式之间互相排斥。比如,将驱逐舰摆放在D10-E10与E9-E10是互相排斥的。检查过后,这七个地方只有一种方式同时摆放三艘驱逐舰,分别是E9-E10, G10-H10和J2-J3。当玩家将潜水艇放在D3之后,游戏结束。

Remaining ships of one type can be placed in one way only (A) Remaining ships of one type can be placed in one way only (B) Remaining ships of one type can be placed in one way only (C)

2. 尝试摆放舰艇时出现的重叠区域:

当我们无论如何摆放舰艇,都会有重叠区域时,我们可以用到这个方法。下面的例子中,4个船体段长的战舰只能摆放在C行。尽管该行有三种摆放的可能位置,但是我们无论如何摆放,C3与C4都是被覆盖的重叠区域。由于我们还不知道战舰剩余部分的摆放位置,我们只能将这些方格用点进行临时标记。

Overlapping squares when placing a ship (A) Overlapping squares when placing a ship (B) Overlapping squares when placing a ship (C)

3. 间接逻辑(排除法):

间接逻辑可以用来证明某一个特定方格必须是船体或者水域。下面例子中我们想要证明方格H10是船体的一部分而非水域。让我们假设H10为水域,并临时标记为X。根据基本技巧3,H行剩余的方格将会存在俩艘巡洋舰,这样的话将会导致有三艘巡洋舰,而考虑到该谜题最多只能有俩艘巡洋舰,那么很清楚的可以推出:方格H10不能是水域,而只能是船体的一部分。

Indirect logic (process of elimination) (A) Indirect logic (process of elimination) (B) Indirect logic (process of elimination) (C)