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

เกมของบอบ (Bob's Game) ใน Python

ภาพรวม

บอบมีลิสต์ตัวเลข แต่ละรอบเลือก 2 ตัวแทนที่ด้วย 1 จำนวนบวกที่มีผลรวมเท่าเดิม ชนะเมื่อทุกตัวเป็นเลขคู่ หาจำนวนรอบน้อยที่สุด หรือ -1 ถ้าไม่ได้

ข้อสังเกตสำคัญ

  • เลขคู่ + เลขคู่ = เลขคู่ ✓
  • เลขคี่ + เลขคี่ = เลขคู่ ✓
  • เลขคู่ + เลขคี่ = เลขคี่ ✗

ดังนั้น ต้องจับคู่เลขคี่กับเลขคี่ ถ้าจำนวนเลขคี่เป็นคี่ → ไม่ได้ (คืน -1)

ถ้าเป็นคู่ → ต้องใช้รอบ = (จำนวนเลขคี่) / 2

ตัวอย่าง

อินพุต: [2, 3, 4, 9, 7, 13]

เลขคี่: 3, 9, 7, 13 (4 ตัว → คู่)

รอบ = 4/2 = 2

รอบ 1: 3+9=12 (คู่), รอบ 2: 7+13=20 (คู่)

โค้ด Python

class Solution:
    def solve(self, nums):
        a = [x for x in nums if x % 2 == 1]
        if len(a) % 2 == 0:
            return len(a) // 2
        return -1

ob = Solution()
print(ob.solve([2, 3, 4, 9, 7, 13]))

หมายเหตุ

  • โค้ดต้นฉบับมี bug: return len(a)/2 คืน float ควรเป็น //
  • ไม่ต้องสนใจลำดับการจับคู่ ผลรวมคู่ของคี่+คี่จะเป็นคู่เสมอ

ผลลัพธ์

2