चुनौती
एक प्रोग्राम लिखें जो किसी भी ASCII प्रिंट करने योग्य वर्णों वाली एकल-लाइन स्ट्रिंग का इनपुट ले सकता है, और उसी स्ट्रिंग को Base85 में एन्कोडेड (बड़े-एंडियन कन्वेंशन का उपयोग करके) आउटपुट करता है । आप मान सकते हैं कि इनपुट हमेशा input 100 अक्षर का होगा।
बेस 85 के लिए एक गाइड
चार ओकटेट्स को (आमतौर पर) पांच बेस 85 अक्षरों में एन्कोड किया गया है।
Base85 पात्रों से लेकर
!
के लिएu
और - (117 33 ASCII)z
(ASCII 122)।सांकेतिक शब्दों में बदलना करने के लिए, आप लगातार चार अष्टक (32-बिट संख्या) पर 85 से विभाजन करते हैं, और एन्कोडेड मान के लिए ASCII वर्ण प्राप्त करने के लिए शेष 33 (प्रत्येक विभाजन के बाद) जोड़ते हैं। उदाहरण के लिए, इस प्रक्रिया का पहला अनुप्रयोग एन्कोडेड ब्लॉक में सबसे सही वर्ण बनाता है।
यदि चार ऑक्टेट के सेट में केवल नल बाइट्स होते हैं, तो वे
z
इसके बजाय एन्कोडेड होते हैं!!!!!
।यदि अंतिम ब्लॉक चार ओकटेट्स से कम है, तो यह अशक्त बाइट्स के साथ गद्देदार है। एन्कोडिंग के बाद, उतने ही वर्ण जिन्हें पैडिंग के रूप में जोड़ा गया था, आउटपुट के अंत से हटा दिए जाते हैं।
एन्कोडेड वैल्यू से पहले
<~
और उसके बाद होना चाहिए~>
।एन्कोडेड मान में कोई व्हॉट्सएप नहीं होना चाहिए (इस चुनौती के लिए)।
उदाहरण
In: easy
Out: <~ARTY*~>
In: test
Out: <~FCfN8~>
In: code golf
Out: <~@rGmh+D5V/Ac~>
In: Programming Puzzles
Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~>
निम्नलिखित स्निपेट बेस85 को दिए गए इनपुट को एन्कोड करेगा।