Steam 游戏 《Sudoku Universe(数独宇宙)》——[数独基本局分析]
日期:2020.02.12
博客期:152
星期三
老师给的任务都做完了,15篇博客也都写好了,剩下的几天居然还要每天写一篇~唉~为难我 PH ,剩下的几天就把 我的数独要义分享一下吧!
1、基本局规则
数独表是一个 9 X 9 的宫格!其中对这个 81宫格 的每一种划分的区块内,标注着不重复的 1 ~ 9 数字!
一共有三种划分方法:
第一种——像上面的图一样,中间的粉线把 81 宫格分成了 9 个 九宫格!
第二种——上面的每一行都看作一个区块(上面的八条横线,将 81宫格 划分成 9 行 )
第三种——上面的每一列都看作一个区块(上面的八条竖线,将 81宫格 划分成 9 列)
将上述三种划分的区块里 1~9数字不重复的填入,这就是我们数独游戏的内容了!(其实我不知道怎么玩,也没有看过规则,这是自己总结的)
2、我的开局思路
(a). 首先需要找到表格上未填入的数字每一种有多少个,找到剩余未填数目最少的那一个(如上图就是 6 ,它剩余 5 个是没有填的)
(b). 我们看看有什么地方可以填入 6
(c). 看右上角的九宫格,由于它的下面两个九宫格都有 6,分析得出结论——左上角的 6 应该在 这个九宫格的第 2 列,然后分析行,得出结论——左上角的 6 应该在这个九宫格的第 1 行 或 第 3 行,综上所述 6 的坐标应该是 (1,2) 或 (3,2)位置【九宫格内】!因为 (3,2)位置已经有了数字 4,所以 6 应该在 (1,2)位置。
(d). 同理,找到其余结果。(剩下的两个九宫格里的 6 没有办法找到,因为是有 2 种可能,所以我们只标记一下)
(e).可以继续选择去找下一个(除了已经处理过的 6 以外)剩余数目最小的数字,去操作。
(f). 然后我就发现,做不动了!怎么办呢?我们可以根据 竖列的性质来做,因为每一竖列划分也是不能 同为一值 的。(比如最右方 1 6 4 已经占领了右下九宫格的最后一列,所以我们的 2 只能在前两列出现,但是右上九宫格的 2 出现在了第一列,所以 2 只能在右下九宫格的 (2,3) 位置了)。
(g). 还有呢?我们可以做横列分析这个是比较笨的方法,我能不用就不用!
原理——一个位置可能出现的数值集合 = {1,2,3,4,5,6,7,8,9} - {在这一行出现过的数值} - {在这一列出现过的数值} - {在这一个九宫格出现过的数值},当这个集合只能有 1个数值的时候我们就可以做判断了。
适用范围——当某一行和某一列的出现过的数值集合相差较大时,以及某一个划分已经有8个数值填好了的情况。
举例——上面图中的 8 号位置的 7 号位所在行出现数值集合 = {2,3,4,5,6},列对应集合 = {1,5,6,7,9},所以只能填 8 了。
(h). 那这样就可以了吗?显然不是这样!看下图的提示位置实际上能出现的值里没有 9,为什么呢?因为 1 号位 九宫格的 6 号位是 9 所以 第 3 列是不可能有 9 的,进而确定了 7 号位九宫格的 9 只能出现在 (3,1) 和 (3,2) 位置,也就是说第 3 行,所以自动绑定了 8、9 号位的九宫格内 9 不能出现在 第 3 行!同理,可以得到 9 号位九宫格的 9 只能出现在 第三列。
(i). 特别的还有 多项对应,就是比如 有 3 个位置, 第一个位置可能取值于 {1,2,3}中的一个,而第二第三位置可能取值{2,3}中的一个!那么第一个位置只可能是 1!
Steam 游戏 《Sudoku Universe(数独宇宙)》——[数独基本局分析]的更多相关文章
- Steam 游戏 《Sudoku Universe(数独宇宙)》、《Sudoku Killer(数独杀手)》、《Sudoku Jigsaw(数独拼图)》数字位置解析 ---------C# 数独程序解析(2020年寒假小目标11)
日期:2020.02.11 博客期:151 星期二 今天,准备肝一个 C# 的数独读写工具(汇编语言也在努力学习命令方法中...),这三个游戏我早就买下了,一直放在 Steam 库里积灰,看着它的成就 ...
- Steam游戏黑屏与游戏直接安装方法
黑屏原因主要是360禁止了反作弊进程,解决方法: Steam游戏目录: Steam\steamapps\common\*** 例如黎明杀机,备份时候可直接备份该目录下 Dead by Daylight ...
- 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫
语言:python 环境:ubuntu 爬取内容:steam游戏标签,评论,以及在 steamspy 爬取对应游戏的销量 使用相关:urllib,lxml,selenium,chrome 解释: 流程 ...
- Steam游戏《Nine Parchments(九张羊皮纸)》修改器制作-[先使用CE写,之后有时间的话改用C#](2020年寒假小目标02)
日期:2020.01.09 博客期:122 星期四 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想要部分CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页 ...
- Steam游戏《Northgard(北境之地)》修改器制作
日期:2021.06.07 博客期:181 星期一 [温馨提示]: 我现在把资源先放到开头,不想研究学习的就直接取用.如果修改器失效了,你们可以在博客园本页直接评论,也可以给我发邮件告诉我,就是不要到 ...
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- [Leetcode 37]*数独游戏 Sudoku Solver 附解释
[题目] 每一行.每一列.每个3*3的格子里只能出现一次1~9. [思路] 参考了思路,附加了解释. dfs遍历所有非空格子,n是已经填好的个数. 初始化条件.n=81,都填了,返回结束.对于已经填好 ...
- HDU 1426 Sudoku Killer【DFS 数独】
自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品— ...
- LeetCode 37 Sudoku Solver(求解数独)
题目链接: https://leetcode.com/problems/sudoku-solver/?tab=Description Problem : 解决数独问题,给出一个二维数组,将这个数独 ...
随机推荐
- util之PriorityQueue
定义: PriorityQueue<Integer> queue = new PriorityQueue<Integer>(); java中的优先队列默认从小到大 //自定义 ...
- UI高级组件
今天继续学习UI高级组件 网格视图 GridView 用GridView标签添加,显示网格视图,需要用到适配器,共有四种适配器 ArrayAdapter,SmipleAdapter,SmipleCou ...
- NOIP2016普及组解题报告
概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...
- Windows下PHP安装 Imagick 扩展
1.下载拓展下载地址一: http://windows.php.net/downloads/pecl/releases/imagick/下载地址二: https://pecl.php.net/pack ...
- Go网络编程TCP
1. 服务端 package main import ( "bufio" "fmt" "net" "os" " ...
- 每天进步一点点------Allegro 建立封装的一般步骤
在制作封装之前,先确定你需要的焊盘,如果库中没有,那就要自己画了,(我就是自己画的) 制作二极管1N5822 SMD,实际尺寸:480milX520mil 一.添加元件焊盘 1 启动Allegro P ...
- MyBatis(7)——使用注解开发
说明:注解就是利用接口实现的,因此转为面向接口编程,使用接口开发拓展性好.分层开发时上层不用管理具体的实现.更加标准化更加规范.使得各个层的耦合度更低. 注:有了注释语句就不需要实体类的mapper文 ...
- AcWing STL初步学习
vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() beg ...
- python map、join函数
map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. map(fun ...
- Codeforces Round #610 (Div. 2)E(模拟,DFS)
先找到一条多边形的边,然后循环一圈输出多边形上的点.把每个三角形看作一个结点,以两个三角形之间公用边为边建立一张图,DFS输出叶子结点,则得到先切后切的顺序. #define HAVE_STRUCT_ ...