数独·唯一性技巧(Uniqueness)-2
Hidden Rectangle(隐藏矩形)
在由候选数(AB)组成、可能形成UR结构的4格中,有2~3格存在额外的候选数,此时若以不存在额外候选数的一格为起点,检查其对角格所在的行和列,若该行和列其余位置均不存在候选数A,则应删去对角格中的候选数B。我们将这类结构称为HR。

图14中,R7C57和R9C57四格可能形成UR结构,其中有三格存在额外的候选数,R7C7不存在额外候选数,其对角格R9C5所在的R9和C5其余位置均不存在候选数5,显然R9C5的5和R7C5、R9C7中的两个5构成矛盾关系,此时,
1、若R9C5中的5成立,则该格中的9不成立;
2、若R9C5中的5不成立,则R7C5、R9C7中的两个5成立,那么R7C7中就只能填入9,R9C5中就只剩9和额外的候选数7可供选择。如果选择填入9,就会如图15在这4格形成一个互换结构(很明显,把5和9位置互换,题目可以得到另一个合乎规则的解),导致题目出现双解。综上,不管R9C5中的5是否成立,该格中的9都应被删去。

下图是对角两个格存在不同额外候选数的情况,这种情形应先检查是否满足UR6,若不满足UR6,可以分别检查不存在额外候选数的两格,看是否满足HR,本例中R2和C9其他格不存在候选数4,满足HR,可删去R2C9中的5。

Avoidable Rectangle(可避免矩形)
在HR部分提到了互换结构的概念,这种结构使得我们可以将UR的用法进一步扩充,即在可能形成UR的四格中存在已填入的确定数字,若此时未定格中选择某候选数会导致盘面出现互换结构,就应删除该候选数,这类方法称为Avoidable Rectangle。需要注意的是,只有在可能会形成UR的四格中不存在原题给定数字时,方可使用AR,如果大家是在app上做题,原题给定数字和自己填入的数字无法分辨时,就不要使用这类技巧。
Avoidable Rectangle Type 1
AR1类似于UR1,来看一个例子:图17中,绿框4格已有3格填入确定数字,此时若R2C9中填入9,就会出现互换结构,所以R2C9≠9。

图18同样的道理,大家自己体会下。

Avoidable Rectangle Type 2
AR1是一格存在额外候选数的情况,AR2则是同侧两格有相同的单个候选数,类似于UR2。

上图中,若R78C3两格中的9都不成立,就会形成互换结构,亦即这两格中的9不能同假,必须要成立一个,故可删除这两格所在单元其他位置的9。下图同理。

Binary Universal Grave + 1(全双值坟墓+1,BUG+1)
如果某个数独中盘已无摈除解,所有未解格均为双值格,且每个候选数在每个单元(行、列、宫)均出现且只出现两次,这样的情形会导致题目多解或者无解,我们将这种结构称为全双值坟墓(BUG)。而在BUG基础上,某一格的候选数多出来一个,即存在三个候选数时,可将其称为BUG+1,很明显,若删除多出来的那个候选数,将会导致盘势出现BUG结构,故应把非双值格中在其行列宫仅出现两次的数字删除(或可表述为,非双值格中应填入在所在单元出现三次的那个候选数)。

图21中,除R1C8外所有未解格均为双值格,除该格中的6在所在单元出现3此外,其余候选数均出现且只出现2次,满足BUG+1的定义,故R1C8格应填入候选数6。
留个题目给大家,图22的盘势是否可以采用BUG+1的技巧,为什么?

