मैंने हाल ही में खुद को किताबी कीड़ा के रूप में कुछ उदासीनता में लिप्त किया है:
यदि आपने इसे पहले नहीं देखा है, तो यह एक शब्द का खेल है जहां लक्ष्य शब्दों को बनाने के लिए आसन्न टाइलों को जोड़ना है। यह निर्धारित करने के लिए कि क्या एक स्ट्रिंग एक वैध शब्द है, यह इसे अपने आंतरिक शब्दकोश के खिलाफ जांचता है, जो एक संपीड़ित प्रारूप में संग्रहीत होता है जो इस तरह दिखता है:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
शब्दकोश को अनपैक करने के नियम सरल हैं:
पंक्ति की शुरुआत में संख्या पढ़ें, और पिछले शब्द की शुरुआत से कई वर्णों को कॉपी करें। (यदि कोई संख्या नहीं है, तो पिछली बार के रूप में कई पात्रों की प्रतिलिपि बनाएँ।)
निम्नलिखित अक्षरों को शब्द में जोड़ें।
तो, हमारा पहला शब्द है aa
, उसके बाद 2h
, जिसका अर्थ है "गठन के पहले दो अक्षरों को कॉपी करें aa
और जोड़ें h
" aah
। फिर 3ed
बन जाता है aahed
, और चूंकि अगली पंक्ति में कोई संख्या नहीं होती है, इसलिए हम 3 वर्णों को फिर से बनाने के लिए कॉपी करते हैं aahing
। यह प्रक्रिया बाकी के सभी शब्दकोश में जारी है। छोटे नमूना इनपुट से परिणामी शब्द हैं:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
आपकी चुनौती यह है कि संभव के रूप में कुछ बाइट्स में इस unpacking प्रदर्शन करने के लिए।
इनपुट की प्रत्येक पंक्ति में 0-9
एक या अधिक लोअरकेस अक्षरों के बाद शून्य या अधिक अंक होंगे a-z
। आप इनपुट ले सकते हैं और या तो स्ट्रिंग्स की एक सूची के रूप में आउटपुट दे सकते हैं, या किसी भी वर्ण के अलावा अलग किए गए शब्दों के साथ एकल स्ट्रिंग के रूप में 0-9
/ a-z
।
यहां एक और छोटा परीक्षण मामला है, जिसमें कुछ किनारे मामले उदाहरण में शामिल नहीं हैं:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
आप अपने कोड का पूर्ण शब्दकोश में भी परीक्षण कर सकते हैं: इनपुट , आउटपुट ।
locate
कार्यक्रम pathnames पर एन्कोडिंग के इस प्रकार का उपयोग करता है।
0
अग्रणी0
s नहीं होगा ?