用python实现判断9*9数独的正确性
import sysdef panduan(list):len_m = len(list)# 定义一个基准,拿每一行与每个宫排序之后跟temp对比,一致则说明,每一行都是1到9的数字temp = ['1', '2', '3', '4', '5', '6', '7', '8', '9']if len_m == 9:#如果list是9个元素则执行此段代码,判断每行排序之后是否与temp相等for i in list:if sorted(i) == temp:return Trueelse:return Falseif len_m == 3:#如果list是3个元素则执行此段代码,现将3*3宫的每行列表相加变成一个9个元素的列表,将9个元素的列表与temp比较# print(list[0] + list[1] + list[2])if sorted(list[0] + list[1] + list[2]) == temp:return Trueelse:return Falseif __name__ == '__main__':#键盘输入数据sudo = sys.stdin.readline()#将键盘输入的字符转换成list再进行切片,切成9个含有9个元素的列表list1 = [list(sudo[x * 9:x * 9 + 9]) for x in range(0,9)] #分成9*9的矩阵,每行都是一个列表,9个列表;使用列表的切片#再对9*9的列表进行切片,切成9个3*3的列表就是宫list2 = [[list(list1[x][j * 3 : j * 3 + 3]) for x in range(3) ] for j in range(3)] #切前三行list3 = [[list(list1[x][j * 3 : j * 3 + 3]) for x in range(3,6) ] for j in range(3)] #中间三行list4 = [[list(list1[x][j * 3: j * 3 + 3]) for x in range(6,9)] for j in range(3)] #最后三行#相加最后得到9个3*3list_end = list2 + list3 + list4# print(list_end)flag = True #设置一个标志if panduan(list1): #调用panduan函数,如果9*9的列表是符合判断的则往下执行for x in list_end: #循环取每个3*3的列表print(x)if panduan(x): #调用panduan函数,如果符合判断则标志是True,否则是Falseflag = Trueelse:flag = Falseprint(flag) #最后输出判断结果
思路:判断99的每行是1到9的数字,再判断每个33的小方格(宫)是1到9的数字
验证代码正确性:
案例1:
534678912672195348198342567859761423426853791713924856961537284287419635345286179
案例2:
761934825354628197928157634219546378483279516576381942195762483832495761647813259
案例3:
123456789234567891345678912456789123567891234678912345789123456891234567912345678
关于这道题,我一开始的想法是计算每行每列的和是45(见前一篇文章)不对的;然后又想着再计算每行每列和等于45的基础上加上判断宫(每个3*3的小方格)的和等于45,也是不对的,比如81个5的时候就不对;百度看到有人的文章是判断每行每列没有重复的数字,这也是不对的,案例3就可以打破这个说法;百度又有人说检查行、列是否有重复项 + 每行的和等于45两个条件判断,也不对,还是案例3说明不对。
还是要从数独的概念上解答此题,下面抄上百度的话:
数独 (英语:Sudoku)是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即3x3的大格)有齐1至9所有数字。
用python实现判断9*9数独的正确性相关推荐
- python图像数独_Python判断有效的数独算法示例
本文实例讲述了Python判断有效的数独算法.分享给大家供大家参考,具体如下: 一.题目 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 1. 数字 1-9 在 ...
- python怎样判断一个文件是否存在_python如何判断一个文件是否存在
python如何判断一个文件是否存在 发布时间:2020-09-23 11:38:42 来源:亿速云 阅读:82 作者:Leah python如何判断一个文件是否存在?针对这个问题,这篇文章详细介绍了 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- python代码判断两棵二叉树是否相同
python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...
- python代码判断指定日期是当前年的第多少天
python代码判断指定日期是当前年的第多少天 #python代码判断指定日期是当前年的第多少天 #不适用标准库 def is_leap_year(year):"""判断 ...
- Python 字符串判断字母 数字 大小写
Python 字符串判断 以下代码演示了Python字符串的判断: 实例 # Filename : test.py # author by : www.runoob.com # 测试实例一 print ...
- python怎么判断一个文件是否存在-利用Python如何判断一个文件是否存在
通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...
- python怎么判断一个文件是否存在-python判断文件是否存在的方法
python如何判断文件是否存在 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. python中如何判断文件是否存在? ...
- python质数判断if isprime_使用Python判断质数(素数)的简单
这篇文章主要介绍了使用Python判断质数(素数)的简单方法讲解,经常被用来做科学计算的Python处理这种小问题当然手到擒来^_-需要的朋友可以参考下 质数又称素数.指在一个大于1的自然数中,除了1 ...
最新文章
- 让FX1.1的NotifyIcon支持BalloonTip(1)
- CCNP实验【静态出接口配置】
- 注意区分Mb(Mbps)与MB(million bit和million Byte)
- 《Spark大数据分析:核心概念、技术及实践》一3.5 API
- python数据存储用什么_Python的小数据存储,用什么格式更有逼格?
- WebService优点和缺点小结
- 微信开发者接入php,微信开发系之新手接入指南
- Android开发22——广播接收者BroadcastReceiver的原理和注册方式
- 管理感悟:先做事,后做人
- 【生信进阶练习1000days】day1-Bioconductor的一些补充小用法与Working with Genomic Ranges
- 现在流行的少儿编程是不是再收大家的智商税?来看看最中肯的回答
- 1389: 程序员PIPI II
- 凌动z3735f运行64位linux,iwork8平板电脑安装ubuntu,Z3735d/f系列CPU通用
- 关于tensor的shape理解
- 中科院最年轻院士入职浙大!他一篇论文未发博士毕业!
- 使用python+selenium发送QQ邮件
- jam stack_纯JAM堆栈
- 打造一套安全的UI组件库!
- 多麦克风做拾音的波束_【语音交互】先从麦克风阵列聊起
- 量化交易创干货合集送给每一位爱学习的宽客quant