हमें जावास्क्रिप्ट में स्टैक का उपयोग करके RPN (रिवर्स पॉलिश नोटेशन) इनपुट पद्धति के साथ एक कैलकुलेटर बनाने की आवश्यकता है।
निम्नलिखित इनपुट सरणी पर विचार करें -
const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];
प्रक्रिया -
-
1 एक ऑपरेंड है, स्टैक पर पुश करें।
-
5 एक ऑपरेंड है, पुश टू स्टैक।
-
'+' एक ऑपरेटर है, पॉप 1 और 5, उनकी गणना करें और परिणाम को स्टैक पर पुश करें।
-
6 एक ऑपरेंड है, स्टैक पर पुश करें।
-
3 एक ऑपरेंड है, स्टैक पर पुश करें।
-
'-' एक ऑपरेटर है, पॉप 6 और 3, उन्हें घटाएं और परिणाम को स्टैक पर पुश करें।
-
'/' एक ऑपरेटर है, पॉप 6 और 3, उन्हें विभाजित किया और परिणाम को स्टैक पर पुश किया।
-
7 एक ऑपरेंड है, पुश टू स्टैक।
-
'*' एक ऑपरेटर है, पॉप 2 और 7, उन्हें गुणा करें और परिणाम को स्टैक पर पुश करें।
और अंत में, आउटपुट होना चाहिए -
const output = 14;
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 5, '+', 6, 3, '−', '/', 7, '*'];
const stackCalculator = (arr = []) => {
const options = {
'+': (a, b) => a + b,
'−': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b
};
const stack = [];
arr.forEach(value => {
stack.push(value in options
? options[value](...stack.splice(-2))
: value
);
});
return stack;
};
console.log(stackCalculator(arr)); आउटपुट
और कंसोल में आउटपुट होगा -
[14]