Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

บอสต่อสู้ใน Python


สมมติว่าเรามีรายการไบนารีที่เรียกว่าไฟท์เตอร์ และรายการไบนารีอีกรายการที่เรียกว่าบอส ในรายการนักสู้ 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 :=ผลรวมขององค์ประกอบทั้งหมดของนักสู้

  • ผลลัพธ์ :=รายการใหม่

  • สำหรับแต่ละแถวในบอส ทำ

    • ถ้า 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]]