मान लीजिए, हमारे पास शब्दों का एक ग्रिड या मैट्रिक्स है। हमें जांचना है कि दिया गया शब्द ग्रिड में मौजूद है या नहीं। शब्द चार तरीकों से पाया जा सकता है: क्षैतिज रूप से बाएं और दाएं और लंबवत रूप से ऊपर और नीचे। यदि हम शब्द पा सकते हैं तो हम True लौटाते हैं, अन्यथा False।
तो, यदि इनपुट इस तरह है:
| p | g | h | s | f |
| y | k | d | g | h |
| t | k | g | h | i |
| h | n | s | j | s |
| o | j | f | g | h |
| n | r | t | y | u |
input_str = "python", तो आउटपुट True होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- find_grid() फ़ंक्शन परिभाषित करें। यह मैट्रिक्स, input_str, row_pos, col_pos, row_count, col_count, degree लेगा
- यदि degree input_str के आकार के समान है, तो
- True लौटाएं
- यदि row_pos < 0 या col_pos < 0 या row_pos >= row_count या col_pos >= col_count, तो
- False लौटाएं
- यदि matrix[row_pos, col_pos] input_str[degree] के समान है, तो
- temp := matrix[row_pos, col_pos]
- matrix[row_pos, col_pos] के तत्वों को '#' से बदलें
- result := find_grid(matrix, input_str, row_pos - 1, col_pos, row_count, col_count, degree + 1) बिटवाइज़ OR find_grid(matrix, input_str, row_pos + 1, col_pos, row_count, col_count, degree + 1) बिटवाइज़ OR find_grid(matrix, input_str, row_pos, col_pos - 1, row_count, col_count, degree + 1) बिटवाइज़ OR find_grid(matrix, input_str, row_pos, col_pos + 1, row_count, col_count, degree + 1))
- matrix[row_pos, col_pos] के तत्वों को temp से बदलें
- result लौटाएं
- यदि degree input_str के आकार के समान है, तो
- अन्यथा,
- False लौटाएं
- False लौटाएं
- col के लिए रेंज 0 से col_count तक, करें
- यदि matrix[row, col] input_str[0] के समान है, तो
- यदि (find_grid(matrix, input_str, row, col, row_count, col_count, 0) True है), तो
- True लौटाएं
- यदि (find_grid(matrix, input_str, row, col, row_count, col_count, 0) True है), तो
- यदि matrix[row, col] input_str[0] के समान है, तो
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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 False 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