成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【Python】判斷數(shù)獨(dú)是否合法

tracy / 2691人閱讀

摘要:題目描述請判定一個(gè)數(shù)獨(dú)是否有效。解體思路將數(shù)獨(dú)按照行列和塊進(jìn)行預(yù)處理,然后分別判斷是否合法。代碼利用一些技巧直接按塊儲存數(shù)據(jù)判斷一條記錄按某種方式排列的九個(gè)數(shù)字是否合法一步搞定感想能不用循環(huán)體盡量不用循環(huán)體,她好,我也好。

背景

在LintCode刷題的時(shí)候碰到一個(gè)很水的題目,不過要注意很多細(xì)節(jié),不然調(diào)試的時(shí)候非常麻煩,利用Python的一些小技巧寫了一個(gè)很簡短的解決方案。

題目描述

請判定一個(gè)數(shù)獨(dú)是否有效。

該數(shù)獨(dú)可能只填充了部分?jǐn)?shù)字,其中缺少的數(shù)字用 . 表示。

注意事項(xiàng)

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

解體思路

將數(shù)獨(dú)按照行、列和塊進(jìn)行預(yù)處理,然后分別判斷是否合法。

利用Python的表達(dá)式推導(dǎo),匿名函數(shù)和all函數(shù)可以很方便的進(jìn)行處理。

代碼

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] # 利用一些技巧直接按塊儲存數(shù)據(jù)
    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 != "."]) # 判斷一條記錄(按某種方式排列的九個(gè)數(shù)字)是否合法
    return all([check(x) for style in (rows, columns, blocks) for x in style]) # 一步搞定
# 感想
能不用循環(huán)體盡量不用循環(huán)體,她好,我也好。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38181.html

相關(guān)文章

  • leetcode36 Valid Sudoku 查看數(shù)獨(dú)是否合法

    摘要:如果重復(fù)則不合法,否則極為合法。在這里我們使用數(shù)組代替作為存儲行列和小正方形的值得數(shù)據(jù)結(jié)構(gòu)。我存儲這所有的行列小正方形的情況,并判斷當(dāng)前值是否重復(fù)。外循環(huán)則代表對下一行,下一列和下一個(gè)小正方形的遍歷。 題目要求 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa...

    wing324 評論0 收藏0
  • 【LeetCode】數(shù)組初級算法-有效的數(shù)獨(dú)

    摘要:題目描述有效的數(shù)獨(dú)判斷一個(gè)的數(shù)獨(dú)是否有效。上圖是一個(gè)部分填充的有效的數(shù)獨(dú)。數(shù)獨(dú)部分空格內(nèi)已填入了數(shù)字,空白格用表示。說明一個(gè)有效的數(shù)獨(dú)部分已被填充不一定是可解的。只需要根據(jù)以上規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 題目描述 有效的數(shù)獨(dú)判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 數(shù)字 1-9 在每一行只能出現(xiàn)一次。數(shù)字 1-9 在每一列只能出...

    wyk1184 評論0 收藏0
  • 數(shù)獨(dú)X--Android openCV識別數(shù)獨(dú)并自動求解填充APP開發(fā)過程

    摘要:可以針對筆者常用的數(shù)獨(dú)本文的實(shí)現(xiàn)都基于該,實(shí)現(xiàn)數(shù)獨(dú)的識別求解并把答案自動填入。專家級別的平均秒完成求解包括圖像數(shù)字提取,識別過程,完成全部操作。步驟四數(shù)獨(dú)求解,生成答案,并生成需要填充的數(shù)字序列。 1 序 ??數(shù)獨(dú)是源自18世紀(jì)瑞士的一種數(shù)學(xué)游戲。是一種運(yùn)用紙、筆進(jìn)行演算的邏輯游戲。玩家需要根據(jù)9×9盤面上的已知數(shù)字,推理出所有剩余空格的數(shù)字,并滿足每一行、每一列、每一個(gè)粗線宮(3*3...

    yvonne 評論0 收藏0
  • LeetCode36.有效的數(shù)獨(dú) JavaScript

    摘要:上圖是一個(gè)部分填充的有效的數(shù)獨(dú)。數(shù)獨(dú)部分空格內(nèi)已填入了數(shù)字,空白格用表示。但由于位于左上角的宮內(nèi)有兩個(gè)存在因此這個(gè)數(shù)獨(dú)是無效的。說明一個(gè)有效的數(shù)獨(dú)部分已被填充不一定是可解的。只需要根據(jù)以上規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 判斷一個(gè) 9x9的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 數(shù)字 1-9 在每一行只能出現(xiàn)一次。 數(shù)字 1-9 在每一列只能出現(xiàn)一次...

    elva 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<