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

पायथन में मान्य सुडोकू


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

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

यह मान्य है।

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

  • मेरे लिए 0 से 8 की सीमा में
    • पंक्ति, कॉल और ब्लॉक नामक कुछ खाली शब्दकोश बनाएं, row_cube:=3 * (i / 3), और col_cube:=3 * (i mod 3)
    • जे के लिए 0 से 8 की सीमा में
      • यदि बोर्ड [i, j] खाली नहीं है और बोर्ड [i, j] पंक्ति में है, तो झूठी वापसी करें
      • पंक्ति[बोर्ड[i, j]] :=1
      • अगर बोर्ड [जे, आई] खाली नहीं है और बोर्ड [जे, आई] कॉलम में है, तो झूठी वापसी करें
      • col[board[j, i]] :=1
      • rc :=row_cube + j/3 और cc :=col_cube + j mod 3
      • अगर ब्लॉक और बोर्ड में बोर्ड [आरसी, सीसी] [आरसी, सीसी] खाली नहीं है, तो झूठी वापसी करें
      • ब्लॉक[बोर्ड[आरसी, सीसी]] :=1
  • सही लौटें

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

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

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++ में मान्य सुडोकू

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

  1. पायथन में एकाधिक मान लौटाना?

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

  1. हम पायथन में कई मान कैसे लौटाते हैं?

    किसी फ़ंक्शन से टपल, सूची, शब्दकोश या उपयोगकर्ता परिभाषित वर्ग के ऑब्जेक्ट के रूप में कई मान वापस करना संभव है टुपल के रूप में वापस लौटें >>> def function():       a=10; b=10       return a,b >>> x=function() >>> type(x) <class 'tuple