国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python如何判斷數獨是否合法

2019-11-25 16:35:06
字體:
來源:轉載
供稿:網友

介紹

該數獨可能只填充了部分數字,其中缺少的數字用 . 表示。

注意事項

一個合法的數獨(僅部分填充)并不一定是可解的。我們僅需使填充的空格有效即可。

解體思路

將數獨按照行、列和塊進行預處理,然后分別判斷是否合法。
利用Python的表達式推導,匿名函數和all函數可以很方便的進行處理。

代碼

class Solution:# @param board, a 9x9 2D array# @return a booleandef 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]) # 一步搞定

小結

能不用循環(huán)體盡量不用循環(huán)體,以上就是這篇文章的全部內容,希望對大家的學習和工作能有所幫助,如果有疑問大家可以留言交流。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 英超| 电白县| 增城市| 郧西县| 康马县| 高淳县| 加查县| 鄂托克旗| 渝北区| 思南县| 曲沃县| 湖口县| 孟州市| 乐业县| 日土县| 南川市| 安丘市| 新巴尔虎右旗| 彰化县| 谢通门县| 高邮市| 边坝县| 沭阳县| 尼勒克县| 荃湾区| 龙海市| 蒙山县| 水富县| 高雄县| 聂拉木县| 临汾市| 贞丰县| 台湾省| 荥经县| 石渠县| 开化县| 高要市| 阳朔县| 巴里| 沾益县| 承德县|