मान लीजिए, हमारे पास एक ग्रिड या शब्दों का एक मैट्रिक्स है। हमें यह जांचना है कि दिया गया शब्द ग्रिड में मौजूद है या नहीं। शब्द चार तरह से पाया जा सकता है, क्षैतिज रूप से बाएँ और दाएँ और लंबवत ऊपर और नीचे। अगर हम शब्द ढूंढ सकते हैं तो हम सही लौटते हैं, अन्यथा गलत।
तो, अगर इनपुट पसंद है
p | g | ज | s | f |
y | k | घ | g | ज |
टी | k | g | ज | मैं |
ज | n | s | j | s |
ओ | j | f | g | ज |
n | r | टी | y | यू |
input_str ="पायथन", तो आउटपुट सही होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन परिभाषित करें find_grid() । यह मैट्रिक्स लेगा, input_str, row_pos, col_pos, row_count, col_count, Degree
- यदि डिग्री input_str के आकार के समान है, तो
- सही लौटें
- अगर row_pos <0 या col_pos <0 या row_pos>=row_count या col_pos>=col_count, तो
- झूठी वापसी
- यदि मैट्रिक्स [row_pos, col_pos] input_str [डिग्री] के समान है, तो
- अस्थायी:=मैट्रिक्स[row_pos, col_pos]
- मैट्रिक्स के तत्वों को बदलें[row_pos, col_pos] को '#' से बदलें
- परिणाम:=find_grid(मैट्रिक्स, input_str, row_pos-1, col_pos,
- row_count, col_count, डिग्री + 1) बिटवाइज़ या
- find_grid(मैट्रिक्स, input_str, row_pos + 1, col_pos, row_count,
- col_count, डिग्री + 1) बिटवाइज़ या
- find_grid(मैट्रिक्स, input_str, row_pos, col_pos - 1, row_count,
- col_count, डिग्री + 1) बिटवाइज़ या
- find_grid(matrix, input_str, row_pos, col_pos + 1, row_count, col_count, Degree + 1))
- मैट्रिक्स के तत्वों को बदलें[row_pos, col_pos] अस्थायी के साथ
- वापसी का परिणाम
- अन्यथा,
- झूठी वापसी
- यदि डिग्री input_str के आकार के समान है, तो
- मुख्य कार्य/विधि से, निम्न कार्य करें -
- यदि input_str> row_count * col_count की लंबाई है, तो
- झूठी वापसी
- 0 से लेकर row_count तक की पंक्ति के लिए, करें
- 0 से लेकर col_count तक के कर्नल के लिए, करें
- यदि मैट्रिक्स [पंक्ति, col] input_str[0] के समान है, तो
- अगर (find_grid(matrix, input_str, row, col, row_count, col_count, 0) सही है), तो
- सही लौटें
- अगर (find_grid(matrix, input_str, row, col, row_count, col_count, 0) सही है), तो
- यदि मैट्रिक्स [पंक्ति, col] input_str[0] के समान है, तो
- 0 से लेकर col_count तक के कर्नल के लिए, करें
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def find_grid(matrix, input_str, row_pos, col_pos, row_count, col_count, degree) : if (degree == len(input_str)) : return True if (row_pos < 0 or col_pos < 0 or row_pos >= row_count or col_pos >= col_count) : return Fals if (matrix[row_pos][col_pos] == input_str[degree]) : temp = matrix[row_pos][col_pos] matrix[row_pos].replace(matrix[row_pos][col_pos], "#") result = (find_grid(matrix, input_str, row_pos - 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos + 1, col_pos, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos - 1, row_count, col_count, degree + 1) |find_grid(matrix, input_str, row_pos, col_pos + 1, row_count, col_count, degree + 1)) matrix[row_pos].replace(matrix[row_pos][col_pos], temp) return result else : return False def solve(matrix, input_str, row_count, col_count) : if (len(input_str) > row_count * col_count) : return False for row in range(row_count) : for col in range(col_count) : if (matrix[row][col] == input_str[0]) : if (find_grid(matrix, input_str, row, col, row_count, col_count, 0)) : return True return False word_grid = ["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"] print(solve(word_grid, "python", 6, 5))
इनपुट
["pghsf", "ykdgh", "tkghi", "hnsjs", "ojfgh", "nrtyu"],"python"
आउटपुट
True