Skip to content

鱼 (Fish) — 概述 ​

简介 ​

"鱼"这个术语表示一组从同一原理出发的技巧,但已经衍生出令人难以置信的多种变体(就像真正的鱼一样)。它们从简单的X-Wing(可以在任何教程中找到)开始,一直到自噬鳍变异利维坦。较大的物种相当难以手动找到,更常被计算机程序使用,但较简单的物种相当容易发现,并且可以相当快地推进数独。

鱼是单数字模式。"单数字"意味着在寻找鱼时只考虑同一数字的候选数。"模式"意味着候选数在网格中的位置很重要。这个术语用于将它们与链区分开来。

原理 ​

鱼背后的原理非常简单:寻找一定数量的不重叠的宫。这些宫称为基础集(set在这里与house同义),其中包含的候选数是基础候选数。不重叠意味着任何基础候选数只包含在一个基础集中,集合本身可以重叠。现在寻找相同数量的不同不重叠的宫来覆盖所有基础候选数。这些新集合是包含覆盖候选数的覆盖集。如果存在这样的组合,则所有不是基础候选数的覆盖候选数可以被消除。

工作原理 ​

鱼利用了这样一个事实:一个数字在一个宫中只能出现一次。由于我们只考虑同一数字的候选数,任何基础集必须恰好包含一个具有鱼值的格子。覆盖集也是如此。由于所有基础候选数既是覆盖集的一部分也是基础集的一部分,候选数的可能放置变得非常受限。如果我们有N个基础集和N个覆盖集,则恰好N个格子必须包含鱼数字。数独规则确保在每个覆盖集中恰好有一个基础候选数必须被设置。我们通常不知道是哪个,但我们知道它必须是一个,所以任何不是基础候选数的覆盖候选数都不是可能的放置。它们可以被消除。

形状和尺寸 ​

基础集/覆盖集的数量定义了鱼的大小。以下尺寸已被命名:

尺寸名称
2X-Wing
3剑鱼 (Swordfish)
4水母 (Jellyfish)
5蠕虫 (Squirmbag)
6鲸鱼 (Whale)
7利维坦 (Leviathan)

类型(基础集/覆盖集组合) ​

有三种类型的鱼,它们在基础集和覆盖集允许的宫类型上有所不同。基础鱼只使用行和列:行作为基础集,列作为覆盖集,或反之。弗兰肯鱼允许宫与行和列一起使用,但只有一方(基础或覆盖)可以使用宫。变异鱼允许在任一方或双方中使用行、列和宫的所有可能组合。

记法示例:4 c39 r46 表示数字4的基础X-Wing(基础:列3和9;覆盖:行4和6)。4 c39b8 r469 表示弗兰肯剑鱼。4 r159c9 c45b36 表示变异水母。

鳍(外鳍) ​

当基础候选数未被覆盖集覆盖时,这些剩余物称为外鳍,鱼变成鳍鱼。消除逻辑是:要么所有鳍为假(给出正常的鱼消除),要么一个鳍为真(消除能看到鳍格子的候选数)。因此,所有能看到所有鳍的可能消除可以被消除。

刺身 ​

一些退化鱼模式包含更小的有效鱼。当鳍阻止那个更简单的鱼运作时,该模式称为刺身。HoDoKu默认对所有非基础鱼类型使用"鳍鱼"。

内鳍 ​

当基础候选数位于多个基础集中时,将其视为内鳍可以恢复有效性。内鳍只能出现在弗兰肯或变异鱼中,由于巨大的组合空间,人类很难找到它们。

自噬 ​

当基础候选数被两个或更多覆盖集覆盖时,放置该候选数将迫使一个覆盖集包含两个鱼数字——违反数独规则。这样的候选数必须为假,可以被消除。鱼"几乎在吃自己",因此称为自噬鱼。当有鳍存在时,自噬消除只在候选数能看到所有鳍时适用。


内容基于 HoDoKu,作者 Bernhard Hobiger,授权于 GNU FDLv1.3。

Content based on HoDoKu by Bernhard Hobiger. Licensed under GNU FDLv1.3.