विवरण
काल्पनिक प्रोग्रामिंग भाषा (आईपीएल) पोलिश रिवर्स नोटेशन का उपयोग करती है। इसकी निम्न आज्ञाएँ हैं:
- i - इनपुट नंबर और इसे स्टैक पर धकेलें
- ओ - स्टैक के गैर-विनाशकारी आउटपुट शीर्ष (संख्या स्टैक पर रहती है)
- डी - स्टैक के शीर्ष त्यागें
- पूर्णांक संख्या - इस संख्या को स्टैक पर धकेलें
- + - * - स्टैक से दो नंबर पॉप करें, संबंधित ऑपरेशन करें और परिणाम को पीछे धकेलें। आईपीएल में कोई विभाजन नहीं है।
आईपीएल केवल पूर्णांकों के साथ काम करता है और इसका उपयोग सरल गणनाओं के लिए किया जाता है। एक आईपीएल कार्यक्रम एक पंक्ति पर लिखा गया है और रिक्त स्थान द्वारा अलग किया गया है। खाली स्ट्रिंग एक वैध आईपीएल कार्यक्रम है।
आईपीएल कार्यक्रम:
i i + o
दो नंबर इनपुट करता है, उन्हें एक साथ जोड़ता है और परिणाम को आउटपुट करता है।
इनपुट संख्या और पूर्णांक जिन्हें स्टैक में धकेला जा सकता है, वे रेंज [-999, 999] में हैं, हालांकि आउटपुट कोई भी हो सकता है। यदि आपकी भाषा बड़ी संख्या का समर्थन नहीं करती है तो यह ठीक है।
इनपुट / आउटपुट प्रारूप
आप किसी भी इनपुट / आउटपुट फॉर्मेट को तब तक चुन सकते हैं जब तक वह समझने और पढ़ने / लिखने के लिए स्पष्ट न हो: स्ट्रिंग, सूची, टोकन आदि।
कार्य
आपको कुछ IPL कार्यक्रम दिए गए हैं, आपको इसे अनुकूलित करने की आवश्यकता है (लंबाई कम करें):
i 12 + 3 + o d 2 3 + d
अनुकूलन के बाद बन जाएगा
i 15 + o
आपको स्टैक स्थिति को संरक्षित करने की आवश्यकता नहीं है, लेकिन इनपुट और आउटपुट की मात्रा और उनका क्रम मूल और अनुकूलित कार्यक्रम के लिए मेल खाना चाहिए।
तो आईपीएल कार्यक्रम:
-40 i * 2 * o i + 3 1 + o i 2 *
अनुकूलन के बाद बन जाएगा
i -80 * o i 4 o i
या
-80 i * o i 4 o i
(ध्यान दें कि आपको सभी इनपुट को सहेजना होगा, भले ही वे अप्रासंगिक हों)।
परीक्षण मामलों के लिए कोई हार्डकोडिंग नहीं होनी चाहिए, कोड को किसी भी आईपीएल कार्यक्रम पर काम करना चाहिए और आवश्यकताओं को पूरा करने वाले कम से कम आईपीएल कार्यक्रम का उत्पादन करना चाहिए।
स्कोरिंग
डिफ़ॉल्ट कोड-गोल्फ स्कोरिंग।
अद्यतन: @Sanchises सुझाव के अनुसार, स्कोरिंग को शुद्ध कोड गोल्फ स्कोरिंग में बदल दिया गया।
परीक्षण के मामलों:
इनपुट:
(empty string)
संभव उत्पादन:
(empty string)
इनपुट:
i 4 * 2 + 3 * 6 - o
संभव उत्पादन:
i 12 * o
इनपुट:
1 1 + o
संभव उत्पादन:
2 o
इनपुट:
i 2 + 3 + o d 2 3 + d
संभव उत्पादन:
i 5 + o
इनपुट:
-40 i * 2 * o i + 3 1 + o i 2 *
संभव उत्पादन:
-80 i * o i 4 o i
इनपुट:
i i 1 + i 1 + i 1 + i 1 + d d d d o
संभव उत्पादन:
i i i i i d d d d o
इनपुट:
i i i 0 * * * o
संभव उत्पादन:
i i i 0 o
इनपुट:
i i i 1 * * * o
संभव उत्पादन:
i i i * * o
इनपुट:
i 222 + i 222 - + o
संभव उत्पादन:
i i + o
इनपुट:
i 2 + 3 * 2 + 3 * 2 + 3 * i * d i 2 + 3 * i + d i o 2 + 2 - 0 * 1 o
संभव उत्पादन:
i i i i i o 1 o
इनपुट:
i 1 + 2 * 1 + o
संभव उत्पादन:
i 2 * 3 + o
इनपुट:
1 1 + o i 2 + 3 + o d 2 3 + d 4 i * 2 * o i + 3 1 + o i 2 * i i 1 + i 1 + i 1 + i 1 + d d d d o i i i 0 * * * o i i i 1 * * * o i 2 + i 2 - + o i 2 + 3 * 2 + 3 * 2 + 3 * i * d i 2 + 3 * i + d i o 2 + 2 - 0 * 1 o
संभव उत्पादन:
2 o i 5 + o 8 i * o i 4 o i i i i i i d d d d o i i i 0 o i i i * * * o i i + o i i i i i o 1 o
i i d o
करने के लिएi o i
(इनपुट क्रम में है और उत्पादन के क्रम में है) या आप इसे आसान बनाने में नहीं करना चाहिए? (इनपुट और आउटपुट का सेट क्रम में होना चाहिए)