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

पायथन में शब्द खोज

मान लीजिए हमारे पास एक 2डी बोर्ड और एक शब्द है, हमें यह पता लगाना है कि शब्द ग्रिड में मौजूद है या नहीं। शब्द क्रमिक रूप से आसन्न सेल के अक्षरों से बनाए जा सकते हैं, "आसन्न" कोशिकाएँ क्षैतिज या लंबवत पड़ोसी कोशिकाएँ होती हैं। हमें एक ही लेटर सेल को एक से ज्यादा बार इस्तेमाल नहीं करना चाहिए। तो अगर मैट्रिक्स की तरह है -

A बी सी
एस एफ सी एस
डी एफ

दिए गए शब्दों को "ABCCED" कहते हैं, उत्तर सत्य होगा, शब्द "SEE" के लिए यह सत्य होगा, लेकिन "ABCB" के लिए यदि गलत होगा।

आइए चरणों को देखें -

  • हम इसे पुनरावर्ती दृष्टिकोण का उपयोग करके हल करेंगे। इसलिए यदि पुनरावर्ती विधि नाम को खोज () कहा जाता है, तो यह मैट्रिक्स मैट, शब्द, पंक्ति, कॉल और इंडेक्स i लेता है। प्रारंभ में सूचकांक i =0
  • यदि i =शब्दों की लंबाई, तो सही लौटें
  • यदि पंक्ति>=चटाई या पंक्ति की पंक्ति संख्या <0 या col>=चटाई या स्तंभ की पंक्ति संख्या <0 या शब्द[i] चटाई के समान नहीं है [पंक्ति, col], तो झूठी वापसी करें
  • mat[row, col] :="*"
  • res:=ढूंढें (चटाई, शब्द, पंक्ति + 1, कॉलम, i + 1) या ढूंढें (चटाई, शब्द, पंक्ति -1, कॉलम, i + 1) या ढूंढें (चटाई, शब्द, पंक्ति, कॉलम + 1, i + 1) या ढूंढें (चटाई, शब्द, पंक्ति, कॉलम -1, i + 1)
  • mat[row, col] :=word[i]
  • रिटर्न रेस
  • मुख्य कार्य इस तरह किया जाएगा -
  • n :=पंक्ति गणना और m :=स्तंभ गणना
  • मैं के लिए 0 से n की सीमा में
    • जे के लिए 0 से मी की सीमा में
      • यदि शब्द[0] =चटाई[i, j]
        • अगर ढूंढें (चटाई, शब्द, i, j) गलत नहीं है, तो सही लौटें

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

उदाहरण

class Solution(object):
   def exist(self, board, word):
      n =len(board)
      m = len(board[0])
      for i in range(n):
         for j in range(m):
            if word[0] == board[i][j]:
               if self.find(board,word,i,j):
                  return True
      return False
   def find(self, board,word,row,col,i=0):
      if i== len(word):
         return True
      if row>= len(board) or row <0 or col >=len(board[0]) or col<0 or word[i]!=board[row][col]:
         return False
      board[row][col] = '*'
      res = self.find(board,word,row+1,col,i+1) or self.find(board,word,row-1,col,i+1) or self.find(board,word,row,col+1,i+1) or self.find(board,word,row,col-1,i+1)
      board[row][col] = word[i]
      return res
ob1 = Solution()
print(ob1.exist([["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],"SEE"))

इनपुट

[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]]
"SEE"

आउटपुट

True

  1. पायथन प्रोग्राम में रैखिक खोज

    इस लेख में, हम लीनियर सर्च और पायथन 3.x में इसके कार्यान्वयन के बारे में जानेंगे। या पहले। एल्गोरिदम दिए गए एआर के सबसे बाएं तत्व से शुरू करें [] और एक-एक करके तत्व एक्स की तुलना एआर के प्रत्येक तत्व के साथ करें [] यदि x किसी भी तत्व से मेल खाता है, तो अनुक्रमणिका मान लौटाएँ। अगर x arr[] म

  1. पायथन का उपयोग करके वर्ड क्लाउड बनाएं

    इस समस्या में कुछ टेक्स्ट वाली फ़ाइल है। हमें उन टेक्स्ट और एक मास्किंग इमेज से वर्ड क्लाउड बनाना है। प्रोग्राम क्लाउड इमेज शब्द को png . के रूप में संग्रहीत करेगा प्रारूप। इस समस्या को लागू करने के लिए, हमें अजगर के कुछ पुस्तकालयों का उपयोग करने की आवश्यकता है। पुस्तकालय matplotlib, Wordcloud, num

  1. पायथन में खोज () फ़ंक्शन क्या है?

    पायथन में, खोज () मॉड्यूल पुनः की एक विधि है। खोज का सिंटैक्स () re.search(pattern, string): यह re.match() के समान है, लेकिन यह हमें केवल स्ट्रिंग की शुरुआत में मैच खोजने तक सीमित नहीं करता है। re.match() पद्धति के विपरीत, यहां TP Tutorials Point TP स्ट्रिंग में पैटर्न ट्यूटोरियल की खोज करने पर एक