趣味集算:数独

简介: 数独是一种老少皆宜的数学游戏,大家用零散的时间就可以玩上几局数独,有助于人们缓解压力,培养观察力和耐力,锻炼大脑。数独游戏的规则也很简单,只需一支铅笔就能游戏,如:在9*9的格子中,已经填入了一些数,你所要做的就是把其余的格子中全部填入1~9的数,使得每一横行,每一竖行,以及粗线所包围的9个九宫格中,1~9这些数字全部只出现一次。

数独是一种老少皆宜的数学游戏,大家用零散的时间就可以玩上几局数独,有助于人们缓解压力,培养观察力和耐力,锻炼大脑。

数独游戏的规则也很简单,只需一支铅笔就能游戏,如:
1
在9*9的格子中,已经填入了一些数,你所要做的就是把其余的格子中全部填入1~9的数,使得每一横行,每一竖行,以及粗线所包围的9个九宫格中,1~9这些数字全部只出现一次。

其实,如果用集算器的话,任何一局数独谜题都能随手解决。

首先,把数独问题记录入一个文本文件sudoku01.txt:

007000008

840000600

000895300

010400003

000000070

900500024

204006000

080730010

130904700

为了排列整齐,其中空白的格子用0代替。解决问题的代码如下:
2
下面,详细分析一下这段代码。

B1中将文本文件逐行读入,构成一个序列:
3
C1中将每一行中各个格子的值拆开,使得每一行都构成一个序列:
4
D1中将各个格子的值顺次连接为一个序列,以便于计算:
5
再来看A3中的子程序,执行时,将已填入部分数据的数独格值序列作为参数复制在A3中,将当前正在填写的格子序号复制在B3中。C3和D3根据格子序号计算出格子所在的行和列。

在第4至6行中,判断当前的格子中是否已经被填入了数,如果已经执行到了最后一个格子(第81个),说明谜题已经解开,将答案记录在A2的序列中;如果未执行到最后,则递归调用A3中的子程序,继续填写下一个格子。

在第7~13行,则是当前格子中为0时的处理,此时需要尝试填入数值。在A7中列出同一行的数构成的序列,B7中列出同一列的数构成的序列,D8中列出所在九宫格的数构成的序列。由于当前格子不能和同一行、同一列或者同一九宫格中已有的数相同,所以在B9中通过序列运算集合求差,计算出当前格子可能填入的所有数。

在10~12行,在当前格中尝试填入每一个允许的数,如果填到了最后一个格子,说明问题解决,把答案记录在A2中;否则递归调用A3中的子程序,继续填写下一个格子。

如果B9中的所有结果都已经尝试过,则在第13行中把当前格中的数恢复为0,继续修改前面格子中的数。

 

在主程序的B2中,调用A3中的子程序,从第一个格子开始,尝试填数。执行后,即可在A2中看到执行结果:
6
对于普通的数独问题,A2中只会有1个解,如果数独题目存在问题,也可能出现无解或者多个解的情况。为了便于查看,在D2中,将得到的第1个解填入序表,得到的解答如下:
7

相关文章
解决Swagger UI 中文乱码问题
解决办法如下: 1、file --> Settings --> file encodings 2、在弹出的对话框右侧,将所有的Encoding(一共四个已经标红)全部改为**“UTF-8”**
1523 0
|
10月前
|
安全 测试技术 Linux
Acunetix v25.8.0 发布,新增功能简介
Acunetix v25.8.0 (Linux, Windows) - Web 应用程序安全测试
333 0
Acunetix v25.8.0 发布,新增功能简介
|
数据采集 中间件 Python
Scrapy爬虫框架-通过Cookies模拟自动登录
Scrapy爬虫框架-通过Cookies模拟自动登录
572 0
串口通讯工具minicom-在银河麒麟操作系统下的使用
在银河麒麟OS中调试神州数码网络设备,如CS6200交换机,使用`minicom`工具。连接CONSOLE线,打开终端,用`sudo minicom -s`进入配置。设置串口为`ttyUSB0`(用`ls /dev`查找),波特率设为115200。保存配置后,开始设备配置。
串口通讯工具minicom-在银河麒麟操作系统下的使用
|
机器学习/深度学习 算法
ATFNet:长时间序列预测的自适应时频集成网络
ATFNet是一款深度学习模型,融合时域和频域分析,捕捉时间序列数据的局部和全局依赖。通过扩展DFT调整周期性权重,结合注意力机制识别复杂关系,优化长期预测。模型包含T-Block(时域)、F-Block(频域)和权重调整机制。实验证明其在时间序列预测任务中表现优越,已发布于arXiv并提供源代码。
782 4
|
编解码 固态存储 数据挖掘
通俗解读人脸检测框架-RetinaFace
通俗解读人脸检测框架-RetinaFace
846 2
|
安全 Java 应用服务中间件
干货 | Tomcat漏洞复现总结
干货 | Tomcat漏洞复现总结
2380 0
|
消息中间件 Kubernetes 供应链
软件体系结构 - 架构风格(14)SOA架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(14)SOA架构风格
738 0
|
程序员 Go
我的Go+语言初体验——Demo游戏体验篇(直男程序员的真实体验)
我的Go+语言初体验——Demo游戏体验篇(直男程序员的真实体验)
我的Go+语言初体验——Demo游戏体验篇(直男程序员的真实体验)

热门文章

最新文章