কম্পিউটার

পাইথনে বস ফাইট


ধরুন আমাদের কাছে ফাইটার নামে একটি বাইনারি তালিকা আছে এবং বাইনারি তালিকার আরেকটি তালিকা আছে যাকে বস বলা হয়। যোদ্ধা তালিকায় 1 একজন যোদ্ধাকে প্রতিনিধিত্ব করছে। একইভাবে, বসের তালিকায় 1 একজন বসকে প্রতিনিধিত্ব করে। সেই যোদ্ধারা বসের সারিকে পরাজিত করতে পারে যদি এতে বসদের চেয়ে বেশি যোদ্ধা থাকে। পরাজিত বসের সারি মুছে দিয়ে আমাদের একটি নতুন বস ম্যাট্রিক্স ফেরত দিতে হবে।

সুতরাং, যদি ইনপুট ফাইটারের মত হয় =[0,1,1]

0 1 1
0 0 0
0 0 1
0 1 1
1 1 1

তাহলে আউটপুট হবে

0 1 1
1 1 1

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

  • fighter_cnt :=যোদ্ধাদের সকল উপাদানের যোগফল

  • ফলাফল :=একটি নতুন তালিকা

  • বসের প্রতিটি সারির জন্য, করুন

    • যদি ফাইটার_সিএনটি <=সারিতে প্রতিটি উপাদানের যোগফল হয়, তাহলে

      • ফলাফলের শেষে সারি ঢোকান

  • ফেরত ফলাফল

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

উদাহরণ

class Solution:
   def solve(self, fighters, bosses):
      fighter_cnt = sum(fighters)
      result = []
      for row in bosses:
         if fighter_cnt <= sum(row):
            result.append(row)
      return result
ob = Solution()
fighters = [0, 1, 1]
bosses = [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]
print(ob.solve(fighters, bosses))

ইনপুট

[0, 1, 1], [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]

আউটপুট

[[0, 1, 1], [1, 1, 1]]

  1. issuperset() পাইথনে

  2. কলযোগ্য() পাইথনে

  3. পাইথনে আন্ডারস্কোর(_)

  4. পাইথনে কুইন