কম্পিউটার

পাইথনে দুটি অ্যারে সমষ্টি সমান করার জন্য প্রয়োজনীয় ন্যূনতম ক্রিয়াকলাপ খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি তালিকা আছে nums1 এবং nums2 যেখানে প্রতিটি তালিকার প্রতিটি উপাদান 1 থেকে 6 রেঞ্জের মধ্যে রয়েছে। এখন একটি অপারেশন বিবেচনা করুন যার মাধ্যমে আমরা nums1 বা nums2 থেকে একটি সংখ্যা নির্বাচন করতে পারি এবং এর মান 1 থেকে 6 এর মধ্যে একটি সংখ্যায় আপডেট করতে পারি। আমাদের প্রয়োজন ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করতে হবে যাতে এই দুটি অ্যারের যোগফল একই হয়। যদি আমরা কোন সমাধান খুঁজে না পাই, ফিরে আসুন -1।

সুতরাং, ইনপুট যদি nums1 =[1, 4] nums2 =[5, 4, 4] এর মত হয়, তাহলে আউটপুট হবে 2, কারণ আমরা 1 থেকে nums1 থেকে 6 করতে পারি, তাই nums1 এর যোগফল 10, তারপর পরিবর্তন করুন। সংখ্যা 2 থেকে 1 পর্যন্ত যেকোনো একটি 4, তাই এর যোগফলও 10

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

  • sa :=সংখ্যা1তে উপস্থিত সমস্ত উপাদানের যোগফল

  • sb :=সংখ্যা2 এ উপস্থিত সমস্ত উপাদানের যোগফল

  • যদি sa> sb, তাহলে

    • অদলবদল সংখ্যা1 এবং সংখ্যা2

    • sa এবং sb অদলবদল করুন

  • তালিকার সংখ্যা ১

    সাজান
  • তালিকার সংখ্যা2কে বিপরীত ক্রমে সাজান

  • res :=0

  • toadd :=sb - sa

  • i :=0, j :=0

  • যখন toad>0, do

    • res :=res + 1

    • যদি i

      • resa :=6 - সংখ্যা1[i]

      • resb :=nums2[j] - 1

      • যদি resa> resb, তাহলে

        • toadd :=toadd - resa

        • i :=i + 1

      • অন্যথায়,

        • toadd :=toadd - resb

        • j :=j + 1

      • অন্যথায় যখন আমি

        • resa :=6 - সংখ্যা1[i]

        • toadd :=toadd - resa

        • i :=i + 1

      • অন্যথায় যখন j

        • resb :=nums2[j] - 1

        • toadd :=toadd - resb

        • j :=j + 1

      • অন্যথায়,

        • রিটার্ন -1

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

উদাহরণ

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

def solve(nums1, nums2):
   sa = sum(nums1)
   sb = sum(nums2)
   if sa > sb:
      nums1, nums2 = nums2, nums1
      sa, sb = sb, sa

   nums1.sort()
   nums2.sort(reverse=True)
   res = 0
   toadd = sb - sa
   i = 0
   j = 0
   while toadd > 0:
      res += 1
      if i < len(nums1) and j < len(nums2):
         resa = 6 - nums1[i]
         resb = nums2[j] - 1
         if resa > resb:
            toadd -= resa
            i += 1
         else:
            toadd -= resb
            j += 1
      elif i < len(nums1):
         resa = 6 - nums1[i]
         toadd -= resa
         i += 1
      elif j < len(nums2):
         resb = nums2[j] - 1
         toadd -= resb
         j += 1
      else:
         return -1

   return res

nums1 = [1, 4]
nums2 = [5, 4, 4]
print(solve(nums1, nums2))

ইনপুট

[2,1,4,3,5,4]

আউটপুট

2

  1. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি স্ট্রিং সাবস্ট্রিং অন্যটির জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দুটি স্ট্রিং সমান করতে প্রয়োজনীয় ন্যূনতম সংখ্যক প্রিপ্রসেস চালনা খুঁজুন

  4. প্রদত্ত দুটি অ্যারে থেকে সাব-অ্যারে খুঁজুন যেমন তাদের পাইথনে সমান যোগফল রয়েছে