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抓取网页中的图片示例
Feb 28 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
Python反射的用法实例分析
Feb 11 Python
python在每个字符后添加空格的实例
May 07 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
Python爬取梨视频的示例
Jan 29 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
python3 sqlite3限制条件查询的操作
Apr 07 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 页面执行时间计算代码
2008/12/04 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
js实现简单扫雷
2020/11/27 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python 文件重命名工具代码
2009/07/26 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
浅述python中深浅拷贝原理
2018/09/18 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
python 一维二维插值实例
2020/04/22 Python
python 等差数列末项计算方式
2020/05/03 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
delegate与普通函数的区别
2014/01/22 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
矿泉水广告词
2014/03/20 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
行政撤诉申请书
2015/05/18 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS