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解析json实例方法
Nov 19 Python
Python常用的爬虫技巧总结
Mar 28 Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
回调函数的意义以及python实现实例
Jun 20 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
儿童学习python的一些小技巧
May 27 Python
python实现俄罗斯方块游戏
Mar 25 Python
Python通过format函数格式化显示值
Oct 17 Python
python中Mako库实例用法
Dec 31 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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/03/12 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
Vue表单实例代码
2016/09/05 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
python实现的一个火车票转让信息采集器
2014/07/09 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
windows支持哪个版本的python
2020/07/03 Python
python 常见的反爬虫策略
2020/09/27 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
财务出纳员岗位职责
2013/11/26 职场文书
文秘大学生求职信
2014/02/25 职场文书
班级年度安全计划书
2014/05/01 职场文书
经典演讲稿汇总
2014/05/19 职场文书
刑事起诉书范文
2015/05/19 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server