Python如何判断数独是否合法


Posted in Python onSeptember 08, 2016

介绍

该数独可能只填充了部分数字,其中缺少的数字用 . 表示。

注意事项

一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。

解体思路

将数独按照行、列和块进行预处理,然后分别判断是否合法。
利用Python的表达式推导,匿名函数和all函数可以很方便的进行处理。

代码

class Solution:

# @param board, a 9x9 2D array
# @return a boolean
def isValidSudoku(self, board):
 rows = [list(lst[::]) for lst in board]
 columns = [[lst[idx] for lst in board] for idx in range(9)]
 blocks_origin = [board[row][column] for x in [[0, 1, 2], [3, 4, 5], [6, 7, 8]] for y in [[0, 1, 2], [3, 4, 5], [6, 7, 8]] for row in x for column in y] # 利用一些技巧直接按块储存数据
 blocks = [[blocks_origin[row * 9 + column] for column in range(9)] for row in range(9)]
 check = lambda lst: all([lst.count(x) == 1 for x in lst if x != '.']) # 判断一条记录(按某种方式排列的九个数字)是否合法
 return all([check(x) for style in (rows, columns, blocks) for x in style]) # 一步搞定

小结

能不用循环体尽量不用循环体,以上就是这篇文章的全部内容,希望对大家的学习和工作能有所帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
用Python的urllib库提交WEB表单
Feb 24 Python
PHP实现发送和接收JSON请求
Jun 07 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
对Python 内建函数和保留字详解
Oct 15 Python
详解python中的Turtle函数库
Nov 19 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
Python数据正态性检验实现过程
Apr 18 Python
Python闭包与装饰器原理及实例解析
Apr 30 Python
Python如何用re模块实现简易tokenizer
May 02 Python
python框架django基础指南
Sep 08 #Python
python中星号变量的几种特殊用法
Sep 07 #Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 #Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 #Python
Python 编码处理-str与Unicode的区别
Sep 06 #Python
Python如何获取系统iops示例代码
Sep 06 #Python
python3编码问题汇总
Sep 06 #Python
You might like
PHP伪造referer实例代码
2008/09/20 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jquery实现简单的表单验证
2015/11/17 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
深入浅析Python的类
2018/06/22 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
生物学学生自我评价
2014/01/17 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
户籍证明格式
2014/09/15 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
现实表现证明材料
2015/06/19 职场文书
理想国读书笔记
2015/06/25 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js