কম্পিউটার

পাইথনে স্ট্রিং হিসাবে s-এক্সপ্রেশন মূল্যায়ন করার প্রোগ্রাম


ধরুন আমাদের কাছে S-এক্সপ্রেশন হিসেবে একটি স্ট্রিং আছে। আমাদের সেই S-এক্সপ্রেশন এবং রিটার্ন ফলাফলকে পূর্ণসংখ্যা হিসাবে মূল্যায়ন করতে হবে। আমরা জানি যে s-এক্সপ্রেশন হল একটি রাশি যা হয় একটি সংখ্যা, অথবা (+ (- 3 2) (* 3 3)) এর মতো বন্ধনীতে মোড়ানো একটি পুনরাবৃত্তিমূলক অভিব্যক্তি, যা নির্দেশ করে (3 - 2) + (3 * 3) =10. এখানে বৈধ অপারেটর হল +, -, *, এবং /।

সুতরাং, যদি ইনপুট s ="(- (+ 3 2) 2)" এর মত হয়, তাহলে আউটপুট হবে 3, যেমন ((3 + 2) - 2) =3।

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

  • স্ট্যাক :=একটি নতুন স্ট্যাক

  • s

    এর প্রারম্ভিক এবং বন্ধ বন্ধনী অপসারণ করুন
  • a :=স্পেস ব্যবহার করে বিভক্ত করুন এবং পার্টিশনের একটি তালিকা তৈরি করুন

  • প্রতিটি i জন্য বিপরীত ক্রমে, করুন

    • যদি i> 1 এর আকার হয়, তাহলে

      • যদি i[0] হয় "-", তাহলে

        • স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন

        • পরবর্তী পুনরাবৃত্তির জন্য যান

      • অন্যথায়,

        • স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন

    • অন্যথায় যখন আমি একটি সংখ্যা, তারপর

      • স্ট্যাকের মধ্যে পূর্ণসংখ্যা হিসাবে i পুশ করুন

    • অন্যথায়,

      • যদি স্ট্যাকের আকার>=2, তাহলে

        • num1 :=স্ট্যাক থেকে পপ

        • num2 :=স্ট্যাক থেকে পপ

        • যদি আমি "+" এর মত হয়, তাহলে

          • num1 + num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন

        • অন্যথায় যখন আমি "-" এর মতই থাকি তখন

          • num1 - num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন

        • অন্যথায় যখন আমি "*" এর মতই থাকি, তখন

          • num1 * num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন

        • অন্যথায়,

          • num1 / num2 সম্পাদন করুন এবং স্ট্যাকের মধ্যে পুশ করুন

  • স্ট্যাক থেকে শীর্ষ উপাদান ফিরিয়ে আনুন, এবং শীর্ষ উপাদান সরান

উদাহরণ

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

class Solution:
   def solve(self, s):
      stack = list()
      s = s.replace("(", "")
      s = s.replace(")", "")
      a = s.split()
      for i in a[::-1]:
         if len(i) > 1:
            if i[0] == "-":
               stack.append(int(i))
               continue
            else:
               stack.append(int(i))
         elif i.isdigit():
            stack.append(int(i))
         else:
            if len(stack) >= 2:
               num1 = stack.pop()
               num2 = stack.pop()
               if i == "+":
                  stack.append(int(num1 + num2))
               elif i == "-":
                  stack.append(int(num1 - num2))
               elif i == "*":
                  stack.append(int(num1 * num2))
               else:
                  stack.append(int(num1 / num2))
      return stack.pop()
ob = Solution()
s = "(- (+ 3 2) 2)"
print(ob.solve(s))

ইনপুট

s = "(- (+ 3 2) 2)"

আউটপুট

3

  1. হেক্স স্ট্রিংকে দশমিকে রূপান্তর করতে পাইথন প্রোগ্রাম

  2. একটি স্ট্রিং-এ একটি শব্দের উপস্থিতি গণনা করার জন্য পাইথন প্রোগ্রাম

  3. পাইথন প্রোগ্রাম একটি স্ট্রিং মধ্যে ইউআরএল চেক করতে

  4. একটি স্ট্রিং মধ্যে মিরর অক্ষর খুঁজে পেতে পাইথন প্রোগ্রাম