← 返回小游戏
数独研习室中文本地教程
唯一性

BUG + 1

BUG 加一是一种全盘检查,不能只看局部。先确认唯一解:所有空格都只剩两个候选,只有一个格子剩三个;再检查某个候选在这个特殊格所属的行、列、宫中都出现三次,而其他未解决的数字位置都成双。这个多出来的候选必须成立。

先记住一句话

先验唯一,全盘成双;一格多一数,三处都核对。

本方法依赖唯一解。先完成唯一性核验,才能使用下面的推理。

怎样找到这个突破口

  1. 先用解数检查确认唯一解,检查盘面没有冲突,所有笔记排除都有依据。
  2. 数遍全盘空格:恰好一个格子有三个候选,其余全部有两个;否则停止套用本课。
  3. 逐个检查特殊格的三个候选,找出在其所属行、列、宫里都各出现三次的那个数字。
  4. 核对全盘每个区域:除这三处的特殊数字外,所有仍需出现的数字都恰有两个候选位置。
  5. 只有全部条件满足,才把特殊格填为多出来的数字。

为什么这样做成立

若从特殊格里删掉那个额外候选,整个未解盘面就会落入 BUG 结构:每格双候选,且每个尚缺数字在所属区域中的位置也成双。这种结构不能保留唯一解。

题目已确认唯一解,正确候选又必须包含真实答案,所以不能让额外候选消失;特殊格只能取这个候选。这里决定性的条件是全盘成双,不是单纯“只有一格有三个候选”。

对照例题:边看题,边学方法

先自己观察,再按步骤对照。解题方法的题例保留完整候选,用于练习当前这一步;操作指南的题例用于跟做本课功能。候选结构练习可能有多个完整解。

对照例题 1

BUG + 1 · 对照示范 1

去盘面练习 ↗

先找相关区域,再说清楚结构为什么成立。

BUG + 1 · 对照示范 1 · 先看盘面列号在上方,行号在左侧。显示这张题的完整候选笔记。黄色为观察格,红色划线可删除,绿色大数字为确定填数。46718931825928175436171352678478931478785296256349171787878961254378934781652642537891781757819267834112233445566778899

先自己观察。这是完整的数独候选盘,可以直接和文字步骤对照。

自己动手:5 道巩固练习

先不看答案,打开练习盘完成本课目标,再回来核对理由。练习通过数字替换、旋转或镜像形成同结构变式,帮助你换个位置也能认出来。

本课已完成 0 / 5 题

巩固练习 1 / 5

BUG + 1 · 巩固练习 1

打开这题,自己做 ↗

使用“BUG + 1”找到一步可以确定填数或删除候选的推理;先指出观察格,再说明理由。

同结构变式 · 左右镜像 · 数字重新编号 · 来源:BUG 加一:双候选结构里多出的那个数

BUG + 1 · 巩固练习 1 · 先看盘面列号在上方,行号在左侧。显示这张题的完整候选笔记。黄色为观察格,红色划线可删除,绿色大数字为确定填数。25687368194169742168533184189527693521818467816163479257425693181852961847318161683187254947189536182112233445566778899
需要时,看一点提示

先回想本课口诀:“先验唯一,全盘成双;一格多一数,三处都核对。” 图中已保留本题完整候选,先找结构,暂时不要展开答案。

做完后,对照答案与理由

已核验当前盘面只有一个解。所有空格都是双候选,只有第 8 行第 2 列是三候选。数字 1 在该格所属的行、列、宫中都多出现一次;若去掉它,会留下可互换的双解结构。因此这个格子必须填 1。

BUG + 1 · 巩固练习 1 · 查看结论列号在上方,行号在左侧。显示这张题的完整候选笔记。黄色为观察格,红色划线可删除,绿色大数字为确定填数。256873681941697421685331841895276935218184678161634792574256931818529618473181613187254947189536182112233445566778899
  • 第8行第2列填入 1

最容易弄错的地方

  • 只看见一个三候选格,就猜它应该填某个多余的数。
  • 忽略远处还有单候选格或四候选格,未满足全盘结构。
  • 仅检查特殊格的行,没有同时检查列、宫及其他区域的位置次数。
  • 没有验证唯一解,或笔记因误删而被人为整理成 BUG 外形。
本地支持的具体范围

本地实现标准 BUG 加一:一个三候选格、其余双候选,并逐区域检查候选次数。更一般的 BUG 多个额外候选不在本课范围内。

和孩子一起说一说

我们先做侦探核对,不急着填:全盘每格都是两小数吗?唯一多出来的格子在哪里?哪个数在它的行、列、宫中都多了一次?

学会了吗?做个小检查

全盘只有一个三候选格,其余空格都是双候选,是否就能直接使用 BUG 加一?