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

Python में वर्ड सर्च II


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

इसलिए यदि इनपुट इस तरह है −

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

  • एक सरणी result बनाएं

  • solve() नामक एक विधि परिभाषित करें, यह board, d, i, j s लेगा

  • जब i या j बोर्ड की पंक्ति और कॉलम सीमा में नहीं हैं, तो false लौटाएं

  • l := board[i, j]

  • यदि l d में मौजूद है, तो

    • d := d[l], s के साथ l जोड़ें

    • यदि # d में है और d[#] null नहीं है, तो

      • s को result में डालें

      • d[#] := 0 सेट करें

    • board[i, j] := *

    • यदि i+1 < बोर्ड में पंक्तियों की संख्या और board[i + 1, j] d में है, तो

      • solve(board, d, i + 1, j, s) कॉल करें

    • यदि j+1 < बोर्ड में कॉलम की संख्या और board[i, j+1] d में है, तो

      • solve(board, d, i, j+1, s) कॉल करें

    • यदि i-1 > 0 और board[i - 1, j] d में है, तो

      • solve(board, d, i - 1, j, s) कॉल करें

    • यदि j-1 > 0 और board[i, j-1] d में है, तो

      • solve(board, d, i, j-1, s) कॉल करें

    • board[i, j] := l

  • insert() नामक एक विधि परिभाषित करें, यह word और डिक्शनरी t लेगा

  • current := t

  • word में i के लिए

    • यदि i current में नहीं है, तो current[i] := नया मैप

    • current := current[i]

  • current[#] := 1

  • मुख्य विधि से निम्नलिखित करें −

  • एक मैप t बनाएं

  • words में प्रत्येक word के लिए: insert(word, t) कॉल करें

  • बोर्ड में प्रत्येक कोशिका i, j के लिए − solve(board, t, i, j) कॉल करें

  • result लौटाएं

उदाहरण

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

class Solution(object): def findWords(self, board, words): self.result = [] t = {} for word in words: self.insert(word,t) for i in range(len(board)): for j in range(len(board[0])): self.solve(board,t,i,j) return self.result def solve(self,board,d,i,j,s=""): if i<0 or j<0 or i>=len(board) or j>=(len(board[0])): return l = board[i][j] if l in d: d = d[l] s+=l if "#" in d and d['#']: self.result.append(s) d['#'] = 0 board[i][j] = '*' if i+1=0 and board[i-1][j] in d : self.solve(board,d,i-1,j,s) if j-1>=0 and board[i][j-1] in d : self.solve(board,d,i,j-1,s) board[i][j] = l def insert(self, word,t): current = t for i in word: if i not in current: current[i] = {} current =current[i] current['#']=1 ob = Solution() print(ob.findWords([["o","a","a","n"],["e","t","e","a"],["i","h","k", "r"],["i","f","l","v"]],["oath","pea","tea","rain"]))

इनपुट

[["o","a","a","n"], ["e","t","e","a"], ["i","h","k","r"], ["i","f","l","v"]], ["oath","pea","tea","rain"]

आउटपुट

['oath', 'tea']

  1. पायथन प्रोग्राम में लीनियर सर्च पायथन प्रोग्राम में लीनियर सर्च

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

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

    इस समस्या में, एक फाइल है जिसमें कुछ टेक्स्ट है। हमें उन टेक्स्ट से वर्ड क्लाउड बनाना है और एक मास्किंग इमेज। प्रोग्राम वर्ड क्लाउड इमेज को png फॉर्मेट में स्टोर करेगा।इस समस्या को लागू करने के लिए, हमें पायथन की कुछ लाइब्रेरीज़ का उपयोग करने की आवश्यकता है। लाइब्रेरीज़ हैं: matplotlib, wordcloud, n

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

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