ধরুন, আমাদের একটি গ্রিড বা শব্দের একটি ম্যাট্রিক্স আছে। একটি প্রদত্ত শব্দ গ্রিডে উপস্থিত আছে কি না তা আমাদের পরীক্ষা করতে হবে। শব্দটি চারটি উপায়ে পাওয়া যাবে, অনুভূমিকভাবে বাম এবং ডান এবং উল্লম্বভাবে উপরে এবং নীচে। যদি আমরা শব্দটি খুঁজে পাই তবে আমরা সত্য ফেরত দিই, অন্যথায় মিথ্যা।
সুতরাং, যদি ইনপুট মত হয়
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 ="পাইথন", তাহলে আউটপুট হবে True।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন find_grid() সংজ্ঞায়িত করুন। এটি ম্যাট্রিক্স, input_str, row_pos, col_pos, row_count, col_count, ডিগ্রি
- নেবে
- যদি ডিগ্রী input_str এর আকারের সমান হয়, তাহলে
- সত্য ফেরান
- যদি row_pos <0 বা col_pos <0 বা row_pos>=row_count বা col_pos>=col_count, তাহলে
- মিথ্যে ফেরত দিন
- যদি ম্যাট্রিক্স[row_pos, col_pos] input_str[degree] এর মত হয়, তাহলে
- temp :=ম্যাট্রিক্স[row_pos, col_pos]
- ম্যাট্রিক্স[row_pos, col_pos] এর উপাদানগুলিকে '#' দিয়ে প্রতিস্থাপন করুন
- ফলাফল :=find_grid(matrix, input_str, row_pos - 1, col_pos,
- row_count, col_count, ডিগ্রি + 1) বিটওয়াইজ বা
- find_grid(matrix, input_str, row_pos + 1, col_pos, row_count,
- col_count, ডিগ্রি + 1) বিটওয়াইজ বা
- find_grid(matrix, 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, ডিগ্রি + 1))
- ম্যাট্রিক্স[row_pos, col_pos] এর উপাদানগুলিকে temp দিয়ে প্রতিস্থাপন করুন
- ফলাফল
- অন্যথায়,
- মিথ্যে ফেরত দিন
- যদি ডিগ্রী 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) True হয়), তাহলে
- সত্য ফেরান
- যদি (find_grid(matrix, input_str, row, col, row_count, col_count, 0) True হয়), তাহলে
- যদি ম্যাট্রিক্স[সারি, কল] input_str[0] এর মত হয়, তাহলে
- 0 থেকে col_count পরিসরের col এর জন্য, করুন
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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