কম্পিউটার

পাইথনে রান লেন্থ এনকোডেড ভেক্টরের ডট প্রোডাক্ট খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের দুটি তালিকা আছে nums1 এবং nums2। এই দুটি তালিকার প্রতিটি রান-দৈর্ঘ্য এনকোডেড আকারে একটি ভেক্টর প্রতিনিধিত্ব করছে। সুতরাং একটি উদাহরণ হিসাবে, একটি ভেক্টর [1, 1, 1, 2, 2, 2, 2] [3, 1, 4, 2] হিসাবে উপস্থাপন করা হয়। (কারণ 3টি এক এবং 4টি দুটি)। তাই আমাদের এই দুটি ভেক্টরের ডট গুণফল বের করতে হবে। (ডট পণ্য দুটি ভেক্টরে উপস্থিত আইটেমগুলির উপাদান অনুসারে গুণের সমষ্টি)।

সুতরাং, যদি ইনপুটটি nums1 =[2, 7, 5, 3] nums2 =[3, 5, 4, 2] এর মত হয়, তাহলে আউটপুট হবে 109 কারণ, ভেক্টরগুলি হল [7, 7, 3, 3] , 3, 3, 3] • [5, 5, 5, 2, 2, 2, 2] =7*5 + 7*5 + 3*5 + 3*2 + 3*2 + 3*2 + 3* 2 =35 + 35 + 15 + 6 + 6 + 6 + 6 =109।

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

  • উত্তর :=0
  • যদিও nums1 এবং nums2 উভয়ই খালি নয়, do
    • val1 :=nums1 থেকে শেষ উপাদান এবং শেষ আইটেমটি মুছে দিন
    • count1 :=nums1 থেকে শেষ উপাদান এবং শেষ আইটেমটি মুছে দিন
    • val2 :=nums2 থেকে শেষ উপাদান এবং শেষ আইটেমটি মুছে দিন
    • count2 :=nums2 থেকে শেষ উপাদান এবং শেষ আইটেমটি মুছে দিন
    • উত্তর :=ans + (val1 * val2) * (সর্বনিম্ন গণনা2 এবং গণনা1)
    • যদি count2> count1, তারপর
      • ঢোকান |count2 - count1| সংখ্যা2 এর শেষে
      • সংখ্যা2 এর শেষে val2 ঢোকান
    • অন্যথায় যখন count1> count2, তারপর
      • ঢোকান |count2 - count1| সংখ্যা1 এর শেষে
      • সংখ্যা1-এর শেষে val1 ঢোকান
  • উত্তর ফেরত দিন

উদাহরণ

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

def solve(nums1, nums2):
   ans = 0

   while nums1 and nums2:
      val1 = nums1.pop()
      count1 = nums1.pop()
      val2 = nums2.pop()
      count2 = nums2.pop()

      ans += (val1 * val2) * min(count2, count1)

      if count2 > count1:
         nums2.append(abs(count2 - count1))
         nums2.append(val2)
      elif count1 > count2:
         nums1.append(abs(count2 - count1))
         nums1.append(val1)

   return ans

nums1 = [2, 7, 5, 3]
nums2 = [3, 5, 4, 2]
print(solve(nums1, nums2))

ইনপুট

[2, 7, 5, 3], [3, 5, 4, 2]

আউটপুট

109

  1. পাইথনে ক্ষুদ্রতম চক্রের দৈর্ঘ্য ধরে রাখার লক্ষ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে k বিট ফ্লিপ করে 1s-এর দীর্ঘতম সেটের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে অ-ভাগ করা শব্দের সর্বাধিক দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিং এর দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম