प्रस्तावना
इंटेगर हमेशा या तो विषम होते हैं । यहां तक कि पूर्णांक दो से विभाज्य हैं, विषम पूर्णांक नहीं हैं।
जब आप दो पूर्णांक जोड़ते हैं, तो आप अनुमान लगा सकते हैं कि क्या परिणाम सम या विषम के आधार पर विषम होगा या नहीं:
- सम + इव = सम
- सम + विषम = विषम
- विषम + सम = विषम
- विषम + विषम = सम
इसी तरह, जब आप दो पूर्णांकों को गुणा करते हैं, तो आप अनुमान लगा सकते हैं कि क्या परिणाम और भी विषम होंगे या नहीं, यह इस आधार पर होगा कि क्या कारक भी आसान थे या नहीं:
- यहाँ तक कि * इवन = भी
- सम * विषम = सम
- विषम * इव = सम
- विषम * विषम = विषम
इस प्रकार, यदि आप एक गणित की अभिव्यक्ति में सभी चर की समता या विषमता को जानते हैं, जिसमें केवल जोड़ और गुणा शामिल है, तो आप अनुमान लगा सकते हैं कि परिणाम समान होगा या विषम।
उदाहरण के लिए, हम विश्वास के साथ कह सकते हैं कि (68 + 99) * 37
परिणाम एक विषम है क्योंकि एक सम विषम ( 68 + 99
) एक विषम है, और वह विषम समय एक और विषम ( odd * 37
) विषम देता है।
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें जो केवल चार वर्णों को एक स्ट्रिंग में लेता है eo+*
। यह स्ट्रिंग केवल जोड़ ( ) और गुणन ( ) को मिलाकर उपसर्ग संकेतन में दी गई गणितीय अभिव्यक्ति का प्रतिनिधित्व करती है । प्रत्येक कुछ मनमानी संख्या का प्रतिनिधित्व करता है , और प्रत्येक कुछ मनमाना विषम संख्या का प्रतिनिधित्व करता है।+
*
e
o
आपका कार्य अभिव्यक्ति को सरल करना, मुद्रण करना या वापस करना है e
या इस o
आधार पर कि क्या अभिव्यक्ति का परिणाम सम या विषम है।
आप मान सकते हैं कि इनपुट हमेशा मान्य उपसर्ग संकेतन में होगा। विशेष रूप से, प्रत्येक +
और *
हमेशा इसके बाद होने वाले दो संबंधित ऑपरेंड होंगे। ये ऑपरेशंस एकल e
या o
, या अन्य +
या *
अभिव्यक्ति हो सकते हैं जो बदले में ऑपरेंड होते हैं।
उदाहरण के लिए, इनपुट *+eoo
को सामान्य इन्फिक्स नोटेशन के रूप mul(add(e, o), o)
में या पढ़ा जा सकता है । और पहली करने के लिए इसी ऑपरेंड हैं , और और पिछले करने के लिए इसी ऑपरेंड हैं ।(e + o) * o
e
o
+
+eo
o
*
बस इसे स्पष्ट करने के लिए, यहां कुछ अमान्य इनपुट हैं जिनमें गलत उपसर्ग संकेतन है:
eo
ooe
o+e
ee*
+*oe
+e*o
आउटपुट में एक एकल अनुगामी न्यूलाइन ठीक है, लेकिन अन्यथा e
सम या o
विषम के लिए एक सादा वह सब है जो आउटपुट होना चाहिए।
बाइट्स में सबसे छोटा कोड जीतता है।
परीक्षण के मामलों
(खाली लाइनें केवल दृष्टिगत रूप से समान मामलों को अलग करने में मदद करने के लिए हैं।)
e -> e
o -> o
+ee -> e
+eo -> o
+oe -> o
+oo -> e
*ee -> e
*eo -> e
*oe -> e
*oo -> o
+e+ee -> e
+e+eo -> o
+e+oe -> o
+e+oo -> e
+e*ee -> e
+e*eo -> e
+e*oe -> e
+e*oo -> o
+o+ee -> o
+o+eo -> e
+o+oe -> e
+o+oo -> o
+o*ee -> o
+o*eo -> o
+o*oe -> o
+o*oo -> e
*e+ee -> e
*e+eo -> e
*e+oe -> e
*e+oo -> e
*e*ee -> e
*e*eo -> e
*e*oe -> e
*e*oo -> e
*o+ee -> e
*o+eo -> o
*o+oe -> o
*o+oo -> e
*o*ee -> e
*o*eo -> e
*o*oe -> e
*o*oo -> o
++eee -> e
++eeo -> o
++eoe -> o
++eoo -> e
++oee -> o
++oeo -> e
++ooe -> e
++ooo -> o
+*eee -> e
+*eeo -> o
+*eoe -> e
+*eoo -> o
+*oee -> e
+*oeo -> o
+*ooe -> o
+*ooo -> e
*+eee -> e
*+eeo -> e
*+eoe -> e
*+eoo -> o
*+oee -> e
*+oeo -> o
*+ooe -> e
*+ooo -> e
**eee -> e
**eeo -> e
**eoe -> e
**eoo -> e
**oee -> e
**oeo -> e
**ooe -> e
**ooo -> o
+e+e+e+ee -> e
+o+o+o+oo -> o
*e*e*e*ee -> e
*o*o*o*oo -> o
+e+o+e+oe -> e
+o+e+o+eo -> o
*e*o*e*oe -> e
*o*e*o*eo -> e
+e*e+e*ee -> e
+o*o+o*oo -> o
*e+e*e+ee -> e
*o+o*o+oo -> o
+**++*+*eeoeeooee -> e
+**++*+***eooeoeooeoe -> e
+**+***+**++**+eooeoeeoeeoeooeo -> o
+e*o*e**eoe -> e
+*e+e+o+e**eeoe -> e
**o++*ee*++eoe*eo+eoo -> o
eval
ठीक उपयोग कर रहा है ?