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

पायथन में दिए गए स्टैक ऑपरेशंस को निष्पादित करके अंतिम उत्तर की जांच करने का कार्यक्रम

मान लीजिए कि हमारे पास ऑप्स नामक स्ट्रिंग की एक सूची है, जहां प्रत्येक तत्व नीचे दिए गए इन कार्यों में से कोई एक है -

  • एक गैर-ऋणात्मक पूर्णांक मान जिसे एक स्टैक में धकेल दिया जाएगा
  • "POP" स्टैक से सबसे ऊपरी तत्व को हटाने के लिए
  • "DUP" शीर्ष तत्व को फिर से स्टैक में डालने के लिए, इसे डुप्लिकेट बनाने के लिए
  • "+" शीर्ष दो तत्वों को बाहर निकालने के लिए और योग मान को पुश करने के लिए
  • "-" शीर्ष दो तत्वों को पॉप आउट करने के लिए और (शीर्ष तत्व - तत्व शीर्ष के ठीक नीचे) के परिणाम को पुश करने के लिए

इसलिए हमें इन सभी ऑपरेशनों को लागू करने के बाद स्टैक में शीर्ष प्रेरक तत्व को खोजना होगा। अगर कुछ ऑपरेशन मान्य नहीं हैं तो -1 लौटें।

इसलिए, यदि इनपुट ops =["5", "2", "POP", "DUP", "3", "+", "15", "-"] जैसा है, तो आउटपुट 7 होगा क्योंकि प्रारंभ में पहले दो ऑपरेशनों का उपयोग करते हुए, 5 और 2 डालें ताकि स्टैक [5, 2] जैसा हो, फिर एक पॉप करें ताकि वर्तमान स्टैक [5] जैसा हो। उसके बाद डीयूपी के लिए, 5 को डुप्लिकेट किया जाएगा, इसलिए स्टैक [5, 5] जैसा है, फिर 3 [5, 5, 3] जोड़ें, फिर अतिरिक्त ऑपरेशन के लिए यह [5, 8] होगा, फिर 15 डालें, इसलिए [5, 8, 15] उसके बाद घटाव ऑपरेशन के लिए स्टैक [5, (15-8)] =[5, 7] होगा। तो सबसे ऊपर वाला तत्व 7 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • स्टैक:=एक नया स्टैक
  • ऑप्स में प्रत्येक i के लिए, करते हैं
    • यदि i एक संख्या है, तो
      • मुझे ढेर में धकेलें
    • अन्यथा जब स्टैक का आकार>=1 और i "POP" हो, तो
      • स्टैक से पॉप टॉप एलिमेंट
    • अन्यथा जब स्टैक का आकार>=1 और i "DUP" के समान हो, तो
      • स्टैक से पी में सबसे ऊपर वाले तत्व को पॉप करें
      • और p दो बार डालें
    • अन्यथा जब स्टैक का आकार>=2 और i "+" के समान हो, तो
      • स्टैक से शीर्षतम तत्व को एक में पॉप करें
      • स्टैक से सबसे ऊपरी तत्व को b में पॉप करें
      • पुश (a + b) स्टैक में
    • अन्यथा जब स्टैक का आकार>=2 और i "-" के समान हो, तो
      • स्टैक से शीर्षतम तत्व को एक में पॉप करें
      • स्टैक से सबसे ऊपरी तत्व को b में पॉप करें
      • पुश (a - b) स्टैक में
    • अन्यथा,
      • वापसी -1
  • स्टैक से शीर्ष तत्व लौटाएं

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def solve(ops):
   stack = []
   for i in ops:
      if i.isnumeric() == True:
         stack.append(int(i))
      elif len(stack) >= 1 and i == "POP":
         stack.pop()
      elif len(stack) >= 1 and i == "DUP":
         p = stack.pop()
         stack.append(p)
         stack.append(p)
      elif len(stack) >= 2 and i == "+":
         a = stack.pop()
         b = stack.pop()
         stack.append(a + b)
      elif len(stack) >= 2 and i == "-":
         a = stack.pop()
         b = stack.pop()
         stack.append(a - b)
      else:
         return -1
   return stack.pop()

ops = ["5", "2", "POP", "DUP", "3", "+", "15", "-"]
print(solve(ops))

इनपुट

["5", "2", "POP", "DUP", "3", "+", "15", "-"]

आउटपुट

7

  1. पायथन प्रोग्राम यह जाँचने के लिए कि क्या दिया गया स्ट्रिंग पैंग्राम है

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग इनपुट को देखते हुए, हमें यह जांचने के लिए एक पायथन प्रोग्राम जेनरेट करना होगा कि वह स्ट्रिंग पंग्राम है या नहीं। पंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी अक्षर संग्रह मे

  1. पायथन प्रोग्राम में दी गई संख्या एक फाइबोनैचि संख्या है या नहीं, इसकी जांच कैसे करें?

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे - समस्या कथन किसी संख्या n को देखते हुए, जाँच करें कि n एक फाइबोनैचि संख्या है या नहीं हम सभी जानते हैं कि nवीं फाइबोनैचि संख्या पिछले दो फाइबोनैचि संख्याओं का योग है। लेकिन वे पुनरावृत्ति संबंध के अलावा एक दिलचस्प संबंध भी प्रस्त

  1. पायथन प्रोग्राम कैसे जांचें कि दी गई संख्या एक फाइबोनैचि संख्या है या नहीं?

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे - समस्या कथन किसी संख्या n को देखते हुए, जाँच करें कि n एक फाइबोनैचि संख्या है या नहीं हम सभी जानते हैं कि nवीं फाइबोनैचि संख्या पिछले दो फाइबोनैचि संख्याओं का योग है। लेकिन वे पुनरावृत्ति संबंध के अलावा एक दिलचस्प संबंध भी प्रस्त