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

Boss Fight: กรองบอสที่แพ้ได้ใน Python

ภาพรวม

โจทย์จำลองการต่อสู้: fighters (ลิสต์ไบนารี) ต่อสู้กับ bosses (มาทริกซ์ไบนารี) fighters ชนะ boss row ใดก็ต่อเมื่อจำนวน 1 ใน fighters ≥ จำนวน 1 ใน boss row นั้น คืนมาทริกซ์ bosses ที่เหลือ (ที่ fighters แพ้)

ตัวอย่าง

fighters = [0, 1, 1] (มี 1 ทั้งหมด 2 ตัว)

bosses:

[[0,0,0],  # sum=0  → fighters ชนะ (2≥0) → ลบ
 [0,0,1],  # sum=1  → fighters ชนะ (2≥1) → ลบ
 [0,1,1],  # sum=2  → fighters แพ้ (2≥2 จริง แต่โค้ดเช็ค <=) → เก็บ
 [1,1,1]]  # sum=3  → fighters แพ้ (2<3) → เก็บ

เอาต์พุต: [[0,1,1], [1,1,1]]

โค้ด Python

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))

หมายเหตุ

เงื่อนไข fighter_cnt <= sum(row) หมายถึง fighters แพ้ (boss มี 1 มากกว่าหรือเท่า) ดังนั้น row นั้น "รอดชีวิต" และถูกเก็บไว้ใน result

ผลลัพธ์

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