কম্পিউটার

পাইথনে বেসবল গেম


ধরুন আমাদের একটি বেসবল গেম পয়েন্ট রেকর্ডার আছে। আমরা স্ট্রিং একটি তালিকা আছে; প্রতিটি স্ট্রিং নিম্নলিখিত 4 প্রকারের একটি হতে পারে -

  • পূর্ণসংখ্যা (এক রাউন্ডের স্কোর) - এই রাউন্ডে আমরা কতগুলি পয়েন্ট পেয়েছি তা নির্দেশ করে।
  • "+" (এক রাউন্ডের স্কোর) − এই রাউন্ডে আমরা যে পয়েন্টগুলি পাই তা শেষ দুটি বৈধ রাউন্ডের পয়েন্টের সমষ্টিকে নির্দেশ করে৷
  • "D" (এক রাউন্ডের স্কোর ) − এই রাউন্ডে আমরা যে পয়েন্টগুলি পেয়েছি তা হল শেষ বৈধ রাউন্ডের পয়েন্টের দ্বিগুণ ডেটা।
  • "C" (একটি অপারেশন, যা একটি রাউন্ডের স্কোর নয়) − নির্দেশ করে যে শেষ বৈধ রাউন্ডের পয়েন্টগুলি আমরা পেয়েছি তা অবৈধ ছিল এবং সরিয়ে দেওয়া উচিত৷

মনে রাখবেন যে প্রতিটি রাউন্ডের অপারেশন স্থায়ী এবং রাউন্ডের আগে এবং পরে রাউন্ডের উপর প্রভাব ফেলতে পারে। সমস্ত রাউন্ডে আমরা যে পয়েন্ট পেতে পারি তার যোগফল আমাদের খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি ["5","2","C","D","+"] এর মত হয়, তাহলে আউটপুট হবে 30। এটি আসলে

এর জন্য।
  • রাউন্ড 1 - আমরা 5 পয়েন্ট পেতে পারি। যোগফল হল:5।
  • রাউন্ড 2 - আমরা 2 পয়েন্ট পেতে পারি। যোগফল হল:7।
  • অপারেশন 1 - রাউন্ড 2-এর ডেটা অবৈধ ছিল। যোগফল হল:5।
  • রাউন্ড 3 - আমরা 10 পয়েন্ট পেতে পারি। যোগফল হল:15।
  • রাউন্ড 4 − আমরা 5 + 10 =15 পয়েন্ট পেতে পারি। যোগফল হল:30।

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

  • স্ট্যাক :=খালি তালিকা
  • প্রত্যেক i অপারেশনের জন্য, করুন
    • যদি আমি "+" এর মত হয়, তাহলে
      • প্রথম :=স্ট্যাক[স্ট্যাকের আকার - 1], দ্বিতীয় :=স্ট্যাক[স্ট্যাকের আকার - 2]
      • শেষে স্ট্যাকের মধ্যে (প্রথম + দ্বিতীয়) ঢোকান
    • অন্যথায় যখন আমি "D" এর মতো, তখন
      • শেষে স্ট্যাকের মধ্যে (স্ট্যাক * 2 এর শেষ উপাদান) সন্নিবেশ করুন
    • অন্যথায় যখন আমি "C" এর মতো, তারপর
      • স্ট্যাক থেকে শেষ উপাদান মুছুন
    • অন্যথায়,
      • শেষে স্ট্যাকের মধ্যে i ঢোকান
  • স্ট্যাকের সমস্ত উপাদানের যোগফল ফেরত দিন

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

উদাহরণ

class Solution:
   def calPoints(self, ops):
      stack = []
      for i in ops:
         if i == "+":
            first, second = stack[len(stack) - 1],
            stack[len(stack) - 2]
            stack.append(first + second)
         elif i == "D":
            stack.append(stack[-1] * 2)
         elif i == "C":
            stack.pop()
         else:
            stack.append(int(i))
      return sum(stack)
ob = Solution()
print(ob.calPoints(["5","2","C","D","+"]))

ইনপুট

["5","2","C","D","+"]

আউটপুট

30

  1. পাইথনে হিস্টোগ্রামে সবচেয়ে বড় আয়তক্ষেত্র

  2. পাইথনে বৃষ্টির পানি আটকানো

  3. পাইথনে বাইনারি ট্রি কালারিং গেম

  4. পাইথনে Tkinter ব্যবহার করে রঙিন খেলা