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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
收集的几个Python小技巧分享
Nov 22 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
Python多图片合并PDF的方法
Jan 03 Python
python xpath获取页面注释的方法
Jan 14 Python
Python中@property的理解和使用示例
Jun 11 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
Python之matplotlib绘制折线图
Apr 13 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实现伪静态方法汇总
2016/01/13 PHP
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
入党自我评价范文
2014/02/02 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
班主任新年寄语
2014/04/04 职场文书
超市员工管理制度
2015/08/06 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
Golang获取List列表元素的四种方式
2022/04/20 Golang