কম্পিউটার

পাইথন ব্যবহার করে প্যালিনড্রোম তৈরি করতে দুটি স্ট্রিং বিভক্ত করার প্রোগ্রাম


ধরুন আমাদের দুটি স্ট্রিং আছে a এবং b যার দৈর্ঘ্য একই। আমাদের একটি সূচক নির্বাচন করতে হবে এবং সেই নির্বাচিত সূচকে উভয় স্ট্রিংকে বিভক্ত করতে হবে, একটিকে দুটি স্ট্রিংয়ে বিভক্ত করতে হবে:a_pref এবং a_suff যেখানে a =a_pref | a_suff, এবং b কে দুটি স্ট্রিংয়ে বিভক্ত করা:b_pref | b_suff (| হল কনক্যাটেনেশন অপারেটর) যেখানে b =b_pref + b_suff। a_pref + b_suff বা b_pref + a_suff একটি প্যালিনড্রোম গঠন করে কিনা তা পরীক্ষা করুন। (যেকোনো বিভাজন একটি খালি স্ট্রিং হতে পারে)

সুতরাং, যদি ইনপুটটি a ="pqrst" b ="turqp" এর মতো হয়, তবে আউটপুটটি True হবে কারণ আমরা একটি লাইক ["pq", "rst"] এবং b এর মতো ["tu", "rqp" ভাগ করতে পারি। ], তাই যদি আমরা b_suff এর সাথে a_pref যোগ করি, তাহলে আমরা "pqrqp" পাব যা একটি প্যালিনড্রোম।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • জোড়ার তালিকা থেকে প্রতিটি জোড়ার জন্য (x, y) [(a, b), (b, a)], do

    • i :=0, j :=x - 1

      এর আকার
    • যখন x[i] y[j] এবং i 0 এর আকারের সমান, do

      • i :=i + 1

      • j :=j - 1

    • midx :=সূচী i থেকে j

      পর্যন্ত x এর সাবস্ট্রিং
    • midy :=সূচক i থেকে j

      পর্যন্ত y এর সাবস্ট্রিং
    • যদি মিডএক্স প্যালিনড্রোম হয় বা মিডি প্যালিনড্রোম হয়, তাহলে

      • রিটার্ন ট্রু

  • রিটার্ন ফলস

উদাহরণ

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

def solve(a, b):
   for x, y in [[a, b], [b, a]]:
      i, j = 0, len(x) - 1
      while x[i] == y[j] and i<len(x) and j>0:
         i += 1
         j -= 1
      midx = x[i:j+1]
      midy = y[i:j+1]
      if (midx == midx[::-1] or midy== midy[::-1]):
         return True
   return False

a = "pqrst"
b = "turqp"
print(solve(a, b))

ইনপুট

"pqrst", "turqp"

আউটপুট

True

  1. পাইথন ব্যবহার করে পাশাপাশি দুটি প্লট কীভাবে তৈরি করবেন?

  2. দুটি স্ট্রিং থেকে অস্বাভাবিক শব্দ খুঁজে পেতে পাইথন প্রোগ্রাম

  3. Python 3.x-এ Counter() ব্যবহার করা। দুটি স্ট্রিং অ্যানাগ্রাম করতে সর্বনিম্ন অক্ষর অপসারণ খুঁজে বের করতে

  4. পাইথনে রেজেক্স ব্যবহার করে দুটি স্ট্রিং কীভাবে তুলনা করবেন?