কম্পিউটার

পাইথনে দুটি স্ট্রিং থেকে প্রিফিক্স কম্প্রেশন করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি স্ট্রিং আছে s এবং t (উভয়টিতেই ছোট হাতের ইংরেজি অক্ষর রয়েছে)। আমাদের 3 আকারের জোড়ার একটি তালিকা খুঁজে বের করতে হবে, যেখানে প্রতিটি জোড়া এই ফর্মে রয়েছে (l, k) এখানে k একটি স্ট্রিং এবং l এর দৈর্ঘ্য। এখন এই তিনটি জোড়ার মধ্যে, প্রথমটিতে s এবং t এর সাবস্ট্রিং রয়েছে যা এই দুটি স্ট্রিংয়ের সবচেয়ে দীর্ঘতম সাধারণ উপসর্গ p, তারপর s এর অবশিষ্ট অংশটি s' এবং t এর অবশিষ্ট অংশটি হল t'। তাই চূড়ান্ত তালিকা হবে [(p, p এর দৈর্ঘ্য), (s', s' এর দৈর্ঘ্য), (t', t' এর দৈর্ঘ্য)]।

সুতরাং, যদি ইনপুটটি s ="science" t ="school" এর মত হয়, তাহলে আউটপুট হবে [(2, 'sc'), (5, 'ience'), (4, 'hool')]

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

  • lcp :=ফাঁকা স্ট্রিং
  • আমি 0 থেকে ন্যূনতম s বা t আকারের রেঞ্জের জন্য, কর
    • যদি s[i] t[i] এর মত হয়, তাহলে
      • lcp :=lcp + s[i]
  • s_rem :=সূচী থেকে s এর সাবস্ট্রিং (lcp এর আকার) শেষ পর্যন্ত
  • t_rem :=সূচী থেকে t এর সাবস্ট্রিং (lcp এর আকার) শেষ হতে
  • তিন জোড়ার একটি তালিকা ফেরত দিন [(lcp , lcp এর আকার), (s_rem , s_rem) ,(t_rem , t_rem এর আকার)]

উদাহরণ

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

def solve(s, t):
   lcp = ''
   for i in range(min(len(s), len(t))):
      if s[i] == t[i]:
         lcp += s[i]

   s_rem = s[len(lcp):]
   t_rem = t[len(lcp):]
   return [(len(lcp), lcp), (len(s_rem), s_rem), (len(t_rem), t_rem)]

s = "science"
t = "school"
print(solve(s, t))

ইনপুট

"science", "school"

আউটপুট

[(2, 'sc'), (5, 'ience'), (4, 'hool')]

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

  2. পাইথন প্রোগ্রাম দুটি অভিধানকে একত্রিত করতে

  3. দুটি ম্যাট্রিক্সের পাইথন প্রোগ্রাম সংযোজন

  4. পাইথন প্রোগ্রাম দুটি ম্যাট্রিক্সের গুণন।