2 पूर्णांक के बीच गुणा को इसके अलावा की श्रृंखला में घटाया जा सकता है
3 * 5 = 3 + 3 + 3 + 3 + 3 = 5 + 5 + 5
घातांक (ऊपर उठाने के लिए एक सत्ता में ख ) भी गुणा की एक श्रृंखला में कम किया जा सकता:
5 ^ 3 = 5 * 5 * 5
इसलिए, एक्सप्रेशन को कई गुणा जोड़कर घटाया जा सकता है, फिर गुणन अभिव्यक्ति बनाकर, फिर जोड़ की श्रृंखला में। उदाहरण के लिए, 5 ^ 3
(5 घन) को फिर से लिखा जा सकता है
5 ^ 3 = 5 * 5 * 5
= (5 + 5 + 5 + 5 + 5) * 5
= (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5) + (5 + 5 + 5 + 5 + 5)
= 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5
आपका कार्य यह है कि एक्सप्रेशन, गुणा और जोड़ को मिलाकर दिए गए एक्सप्रेशंस इसे जोड़कर सबसे छोटी श्रृंखला में जोड़ते हैं। "सबसे छोटी" अभिव्यक्ति को सबसे कम संख्या के +
प्रतीकों के साथ अभिव्यक्ति के रूप में परिभाषित किया गया है , फिर भी मूल अभिव्यक्ति में दो में से केवल एक संख्या का उपयोग कर रहा है। उदाहरण के लिए, सबसे छोटी अभिव्यक्ति 10 * 2
है 10 + 10
।
इनपुट में शामिल नंबर सभी सकारात्मक पूर्णांक होंगे, और पूर्वता दर्शाने के लिए पूर्णांक और कोष्ठक ( ) के साथ अभिव्यक्ति +
( केवल ) *
(गुणा) , (गुणन) और ^
(घातांक) शामिल होंगे ()
।
आउटपुट में +
केवल सकारात्मक पूर्णांक और प्रतीक शामिल होने चाहिए । आपको केवल अंतिम आउटपुट में कटौती के व्यक्तिगत चरणों का उत्पादन नहीं करना चाहिए। आउटपुट में कोई भी संख्या नहीं हो सकती है जो इनपुट में दिखाई नहीं देती है। हालाँकि, आप इसके बजाय किसी भी 3 अलग प्रतीकों का उपयोग कर सकते हैं +*^
, लेकिन कृपया कहें कि वे कौन से प्रतीक हैं
इनपुट और आउटपुट को अलग रिक्त स्थान या अपने कार्यक्रमों में इस्तेमाल नहीं किया जा सकता, यानी 3 * 5
के रूप में या तो outputted किया जा सकता है 5 + 5 + 5
या 5+5+5
।
ध्यान दें कि ज्यादातर मामलों में, इसके अलावा वास्तव में प्रदर्शन नहीं किया जाता है। एकमात्र ऐसा मामला जहां इसके अलावा प्रदर्शन किया जाना है, जब आपके पास ऐसा कुछ है 5 ^ (1 + 2)
, तो किस मामले में, जारी रखने के लिए इसके अलावा आवश्यक है -> 5 ^ 3 -> 5 * 5 * 5 -> ...
। देखें टेस्ट केस # 4
आपके कोड को अस्पष्ट अभिव्यक्ति पर आने वाले इनपुट को संभालने की आवश्यकता नहीं है। उदाहरण के लिए, (2 + 2) * (4 + 1)
। अब तक तय किए गए नियमों के कारण, लक्ष्य उत्तर की गणना नहीं करना है, लक्ष्य को परिवर्धन को सरल बनाना है। इसलिए परिणाम उस आदेश के आधार पर भिन्न हो सकता है जो अभिव्यक्तियों को हल किया जाता है या सराहा जाता है (जो सरल बनाने के लिए अतिरिक्त है, जिसे छोड़ना है?)। एक और अवैध उदाहरण: ((3 + 2) ^ 2) ^ 3 -> ((3 + 2) * (3 + 2)) ^ 3 -> ???
।
यह कोड-गोल्फ है इसलिए सबसे छोटा कोड जीतता है
परीक्षण के मामलों
Input => output
5 ^ 3 + 4 * 1 ^ 5 => 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 4
2 ^ 1 * 2 + 3 + 9 => 2 + 2 + 3 + 9
2 ^ 1 * (2 + 3) + 9 => 2 + 3 + 2 + 3 + 9
2 ^ (1 * (2 + 3)) + 9 => 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 9
10 + 3 * 2 + 33 ^ 2 => 10 + 3 + 3 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33 + 33
100 * 3 => 100 + 100 + 100
2 ^ 1 + 2 ^ 1 + 2 ^ 2 + 8 ^ 1 => 2 + 2 + 2 + 2 + 8
(1 + 2 + 5 * 8 + 2 ^ 4) * 2 => 1 + 2 + 8 + 8 + 8 + 8 + 8 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 2 + 8 + 8 + 8 + 8 + 8 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2
using only one of the two numbers in the original expression.
लेकिन मूल अभिव्यक्ति दो से अधिक संख्या हो सकती है। मुझे नहीं मिलता कि क्यों के 8 + 8
लिए एक वैध उत्पादन नहीं है 2 ^ 1 + 2 ^ 1 + 2 ^ 2 + 8 ^ 1
। यह प्रश्न अभी भी मेरे लिए बहुत अस्पष्ट है।
**
इसके बजाय उपयोग कर सकते हैं^
?