作者:零时四分_719b
链接:https://www.jianshu.com/p/6da2a49d89ab
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
数独·唯一性技巧(Uniqueness)-2的更多相关文章
- 数独·唯一性技巧(Uniqueness)-1
唯一性技巧基于这样一个事实——各类出版物上发布的数独题目都只有唯一解.事实上,绝大多数数独玩家有这样的共识:即合格的数独题目解应该是唯一的.因此,为了保证题目合格.有效,出题者在制作题目时,会将一些虽 ...
- 数独高阶技巧入门之三——Fish
术语Fish代表了一组工作原理相同的关于特定候选数的解题技巧(Fish技巧直接产生自数独规则——每个单元内的数字都不能重复),Fish家族成员包括“体型”从小到大的X-Wing.Swordfish. ...
- leetcode 36 有效的数独 哈希表 unordered_set unordersd_map 保存状态 leetcode 37 解数独
leetcode 36 感觉就是遍历. 保存好状态,就是各行各列还有各分区divide的情况 用数组做. 空间小时间大 class Solution { public: bool isValidSud ...
- Java Bloom filter几种实现比较
英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter. 源代码在github上.依照性能测试结 ...
- 《SQL Server 2012 T-SQL基础》读书笔记 - 8.数据修改
Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdat ...
- atitit.html5 拼图游戏的解决之道.
atitit.html5 拼图游戏的解决之道. 1. 拼图游戏的操作(点击法and 拖动法) 1 1. 支持键盘上.下.左.右键移动: 1 2. 支持点击空白模块中的上下左右箭头移动: 1 3. 支持 ...
- Hyperledger Fabric、Corda和以太坊对比
Hyperledger Fabric . Corda 和以太坊的对比 三种不同的框架 我们从 Hyperledger Fabric.R3 Corda和以太坊的白皮书中可以看到,三种框架在可能的应用领 ...
- 以太坊、Hyperledger Fabric和Corda,哪个更好?
原创: Philipp Sandner 区块链前哨 昨天 编译|盖磊编辑|前哨小兵甲区块链前哨导语: 我们分析了 Hyperledger Fabric,R3 Corda 和以太坊这三种分布式账本技术间 ...
- Category Theory: 01 One Structured Family of Structures
Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...
随机推荐
- Asp.net 的工作原理
转:http://www.cnblogs.com/linjiancun/archive/2010/09/14/1825662.html 1.1.1 Asp.net 的工作原理 ...
- K2 Blackpearl中从数据库直接删除流程实例之K2ServerLog表
转:http://www.cnblogs.com/dannyli/archive/2012/11/29/2794845.html /********************************** ...
- 使用COM口的2、3针的通断作为中端源(有一个读图像的摄像头,当把卡插到位时触发中端,防止在插卡的过程中出现不稳定的图像)
利用串口2读,串口3发数据的特点.建立不断的发送流,再从接收端接收.如果收到,则数据畅通,否则断开.相当于产生一个中断.这样电脑对外部事件可作出反应. using System;using Syste ...
- 解决办法 Field userService in com.sxsj.controller.RegistLoginController required a bean of type
转自:https://blog.csdn.net/awmw74520/article/details/82687288 APPLICATION FAILED TO START Error starti ...
- spring-boot-starter-security Spring Boot中集成Spring Security
spring security是springboot支持的权限控制系统. security.basic.authorize-mode 要使用权限控制模式. security.basic.enabled ...
- sqlite在终端中输入命令不显示
问题: 今天通过命令想访问我设备里面的db文件,但是进入到 sqlite> 后,输入命令都是不显示的,但是回车是可以执行的.如图 经过一番排查后,发现,因为我前面使用了su命令,不要使用su命令 ...
- java中的==、equals()、hashCode()
java中的==.equals().hashCode()源码分析 在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. == java中 ...
- Nginx源码完全注释(8)ngx_errno.c
errno.h中的strerror(int errno)可以确定指定的errno的错误的提示信息.在 Nginx 中,将所有错误提示信息预先存储在一个数组里,而预先确定这个数组的大小,是在自动化脚本中 ...
- 配置atom需要安装的插件
本人是一个node后端开发,这里之记录我需要的atom插件,如果需要别的请去别处查找,也省这我自己再去找 1.atom-beautify 代码格式一键美化 2.minimap 代码小地图 3 ...
- Python实现目录文件的全量和增量备份
目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...