Hidden Rectangle(隐藏矩形)

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

 
图14 HR-1

图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都应被删去。

 
图15 HR-2

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

 
图16 HR-3

Avoidable Rectangle(可避免矩形)

在HR部分提到了互换结构的概念,这种结构使得我们可以将UR的用法进一步扩充,即在可能形成UR的四格中存在已填入的确定数字,若此时未定格中选择某候选数会导致盘面出现互换结构,就应删除该候选数,这类方法称为Avoidable Rectangle。需要注意的是,只有在可能会形成UR的四格中不存在原题给定数字时,方可使用AR,如果大家是在app上做题,原题给定数字和自己填入的数字无法分辨时,就不要使用这类技巧。

Avoidable Rectangle Type 1

AR1类似于UR1,来看一个例子:图17中,绿框4格已有3格填入确定数字,此时若R2C9中填入9,就会出现互换结构,所以R2C9≠9。

 
图17 AR1-1

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

 
图18 AR1-2

Avoidable Rectangle Type 2

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

 
图19 AR2-1

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

 
图20 AR2-2

Binary Universal Grave + 1(全双值坟墓+1,BUG+1)

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

 
图21 BUG+1-1

图21中,除R1C8外所有未解格均为双值格,除该格中的6在所在单元出现3此外,其余候选数均出现且只出现2次,满足BUG+1的定义,故R1C8格应填入候选数6。

留个题目给大家,图22的盘势是否可以采用BUG+1的技巧,为什么?

 
图22 BUG+1-2

作者:零时四分_719b
链接:https://www.jianshu.com/p/6da2a49d89ab
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

数独·唯一性技巧(Uniqueness)-2的更多相关文章

  1. 数独·唯一性技巧(Uniqueness)-1

    唯一性技巧基于这样一个事实——各类出版物上发布的数独题目都只有唯一解.事实上,绝大多数数独玩家有这样的共识:即合格的数独题目解应该是唯一的.因此,为了保证题目合格.有效,出题者在制作题目时,会将一些虽 ...

  2. 数独高阶技巧入门之三——Fish

    术语Fish代表了一组工作原理相同的关于特定候选数的解题技巧(Fish技巧直接产生自数独规则——每个单元内的数字都不能重复),Fish家族成员包括“体型”从小到大的X-Wing.Swordfish. ...

  3. leetcode 36 有效的数独 哈希表 unordered_set unordersd_map 保存状态 leetcode 37 解数独

    leetcode 36 感觉就是遍历. 保存好状态,就是各行各列还有各分区divide的情况 用数组做. 空间小时间大 class Solution { public: bool isValidSud ...

  4. Java Bloom filter几种实现比较

    英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter. 源代码在github上.依照性能测试结 ...

  5. 《SQL Server 2012 T-SQL基础》读书笔记 - 8.数据修改

    Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdat ...

  6. atitit.html5 拼图游戏的解决之道.

    atitit.html5 拼图游戏的解决之道. 1. 拼图游戏的操作(点击法and 拖动法) 1 1. 支持键盘上.下.左.右键移动: 1 2. 支持点击空白模块中的上下左右箭头移动: 1 3. 支持 ...

  7. Hyperledger Fabric、Corda和以太坊对比

     Hyperledger Fabric . Corda 和以太坊的对比 三种不同的框架 我们从 Hyperledger Fabric.R3 Corda和以太坊的白皮书中可以看到,三种框架在可能的应用领 ...

  8. 以太坊、Hyperledger Fabric和Corda,哪个更好?

    原创: Philipp Sandner 区块链前哨 昨天 编译|盖磊编辑|前哨小兵甲区块链前哨导语: 我们分析了 Hyperledger Fabric,R3 Corda 和以太坊这三种分布式账本技术间 ...

  9. Category Theory: 01 One Structured Family of Structures

    Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...

随机推荐

  1. C#内存流示例----->用内存流来读取图片

    背景:一个窗体.一个pictureBox.一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码: priva ...

  2. Spring -- <context:component-scan>使用说明

    在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类 ...

  3. mybatis 传入集合参数遍历 查询总结

    出自:http://blog.csdn.net/u013628152/article/details/51184641 1. findByIds(List ids) 如果参数的类型是List, 则在使 ...

  4. LVM 逻辑卷管理

    简介: LVM ( Logical Volume Manager ) 逻辑卷管理 一.创建 LV 1.首先在你的虚拟机上添加一块新的硬盘用来做实验. 2.安装 lvm : yum -y install ...

  5. Core1.1环境下,自己实现的一个简单的CRUD框架(反射实现)

    我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一 ...

  6. 使用net.sf.fjep.fatjar插件将第三方JAR包打包进自已的JAR包中

    一般单个工程,在没有应用别人的jar包时导出为jar很简单,只要设置一个Main-Class就行了,也就是选择程序入口(main所在类).但是涉及到了数据库或需要用到第三方的JAR,就需要用到相应的数 ...

  7. Python下载与安装

    Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,一般默认装的是Python2版本,Windows系统上没有Pyhton环境,需要我们手动安装一下,过程 ...

  8. node模块示例

    来源于慕课网课程:http://www.imooc.com/video/6701 (视频) 模块的流程图如下: 做一个学校的模块示例 建一个学生的js studet.js function add(s ...

  9. EMC校招笔试题目

    ------------------------------------------------- 1,7×(1/7) = 1是什么率? 乘法运算满足结合律,交换律和分配率.这个题目用的应该是交换律. ...

  10. Zookeeper的基本概念和重要特性

    目录 1. 什么是Zookeeper 2. Zookeeper集群角色 3. Zookeeper的数据模型 3.1 Znode的类型 3.2 Znode的结构 4. Zookeeper的事件监听机制 ...