数独中的摩天楼技巧
摩天楼(Skyscraper)是一种单数字链技巧。它由同一候选数的两条强链组成:两条链的一端位于同一列或同一行,另外两个错开的端点像两座楼顶,由此产生候选数排除。
什么是摩天楼?
以行型摩天楼为例:目标候选数在两行中都恰好出现两次,因此每一行的两个位置形成一条强链。如果两条强链的一端位于同一列,而另一端位于不同列,就形成摩天楼。
同一列中的两个“楼底”不能同时为真,因此两条强链另一端的两个“楼顶”至少有一个必须为真。任何同时看到两个楼顶的格子都不能填入目标数字。
示例:候选数6的行型摩天楼
观察候选数6:
- 第2行中的6只位于R2C2和R2C7;
- 第7行中的6只位于R7C2和R7C9。
R2C2与R7C2是位于同一列的楼底,R2C7与R7C9是两个错开的楼顶。因为两个楼底不能同时为6,所以两个楼顶中至少有一个必须为6。
R3C9与R2C7位于同一个宫,又与R7C9位于同一列,因此它同时看到两个楼顶,候选数6可以从R3C9中删除。
如何寻找摩天楼?
- 选择一个候选数字。
- 找出该候选数恰好出现两次的行,识别强链。
- 比较两条行强链,寻找位于同一列的一对端点。
- 把另外两个错开的端点视为楼顶。
- 从同时看到两个楼顶的格子中删除目标候选数。
也可以交换行列方向,寻找两列中的强链和位于同一行的楼底。
为什么摩天楼成立?
每条强链的两个端点中恰好有一个为真。由于两个楼底位于同一单位,它们不可能同时为真。于是至少有一条强链必须让楼顶为真,所以任何同时看到两个楼顶的格子都不可能保留目标候选数。
如何确认强链?
当某个候选数在一行、一列或一宫中只剩两个可能位置时,这两个位置形成强链:它们不能同时为真,但其中必有一个为真。摩天楼通常使用两条平行的行强链或列强链。
如果某一基准行里还有第3个候选位置,这一对端点就不是强链,摩天楼推理会失效。因此寻找时不能只看四个候选数的外形,还必须检查每条基准单位中是否真的只剩两个位置。
行型与列型摩天楼
行型摩天楼使用两条行强链,一对楼底位于同一列;列型摩天楼使用两条列强链,一对楼底位于同一行。两个楼顶通常通过行、列或宫的组合共同影响一个或多个排除格。
摩天楼不保证一定产生排除。构成两条强链后,还必须存在至少一个同时看到两个楼顶的候选格。若没有这样的格子,模式虽然存在,但当前不会带来进展。
常见误区
误区一:两条链不需要是强链
不正确。目标候选数必须在每个基准行或列中恰好出现两次,才能保证其中一个端点为真。
误区二:从看到一个楼顶的格子中删除候选数
不可以。排除格必须同时看到两个楼顶,才能在任一楼顶为真的情况下都排除目标数字。
误区三:摩天楼就是不完整的X-Wing
两者都使用同一候选数,但逻辑不同。X-Wing形成两行两列的矩形覆盖;摩天楼依赖两个错开的楼顶和共同可见格。
总结
同一候选数的两条强链如果有一端对齐、另一端错开,就可能形成摩天楼。两个错开的楼顶至少有一个为真,因此可以从同时看到两个楼顶的格子中删除目标候选数。
常见问题
什么是数独中的摩天楼?
摩天楼是由同一候选数的两条强链组成的单数字模式,一端对齐,另外两个错开的端点形成楼顶。
摩天楼可以删除哪个候选数?
可以从同时看到两个楼顶的格子中删除目标候选数。
摩天楼必须形成矩形吗?
不需要。它与X-Wing不同,两个楼顶是错开的,逻辑依据是两个楼顶中至少有一个为真。
