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 迭代器与生成器实例详解
May 18 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
利用Python实现原创工具的Logo与Help
Dec 03 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
Python调用.NET库的方法步骤
Dec 27 Python
python实现猜数游戏
Mar 27 Python
浅谈Python __init__.py的作用
Oct 28 Python
python爬虫请求头的使用
Dec 01 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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中定义网站根目录的常用方法
2010/08/08 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
基于javascript简单实现对身份证校验
2021/01/25 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue--vuex详解
2019/04/15 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Windows下安装python2和python3多版本教程
2017/03/30 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python对List中的元素排序的方法
2018/04/01 Python
python交互界面的退出方法
2019/02/16 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
python对execl 处理操作代码
2020/06/22 Python
详细分析Python collections工具库
2020/07/16 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
致裁判员加油稿
2014/02/08 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL