কম্পিউটার

পাইথনে একটি গ্রিডে একটি শব্দ বিদ্যমান কিনা তা পরীক্ষা করুন


ধরুন, আমাদের একটি গ্রিড বা শব্দের একটি ম্যাট্রিক্স আছে। একটি প্রদত্ত শব্দ গ্রিডে উপস্থিত আছে কি না তা আমাদের পরীক্ষা করতে হবে। শব্দটি চারটি উপায়ে পাওয়া যাবে, অনুভূমিকভাবে বাম এবং ডান এবং উল্লম্বভাবে উপরে এবং নীচে। যদি আমরা শব্দটি খুঁজে পাই তবে আমরা সত্য ফেরত দিই, অন্যথায় মিথ্যা।

সুতরাং, যদি ইনপুট মত হয়

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> 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 হয়), তাহলে
          • সত্য ফেরান
  • মিথ্যে ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

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

  1. হিপ চেক করার প্রোগ্রামটি পাইথনে সর্বোচ্চ হিপ তৈরি করছে নাকি নয়

  2. পাইথনে N একটি ডিহেড্রাল প্রাইম নম্বর কিনা তা পরীক্ষা করুন

  3. একটি সুডোকু গ্রিড যাচাই করার প্রোগ্রামটি পাইথনে সমাধানযোগ্য বা নয়

  4. একটি পাইথন ভেরিয়েবল বিদ্যমান কিনা আমি কিভাবে পরীক্ষা করব?