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抓取Discuz!用户名脚本代码
Dec 30 Python
Python入门篇之函数
Oct 20 Python
Python中的lstrip()方法使用简介
May 19 Python
Python2随机数列生成器简单实例
Sep 04 Python
谈谈python中GUI的选择
Mar 01 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
Python try except finally资源回收的实现
Jan 25 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 Python
Python数组变形的几种实现方法
May 30 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Django中的cookie和session
2019/08/27 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
容易被忽略的Python内置类型
2020/09/03 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
新郎婚宴答谢词
2014/01/19 职场文书
国旗下演讲稿
2014/05/08 职场文书
认错检讨书
2014/10/02 职场文书
科学育儿宣传标语
2014/10/08 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
Python基础之条件语句详解
2021/06/16 Python
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers