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中装饰器的用法
Jun 28 Python
python实现list由于numpy array的转换
Apr 04 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
Python调用飞书发送消息的示例
Nov 10 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
Python基础详解之邮件处理
Apr 28 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 更新数据库中断的解决方法
2009/06/05 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
php cli 小技巧
2013/06/03 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
php提取微信账单的有效信息
2018/10/01 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Javascript typeof 用法
2008/12/28 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
javascript实现拼图游戏
2021/01/29 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python中实现参数类型检查的简单方法
2015/04/21 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
numpy中的高维数组转置实例
2018/04/17 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
PHP笔试题
2012/02/22 面试题
《圆明园的毁灭》教学反思
2014/02/28 职场文书
房产公证书范本
2014/04/10 职场文书
公司停电通知
2015/04/15 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android