Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में S-एक्सप्रेशन को स्ट्रिंग के रूप में मूल्यांकन करने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है जो S-एक्सप्रेशन है। हमें उस S-एक्सप्रेशन का मूल्यांकन करना है और परिणाम को पूर्णांक के रूप में वापस करना है। जैसा कि हम जानते हैं, S-एक्सप्रेशन या तो एक संख्या होती है, या कोष्ठक में लिपटा एक पुनरावर्ती एक्सप्रेशन जैसे (+ (- 3 2) (* 3 3)), जो (3 - 2) + (3 * 3) = 10 दर्शाता है। यहां मान्य ऑपरेटर +, -, *, और / हैं।

उदाहरण के लिए, यदि इनपुट है s = "(- (+ 3 2) 2)", तो आउटपुट 3 होगा, क्योंकि ((3 + 2) - 2) = 3।

एल्गोरिदम

  • stack := नया स्टैक
  • s से आरंभिक और अंतिम कोष्ठक हटाएं
  • a := s को स्पेस से विभाजित करके पार्टिशन की सूची बनाएं
  • a के प्रत्येक तत्व को रिवर्स ऑर्डर में प्रोसेस करें:
    • यदि तत्व की लंबाई > 1 है और यह '-' से शुरू होता है, तो इसे पूर्णांक के रूप में स्टैक में डालें
    • अन्यथा यदि यह अंक है, तो पूर्णांक के रूप में स्टैक में डालें
    • अन्यथा (यह ऑपरेटर है), स्टैक से दो संख्याएं पॉप करें, ऑपरेशन करें, और परिणाम को स्टैक में वापस डालें
  • स्टैक के शीर्ष तत्व को वापस करें

उदाहरण

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. पायथन प्रोग्राम: हेक्साडेसिमल स्ट्रिंग को दशमलव में बदलें पायथन प्रोग्राम: हेक्साडेसिमल स्ट्रिंग को दशमलव में बदलें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक हेक्साडेसिमल स्ट्रिंग दी गई है, जिसे उसके दशमलव समकक्ष में बदलना है। इस समस्या को हल करने के दो दृष्टिकोण हैं: ब्रूट-फोर्स दृष्टिकोण बिल्ट-इन मॉड्यूल का उपयोग ब्रूट-फोर्स विधि यहां हम स्पष्ट टाइप कास्टिंग फ़ंक्शन int() की

  1. - पायथन प्रोग्राम: स्ट्रिंग में URL चेक करना

    इस मामले में हम पायथन में re मॉड्यूल का उपयोग करते हैं। यहां हम एक स्ट्रिंग स्वीकार करते हैं और चेक करते हैं कि स्ट्रिंग में कोई URL है या नहीं। यदि स्ट्रिंग में URL मौजूद है तो प्रदर्शित करें। हम इस समस्या को हल करने के लिए findall() मेथड का उपयोग करते हैं।एल्गोरिदमचरण 1: इनपुट के रूप में स्ट्रिंग

  1. - पायथन प्रोग्राम: स्ट्रिंग में मिरर कैरेक्टर्स खोजना

    एक यूजर इनपुट स्ट्रिंग और पोजिशन दी गई है, उस पोजिशन से हमें स्ट्रिंग की लंबाई तक अल्फाबेटिकल ऑर्डर में कैरेक्टर्स को मिरर करना है। इस ऑपरेशन में, हम a को z में, b को y में, c को x में, d को w में बदलते हैं और इसी तरह, यानी पहला कैरेक्टर लास्ट बन जाता है और इसी तरह।Input: p = 3 Input string = python