কম্পিউটার টিউটোরিয়াল

Python-এ একটি শব্দ গ্রিডে আছে কিনা তা যাচাই করা


মান लीজiye, আমাদের কাছে শব্দের একটি গ্রিড বা ম্যাট্রিক্স আছে। আমাদের যাচাই করতে হবে যে প্রদত্ত শব্দটি গ্রিডে উপস্থিত কিনা। শব্দটি চারভাবে পাওয়া যেতে পারে: অনুভূমিকভাবে বাম ও ডান এবং লম্বভাবে উপর ও নিচে। যদি শব্দটি পাওয়া যায় তবে True রিটার্ন করবে, অন্যথায় False।

যেমন, ইনপুট হলে:

pghsf
ykdgh
tkghi
hnsjs
ojfgh
nrtyu

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 রিটার্ন করুন।
    • অন্যথায়, False রিটার্ন করুন।
  • মূল ফাংশন/মেথড থেকে নিচের কাজগুলো করুন:
    • যদি input_str-এর দৈর্ঘ্য > row_count * col_count হয়, তবে False রিটার্ন করুন।
    • row কে 0 থেকে row_count পর্যন্ত রেঞ্জে নিয়ে, col কে 0 থেকে col_count পর্যন্ত রেঞ্জে নিয়ে লুপ চালান।
      • যদি matrix[row, col] input_str[0]-এর সমান হয়, তবে:
        • যদি find_grid(...) True রিটার্ন করে, তবে True রিটার্ন করুন।
    • False রিটার্ন করুন।

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

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] = matrix[row_pos][:col_pos] + "#" + matrix[row_pos][col_pos+1:]
        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] = matrix[row_pos][:col_pos] + temp + matrix[row_pos][col_pos+1:]
        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

  1. পাইথনে হিপ লিস্ট ম্যাক্স হিপ কিনা চেক করা

  2. পাইথনে একটি সংখ্যা ডাইহেড্রাল প্রাইম (Dihedral Prime) কিনা যাচাই করা

  3. পাইথনে সুডোকু গ্রিড বৈধ (Valid) কিনা যাচাই করা

  4. পাইথন ভেরিয়েবল অস্তিত্ব আছে কিনা যাচাই করার পদ্ধতি