एक ऐसा प्रोग्राम लिखिए जिसमें विषम लंबाई की स्ट्रिंग हो जिसमें केवल अक्षर हों .
और :
। प्रारंभ में खाली स्टैक की सहायता से , इस स्ट्रिंग से एक संख्या उत्पन्न करें:
स्ट्रिंग में प्रत्येक वर्ण c के लिए (बाएं से दाएं जा रहा है) ...
- यदि c है
.
और स्टैक में 2 से कम तत्व हैं, तो स्टैक पर 1 पुश करें। - यदि सी है
.
और स्टैक में 2 या अधिक तत्व हैं, तो स्टैक से दो शीर्ष मानों को पॉप करें और स्टैक पर अपनी राशि को धक्का दें। - यदि c है
:
और स्टैक में 2 से कम तत्व हैं, तो स्टैक पर 2 पुश करें। - यदि c है
:
और स्टैक में 2 या अधिक तत्व हैं, तो स्टैक से दो शीर्ष मानों को पॉप करें और स्टैक पर उनके उत्पाद को धक्का दें।
परिणामी संख्या स्टैक के शीर्ष पर मान है। आपका प्रोग्राम इस नंबर को स्टडआउट (एक वैकल्पिक अनुगामी न्यूलाइन के साथ) प्रिंट करना चाहिए।
(थोड़ा विश्लेषण से पता चलता है कि केवल एक ही संख्या शेष है जब तक कि स्ट्रिंग की लंबाई भी नहीं है, यही वजह है कि हम उन लोगों को अनदेखा कर रहे हैं। वास्तव में, स्टैक में कभी भी 2 से अधिक तत्व नहीं होते हैं।)
उदाहरण के लिए, संख्या ::...:.:.
9 है:
2 1 2 2 /______ stack just after the character below is handled
2 2 4 4 5 5 7 7 9 \
: : . . . : . : . <-- string, one character at a time
एक पवित्र जाँच के रूप में, यहाँ 1, 3, और 5 के सभी तारों के लिए संख्याएँ हैं:
. 1
: 2
... 2
..: 1
.:. 3
.:: 2
:.. 3
:.: 2
::. 4
::: 4
..... 3
....: 2
...:. 4
...:: 4
..:.. 2
..:.: 1
..::. 3
..::: 2
.:... 4
.:..: 3
.:.:. 5
.:.:: 6
.::.. 3
.::.: 2
.:::. 4
.:::: 4
:.... 4
:...: 3
:..:. 5
:..:: 6
:.:.. 3
:.:.: 2
:.::. 4
:.::: 4
::... 5
::..: 4
::.:. 6
::.:: 8
:::.. 5
:::.: 4
::::. 6
::::: 8
बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है। टाईब्रेकर पहले की पोस्ट है।
- आप मान सकते हैं कि इनपुट हमेशा वैध होता है, यानी केवल एक स्ट्रिंग जिसमें
.
और:
जिसकी लंबाई विषम है। - एक कार्यक्रम लिखने के बजाय, आप एक फ़ंक्शन लिख सकते हैं जो मान्य स्ट्रिंग और प्रिंट में लेता है या उत्पन्न संख्या देता है।