Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में वैलिड सुडोकु


मान लीजिए हमारे पास एक 9x9 सुडोकु बोर्ड है। हमें जांचना है कि वह वैध है या नहीं। केवल भरे हुए सेल्स को निम्न नियमों के अनुसार मान्य करने की आवश्यकता है -

  • प्रत्येक पंक्ति में 1-9 तक के अंक बिना दोहराव के होने चाहिए।
  • प्रत्येक कॉलम में 1-9 तक के अंक बिना दोहराव के होने चाहिए।
  • ग्रिड के 9 (3x3) सब-बॉक्स में से प्रत्येक में 1-9 तक के अंक बिना दोहराव के होने चाहिए।

मान लीजिए सुडोकु ग्रिड इस तरह है -

53

7



6

195



98



6
8


6


3
4

8
3

1
7

2



6

6



28



419

5




8

79

यह वैध है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • i के लिए 0 से 8 तक की रेंज में
    • कुछ खाली डिक्शनरी row, col और block बनाएं, row_cube := 3 * (i / 3), और col_cube := 3 * (i mod 3)
    • j के लिए 0 से 8 तक की रेंज में
      • यदि board[i, j] खाली नहीं है और board[i, j] row में है, तो false लौटाएं
      • row[board[i, j]] := 1
      • यदि board[j, i] खाली नहीं है और board[j, i] col में है, तो false लौटाएं
      • col[board[j, i]] := 1
      • rc := row_cube + j/3 और cc := col_cube + j mod 3
      • यदि board[rc, cc] block में है और board[rc, cc] खाली नहीं है, तो false लौटाएं
      • block[board[rc, cc]] := 1
  • true लौटाएं

उदाहरण (पायथन)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -

class Solution(object):    def isValidSudoku(self, board):       """       :type board: List[List[str]]       :rtype: bool       """       for i in range(9):          row = {}          column = {}          block = {}          row_cube = 3 * (i//3)          column_cube = 3 * (i%3)          for j in range(9):          if board[i][j]!='.' and board[i][j] in row:             return False          row[board[i][j]] = 1          if board[j][i]!='.' and board[j][i] in column:             return False          column[board[j][i]] = 1          rc= row_cube+j//3          cc = column_cube + j%3          if board[rc][cc] in block and board[rc][cc]!='.':             return False          block[board[rc][cc]]=1       return True ob1 = Solution() print(ob1.isValidSudoku([    ["5","3",".",".","7",".",".",".","."],    ["6",".",".","1","9","5",".",".","."],    [".","9","8",".",".",".",".","6","."],    ["8",".",".",".","6",".",".",".","3"],    ["4",".",".","8",".","3",".",".","1"],    ["7",".",".",".","2",".",".",".","6"],    [".","6",".",".",".",".",".","2","8","."],    [".",".",".",".","4","1","9",".",".","5"],    [".",".",".",".",".","8",".",".","7","9"]]))

इनपुट

[["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".",".","2","8","."],[".",".",".",".","4","1","9",".",".","5"],[".",".",".",".",".","8",".",".","7","9"]]

आउटपुट

true

  1. C++ में वैलिड सुडोकू C++ में वैलिड सुडोकू

    मान लीजिए हमें 9×9 मैट्रिक्स दिया गया है जिसे सुडोकू कहा जाता है। कार्य यह जांचना है कि दिया गया सुडोकू पैटर्न मान्य है या नहीं। सामान्य तौर पर, एक सुडोकू बोर्ड इस तरह दिखता है, सुडोकू के नियम - हर रो में 1-9 की रेंज में एक नंबर होता है हर कॉलम में 1-9 की रेंज में नंबर होते हैं। 3×3 का प्रत्येक ब्

  1. - पायथन में एकाधिक मान वापस करना

    पायथन फ़ंक्शन एकाधिक मान वापस कर सकते हैं। इन मानों को सीधे वेरिएबल्स में संग्रहीत किया जा सकता है। एक फ़ंक्शन एक वेरिएबल वापस करने तक सीमित नहीं है, यह शून्य, एक, दो या अधिक मान वापस कर सकता है।यह पायथन की डिफ़ॉल्ट संपत्ति है कि वह एकाधिक मान/वेरिएबल वापस कर सकता है जो C++ या Java जैसी कई अन्य प्रो

  1. - Python में एकाधिक मान कैसे लौटाएं?

    टपल, लिस्ट, डिक्शनरी या यूजर डिफाइंड क्लास के ऑब्जेक्ट के रूप में फंक्शन से एकाधिक मान लौटाना संभव है। टपल के रूप में लौटाएं >>> def function(): ... a = 10; b = 10 ... return a, b >>> x = function() >>> type(x) >>> x (10, 10) >>> x, y = function