Python如何判断数独是否合法
介绍
该数独可能只填充了部分数字,其中缺少的数字用.表示。
注意事项
一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。
解体思路
将数独按照行、列和块进行预处理,然后分别判断是否合法。
利用Python的表达式推导,匿名函数和all函数可以很方便的进行处理。
代码
classSolution: #@paramboard,a9x92Darray #@returnaboolean defisValidSudoku(self,board): rows=[list(lst[::])forlstinboard] columns=[[lst[idx]forlstinboard]foridxinrange(9)] blocks_origin=[board[row][column]forxin[[0,1,2],[3,4,5],[6,7,8]]foryin[[0,1,2],[3,4,5],[6,7,8]]forrowinxforcolumniny]#利用一些技巧直接按块储存数据 blocks=[[blocks_origin[row*9+column]forcolumninrange(9)]forrowinrange(9)] check=lambdalst:all([lst.count(x)==1forxinlstifx!='.'])#判断一条记录(按某种方式排列的九个数字)是否合法 returnall([check(x)forstylein(rows,columns,blocks)forxinstyle])#一步搞定
小结
能不用循环体尽量不用循环体,以上就是这篇文章的全部内容,希望对大家的学习和工作能有所帮助,如果有疑问大家可以留言交流。
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短