কম্পিউটার

পাইথনে শেষ পাথরের ওজন


ধরুন আমাদের কিছু শিলা আছে, প্রতিটি শিলার একটি ধনাত্মক পূর্ণসংখ্যা ওজন আছে। প্রতিটি পালা, আমরা দুটি ভারী পাথর নেব এবং তাদের একসাথে ভেঙে ফেলব। বিবেচনা করুন পাথরের ওজন x এবং y এবং x <=y। এই স্ম্যাশের ফলাফল দুই ধরনের হতে পারে।

  • যদি x =y হয়, তাহলে উভয় পাথরই সম্পূর্ণ ধ্বংস হয়ে যায়;
  • অন্যথায় যখন x !=y, ওজন x এর পাথরটি সম্পূর্ণরূপে ধ্বংস হয়ে যায় এবং ওজন y এর পাথরের নতুন ওজন y-x হয়।

অবশেষে, সর্বাধিক 1টি পাথর বাকি আছে। আমাদের এই পাথরের ওজন খুঁজে বের করতে হবে (কোনও পাথর না থাকলে 0।)

সুতরাং যদি পাথরের ওজন হয় [2,7,4,1,8,1], তাহলে ফলাফল 1 হবে। প্রথমে 7 এবং 8 নির্বাচন করুন, তারপর 1 পাবেন, সুতরাং অ্যারে হবে [2,4,1,1] ,1], দ্বিতীয়ত 2 এবং 4 নিন। অ্যারেটি হবে [2,1,1,1], তারপর 2 এবং 1 নির্বাচন করুন, অ্যারে হবে [1,1,1], তারপর ওজন 1 সহ দুটি পাথর নির্বাচন করুন, তারপর উভয়ই ধ্বংস হয়ে যাবে, তাই অ্যারে হবে [1]। এই হল উত্তর

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

  • স্টোন ওয়েট অ্যারে W এর কোনো উপাদান না থাকলে, 0 ফেরত দিন
  • যদি W এর শুধুমাত্র একটি উপাদান থাকে তাহলে W[0] ফেরত দিন।
  • যদিও W এর একাধিক উপাদান আছে −
    • বাছাই W
    • s1 :=W এর শেষ উপাদান, s2 :=W এর দ্বিতীয় শেষ উপাদান
    • যদি s1 =s2 হয়, তাহলে W থেকে s1 এবং s2 সরিয়ে দিন
    • অন্যথায় s1 :=|s1 – s2|, W থেকে শেষ উপাদানটি সরান, তারপর s1 কে W এর শেষ উপাদান হিসাবে সেট করুন
  • যদি W একটি উপাদান থাকে, তাহলে সেই উপাদানটি ফেরত দিন, অন্যথায় 0 দিন

উদাহরণ

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

class Solution(object):
   def lastStoneWeight(self, stones):
      """
      :type stones: List[int]
      :rtype: int
      """
      if len(stones) ==0:
         return 0
      if len(stones) == 1:
         return 1
      while len(stones)>1:
         stones.sort()
         s1,s2=stones[-1],stones[-2]
         if s1==s2:
            stones.pop(-1)
            stones.pop(-1)
         else:
            s1 = abs(s1-s2)
            stones.pop(-1)
            stones[-1] = s1
      if len(stones):
         return stones[-1]
      return 0
ob1 = Solution()
print(ob1.lastStoneWeight([2,7,4,1,6,1]))

ইনপুট

[2,7,4,1,6,1]

আউটপুট

1

  1. পাইথনে গয়না ও পাথর

  2. পাইথন প্রোগ্রাম একটি তালিকার প্রথম এবং শেষ উপাদান বিনিময় করতে

  3. কিভাবে পাইথনে একটি তালিকার শেষ উপাদান পেতে?

  4. কিভাবে পাইথনে এক মাসের শেষ দিন পাবেন?