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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python_LDA实现方法详解
Oct 25 Python
Python2和Python3的共存和切换使用
Apr 12 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python实现根据文件格式分类
Oct 31 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python datetime 如何处理时区信息
Sep 02 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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获取apk包信息的方法
2014/08/15 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
破解Session cookie的方法
2006/07/28 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python如何发送与接收大型数组
2020/08/07 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
致标枪运动员加油稿
2014/02/15 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
js作用域及作用域链工作引擎
2022/07/07 Javascript