एक फ़ंक्शन या प्रोग्राम लिखें जो एक स्ट्रिंग को कोड 39 प्रारूप बारकोड में एन्कोड करता है, जहां प्रत्येक चरित्र को चार बार द्वारा अलग किए गए पांच बार के रूप में एन्कोड किया गया है। या तो दो बार और अंतराल में से एक चौड़ा है और अन्य संकीर्ण (10 * 4 कोड) हैं, या अंतराल के तीन विस्तृत हैं और सलाखों में से कोई भी (4 कोड) हैं। यह 44 अलग-अलग कोड देता है, जिसमें से एक आरक्षित कोड है जिसका उपयोग एन्कोडेड स्ट्रिंग के प्रारंभ और अंत को दर्शाने के लिए किया जाता है।
चुनौती
इनपुट एक स्ट्रिंग है जिसमें सेट से केवल वर्ण होते हैं
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
आउटपुट एक बारकोड स्ट्रिंग के रूप में एन्कोडेड स्ट्रिंग है। संकीर्ण अंतराल और इंटरचैकर गैप एक एकल स्थान है और एक विस्तृत अंतराल तीन रिक्त स्थान है। संकीर्ण बार यूनिकोड वर्ण "पूर्ण ब्लॉक" के लिए UTF-8 बाइट अनुक्रम है, █, यानी 0xE2 0x96 0x88और विस्तृत बार तीन ऐसे बाइट अनुक्रम / वर्ण ( ███) है। कोड की पूरी सूची है:
Spaces
0100 0010 0001 1000 1011 1101 1110 0111
Bars
00000 + / $ %
10001 1 A K U
01001 2 B L V
11000 3 C M W
00101 4 D N X
10100 5 E O Y
01100 6 F P Z
00011 7 G Q -
10010 8 H R .
01010 9 I S space 1=wide
00110 0 J T start/end 0=narrow
बार और रिक्त स्थान को एक दूसरे से जोड़ा जाता है, एक बार में शुरू होता है, इसलिए उदाहरण के लिए क्यू है
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
सभी वर्णों को एन्कोड करने के बाद, स्ट्रिंग को दोनों सिरों पर सीमांकित किया जाता है █ █ ███ ███ █। इंटरचैकर गैप, एक सिंगल स्पेस, हर अक्षर के बीच में डाला जाता है। आपका समाधान अनुगामी रिक्त स्थान और एक अनुगामी नईलाइन (उस क्रम में) का उत्पादन कर सकता है।
उदाहरण
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
मानक इनपुट / आउटपुट प्रारूप की अनुमति है और मानक खामियों को रोक दिया जाता है। यह कोड-गोल्फ है , इसलिए बाइट्स जीत में मापा जाने वाला सबसे छोटा कोड है!
#चरित्र का उपयोग करने के लिए दंड देना बहुत उचित नहीं है , उदाहरण के लिए, "#"केवल एक ही कारण नहीं है कि इसे किसी भाषा में इस्तेमाल किया जा सकता है।