用Prolog解决数独

本文介绍了如何使用Prolog编程解决数独问题。通过理解数独规则,定义程序实现有效的数独板,并通过示例解释了程序的运行过程,展示了Prolog在逻辑编程上的简洁和高效。
摘要由CSDN通过智能技术生成

转载自:https://mp.weixin.qq.com/s/NE4j2Jc0vzw9pr2w4BF7hg

我们先了解一下什么是数独

数独(shù dú)是源自18世纪瑞士的一种数学游戏。它是一种运用纸、笔进行演算的逻辑游戏。数独有多种类型,我们仅以其中一种类型作为本文实例。

玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。

 

方格

水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形,称为九宫格(Grid),如图一所示,是数独(Sudoku)的作用范围。

 

行:水平方向的每一横行有九格,每一横行称为行(Row)

列:垂直方向的每一纵列有九格,每一纵列称为列(Column)

宫:三行与三列相交之处有九格,每一单元称为小九宫(Box、Block),简称宫,如图四所示(在杀手数独中,宫往往用单词Nonet表示)

上述行、列、宫、单元格统称为单元(Unit);而行、列、宫统称为区域(Region)。

区块

由三个连续宫组成大行列(Chute),分大行(Floor)及大列(Tower)。

第一大行:由第一宫、第二宫、第三宫组成。

第二大行:由第四宫、第五宫、第六宫组成。

第三大行:由第七宫、第八宫、第九宫组成。

第一大列:由第一宫、第四宫、第七宫组成。

第二大列:由第二宫、第五宫、第八宫组成。

第三大列:由第三宫、第六宫、第九宫组成。

格位编号

坐标有多种标示法,有横行 A~I,纵列 1~9(如中国),也有横行 1~9,纵列 A~I(如日本),这两种标示容易混淆,故最被广泛使用的是横行R1~R9,纵列C1~C9的标示法。

 

提示数:在九宫格的格位填上一些数字,做为填数判断的线索(Hint),称为提示数(Clue)

通常人工解决数独的思路

1、依解题填制的过程可区分为直观法与候选数法。

直观法就是不做任何记号,直接从数独的盘势观察线索,推论答案的方法。

2、候选数法就是排除行列宫格位已出现的数字,将剩余可填数字填入空格,做为解题线索的参考,可填数字称为候选数(Candidates,或称备选数)。

 

直观法和候选数法只是填制时候是否有注记的区别,依照个人习惯而定,并非鉴定题目难度或技巧难度的标准,无论是难题或是简单题都可上述方法填制&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值