एक प्रोग्राम बनाएं जो अभिव्यक्ति के वैकल्पिक पक्षों से तत्वों का उपयोग करके गणितीय अभिव्यक्ति को हल करता है। जिस तरह से यह किया गया है, बाएं से दाएं पढ़ने के बजाय, आप पहले वर्ण, फिर अंतिम, फिर दूसरा, फिर दूसरा से अंतिम आदि पढ़ते हैं। इससे आपको एक नई अभिव्यक्ति मिलेगी जिसका आपको मूल्यांकन और आउटपुट करना होगा।
a*b/c+d-e
135798642 <-- Order you read the expression in
ae*-bd/+c <-- Order of operation.
उदाहरण:
1*3/2+4-5
15*-34/+2 = -255
यदि अभिव्यक्ति «काम» नहीं करती है, 1
तो उसे काम करने के लिए आवश्यक पदों पर डाला जाना चाहिए।
कुछ उदाहरण शायद इसे बेहतर रूप में चित्रित करेंगे:
Input: 1+1+1+1+1
Result: 23 // Because 1+1+1+1+1 -> 11++11++1 -> 23
Input: 1+2-3+12-5
Result: -19 // Because 1+2-3+12-5 -> 15+-22-13+ -> 15+-22-13+1 -> -19
// |
// Not valid expression
Input: 2*2*2*2*2
Result: 968 // Because 2*2*2*2*2 -> 22**22**2 -> 22*1*22*1*2 -> 968
// || ||
// Not valid, 1 must be inserted
Input: 17/2
Output: 127 // Because 17/2 = 127/ -> 127/1 -> 127
जिन ऑपरेटरों का समर्थन किया जाना चाहिए, वे हैं + - * /
। कोष्ठक नहीं होंगे। सामान्य गणित नियम और "सिंटैक्स" का उपयोग किया जाता है, इसलिए उदाहरण के लिए **
घातांक का अर्थ नहीं है। (यानी MATLAB शैली के a++++1
बराबर है a+1
, C ++ नहीं)।
मामले में कोई संदेह नहीं है, कुछ वैध संचालन हैं:
-a
+a
a++b
a+-b
a*-b
a*+b
a*++b
a/b
a/-b
a/+b
-a/--b
जबकि निम्नलिखित सभी मान्य नहीं हैं। यह दिखाया गया है कि उन्हें किस चीज़ के साथ प्रतिस्थापित किया जाना चाहिए:
a+ | a+1
a- | a-1
a++++ | a++++1 (This is equivalent to a+1)
a*+++ | a*+++1 (This is equivalent to a*1)
a**b | a*1*b
a*/b | a*1/b
a/*b | a/1*b
a* | a*1
*a | 1*a
***a | 1*1*1*a
नियम:
- कोड एक फ़ंक्शन या पूर्ण प्रोग्राम हो सकता है
- इनपुट STDIN या फ़ंक्शन तर्क हो सकता है
- इनपुट एक मान्य गणितीय अभिव्यक्ति होना चाहिए, उद्धरण चिह्नों के बिना,
''
या""
। - आउटपुट पूर्णांक, दशमलव या सरलीकृत अंश के रूप में नई अभिव्यक्ति का उत्तर होना चाहिए।
- दशमलव बिंदु के बाद कम से कम तीन अंक का समर्थन किया जाना चाहिए। तो
1/3 = 0.333
, नहीं0.33
।0.333333333
स्वीकार कर लिया है। ans = ...
स्वीकार कर लिया है।- लीडिंग और अनुगामी newlines और रिक्त स्थान स्वीकार किए जाते हैं।
- इनपुट केवल पूर्णांक होगा
- शून्य से डिवीजन के परिणामस्वरूप त्रुटि हो सकती है, NaN, Inf आदि किसी संख्या को आउटपुट करना स्वीकार नहीं किया जाता है।
हमेशा की तरह, बाइट्स में सबसे छोटा कोड जीत जाता है। चुनौती पोस्ट किए जाने के दिन से एक सप्ताह में एक विजेता का चयन किया जाएगा। बाद में पोस्ट किए गए उत्तर अभी भी जीत सकते हैं यदि यह वर्तमान नेता से छोटा है।
0/0
यदि अभिव्यक्ति पूर्णांक विभाजन या मोडुलो को शून्य से निकालता है?
x/0
एक वैध आउटपुट है। जब तक यह गलत उत्तर नहीं देता है, तब तक यह ठीक नहीं है। त्रुटि और "एक संख्या नहीं" परिभाषा सही है, और अनंत "सही पर्याप्त" है,
2^64
, और क्या यह त्रुटि या लपेटना चाहिए यदि आप ऊपर जाते हैं?