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

सुडोकू ग्रिड को मान्य करने का कार्यक्रम पायथन में हल करने योग्य है या नहीं

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

  • प्रत्येक पंक्ति में बिना दोहराव के 1−9 के अंक होने चाहिए।

  • प्रत्येक कॉलम में दोहराव के बिना 1−9 के अंक होने चाहिए।

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

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

सुडोकू ग्रिड को मान्य करने का कार्यक्रम पायथन में हल करने योग्य है या नहीं

यह मान्य है।

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

  • मेरे लिए 0 से 8 की सीमा में

    • पंक्ति, कॉल और ब्लॉक नामक कुछ खाली शब्दकोश बनाएँ, row_cube:=3 * (i / 3), और col_cube:=3 * (i mod 3)

    • j के लिए 0 से 8 की सीमा में

      • अगर बोर्ड [i, j] खाली नहीं है और बोर्ड [i, j] पंक्ति में है, तो झूठी वापसी करें

      • पंक्ति [बोर्ड[i, j]] :=1

      • अगर बोर्ड [जे, आई] खाली नहीं है और बोर्ड [जे, आई] कॉलम में है, तो झूठी वापसी करें

      • कर्नल [बोर्ड [जे, आई]]:=1

      • आरसी :=row_cube + j/3 और cc :=col_cube + j mod 3

      • अगर ब्लॉक और बोर्ड में बोर्ड [आरसी, सीसी] [आरसी, सीसी] खाली नहीं है, तो झूठी वापसी करें

      • ब्लॉक [बोर्ड [आरसी, सीसी]]:=1

  • सही लौटें

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

उदाहरण

class Solution(object):
   def isValidSudoku(self, board):
      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. ढेर की जाँच करने का कार्यक्रम पायथन में अधिकतम ढेर बना रहा है या नहीं

    मान लीजिए कि हमारे पास ढेर के पेड़ का प्रतिनिधित्व करने वाली एक सूची है। जैसा कि हम जानते हैं कि हीप एक पूर्ण बाइनरी ट्री है। हमें यह जांचना है कि तत्व अधिकतम ढेर बना रहे हैं या नहीं। जैसा कि हम जानते हैं कि अधिकतम ढेर के लिए प्रत्येक तत्व अपने दोनों बच्चों से बड़ा होता है। इसलिए, यदि इनपुट nums =[

  1. पायथन प्रोग्राम यह जांचने के लिए कि दी गई स्ट्रिंग कीवर्ड है या नहीं

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक नंबर दिया गया है, हमें यह जांचना होगा कि संख्या दो की शक्ति है या नहीं। कीवर्ड विशिष्ट उपयोग के साथ किसी भी भाषा द्वारा आरक्षित विशेष शब्द हैं और पहचानकर्ता के रूप में उपयोग नहीं किए जा सकते हैं। यह जांचने

  1. एक वाक्य की जाँच करने के लिए पायथन प्रोग्राम एक पैंग्राम है या नहीं।

    एक वाक्य दिया। हमारा काम यह जांचना है कि यह वाक्य पैन ग्राम है या नहीं। पैन ग्राम चेकिंग का तर्क यह है कि वर्णमाला के प्रत्येक अक्षर वाले शब्द या वाक्य कम से कम एक बार। इस समस्या को हल करने के लिए हम सेट () विधि और सूची बोध तकनीक का उपयोग करते हैं। उदाहरण Input: string = abc def ghi jkl mno pqr stu