কম্পিউটার টিউটোরিয়াল

পাইথনে বৈধ সুডোকু


मान लीजिए हमारे पास एक 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++-এ ভ্যালিড সুডোকু (Valid Sudoku) চেক করা

  2. পাইথনে ভ্যালিড প্যালিনড্রোম যাচাই

  3. পাইথনে একাধিক মান রিটার্ন করা (Returning Multiple Values in Python)

  4. পাইথনে একাধিক ভ্যালু রিটার্ন কীভাবে করবেন?