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

โปรแกรมเช็คว่าผู้เล่นคนแรกชนะในเกมแคนดี้รีมูฟหรือไม่ใน Python?


สมมติว่าเรามีรายการหมายเลขที่เรียกว่าลูกกวาดและมีคนกำลังเล่นเกมกับเพื่อนของเขา/เธอ ในแต่ละรอบ ผู้เล่นสามารถถอดลูกอมสองอันที่ต่อเนื่องกันที่มีค่าเท่ากันได้ และใครก็ตามที่ไม่สามารถหยิบลูกกวาดได้จะแพ้และผู้เล่นคนนั้นที่ 1 เริ่มก่อน เราต้องตรวจสอบว่าผู้เล่นที่ 1 จะชนะหรือไม่

ดังนั้น หากอินพุตเป็น nums =[2, 2, 5] เอาต์พุตจะเป็น True ราวกับว่าผู้เล่น 1 เลือก 2s ผู้เล่นอีกคนจะไม่สามารถเลือกแคนดี้ได้

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • stack :=สแต็คใหม่

  • เปลี่ยน :=0

  • สำหรับแต่ละ num เป็น num ทำ

    • ถ้า stack ไม่ว่างและด้านบนของ stack เหมือนกับ num แล้ว

      • ป๊อปจากสแต็ก

      • เทิร์น :=เทิร์น + 1

    • มิฉะนั้น

      • ดัน num เข้า stack

  • คืนค่า จริง เมื่อผลัดกันเป็นคี่ มิฉะนั้น เท็จ


ตัวอย่าง

class Solution:
   def solve(self, nums):
      stack = []
      turns = 0
      for num in nums:
         if stack and stack[-1] == num:
            stack.pop()
            turns += 1
         else:
            stack.append(num)

      return bool(turns & 1)

ob = Solution()
nums = [2, 2, 5]
print(ob.solve(nums))

อินพุต

[2, 2, 5]

ผลลัพธ์

True