मान लीजिए कि हम एक स्ट्रिंग को दूसरे स्ट्रिंग से खींचने के लिए निम्नलिखित नियमों का उपयोग करते हैं, एक जिसमें केवल ASCII प्रिंट करने योग्य अक्षर हैं और जिन्हें *
-string कहा जाता है । यदि प्रक्रिया रुकने से पहले स्ट्रिंग बाहर निकल जाती है, तो यह एक त्रुटि है, और प्रक्रिया का परिणाम उस मामले में अपरिभाषित है:
- के साथ शुरू
d=1, s=""
- जब भी आप एक मुठभेड़ करते हैं
*
, तोd
2. से गुणा करें । जब भी आप किसी अन्य चरित्र का सामना करते हैं, तो इसे समाप्त करेंs
और 1 से घटाएंd
। यदि अबd=0
, रुकें और वापस लौटेंs
परिभाषित उदाहरण :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
अपरिभाषित उदाहरण : (ध्यान दें कि खाली स्ट्रिंग इनमें से एक भी होगी)
*7
**769
*7*
*a*b
*
आपका काम एक स्ट्रिंग लेना है और *
उस स्ट्रिंग को पैदा करने वाले सबसे छोटे-छोटे रिटर्न को वापस करना है ।
कार्यक्रम के उदाहरण :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
आपके प्रोग्राम को किसी भी स्ट्रिंग को संभालना चाहिए जिसमें कम से कम एक वर्ण और केवल गैर- *
ASCII प्रिंट करने योग्य अक्षर हों। आप स्ट्रिंग्स को कभी नहीं लौटा सकते हैं जिसके लिए प्रक्रिया अपरिभाषित है, क्योंकि परिभाषा के अनुसार वे किसी भी तार का उत्पादन नहीं कर सकते हैं।
मानक कमियां और I / O नियम लागू होते हैं।
*
?