4-राज्य बारकोड
कई डाक सेवाएं (रॉयल मेल यूके, कनाडा पोस्ट, यूएस मेल आदि) अपने मेल के बारे में जानकारी सांकेतिक करने के लिए एक 4-स्टेट बारकोड का उपयोग करती हैं। ASCII में प्रस्तुत, यह कुछ इस तरह दिख सकता है:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
4-स्टेट बारकोड बार की एक पंक्ति है। प्रत्येक बार को 4 संभावनाओं की अनुमति देते हुए ऊपर, नीचे या दोनों तरफ बढ़ाया जा सकता है। इसका मतलब है कि प्रत्येक बार अनिवार्य रूप से आधार 4 अंक का प्रतिनिधित्व करता है:
| | बार: | | | | | | अंक: 0 1 2 3
इस सहजीवन के साथ समस्या यह है कि यह प्रत्येक बारकोड एक वैध, अलग बारकोड ऊपर की ओर है: यदि अभिविन्यास गलत है, तो इसका अर्थ काफी बदल जाता है। इसलिए, एक स्टार्ट और स्टॉप सीक्वेंस को आम तौर पर लागू किया जाता है ताकि स्कैनर यह गणना कर सके कि इसे किस तरीके से पढ़ा जाना चाहिए।
इस चुनौती के उद्देश्य के लिए, हम ऑस्ट्रेलिया पोस्ट द्वारा निर्दिष्ट स्टार्ट / स्टॉप अनुक्रम का उपयोग करेंगे: प्रत्येक बारकोड एक 1 0
अनुक्रम के साथ शुरू और समाप्त होता है ।
चुनौती
आपका कार्य एक प्रोग्राम या फ़ंक्शन लिखना है, जो एक सकारात्मक पूर्णांक दिया गया है N
, इसे एक ASCII 4-स्टेट बारकोड में परिवर्तित करता है, जहां प्रत्येक बार (स्टार्ट / स्टॉप अनुक्रमों को छोड़कर) बेस -4 प्रतिनिधित्व में एक अंक को दर्शाता है N
।
उदाहरण:
पूर्णांक को देखते हुए 19623
, हम पहले यह इसके आधार -4 प्रतिनिधित्व करने के लिए, बदल जाएगा 10302213
।
हम तब प्रत्येक अंक को संबंधित बार में मैप करेंगे:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
अंत में, हम स्टार्ट / स्टॉप सीक्वेंस जोड़ेंगे:
शुरूआत समाप्ति: १ ० १ १ ० | | | | | | | | | | | | | | | | | | | | | |
परिणामस्वरूप बारकोड प्रोग्राम का आउटपुट होना चाहिए।
नियम:
- इनपुट आपकी भाषा के मानक पूर्णांक आकार की सीमा के भीतर एक सकारात्मक पूर्णांक होगा।
- उत्पादन:
- हो सकता है या तो लाइनों की एक सूची, या एक स्ट्रिंग जिसमें newlines हों।
- जब तक आकार बरकरार रहता है, तब तक न्यूलाइंस / स्पेस में अग्रणी या अनुगामी हो सकते हैं।
- उपरोक्त प्रारूप के साथ बारकोड दिखाना चाहिए - बार ड्रॉ करते समय पाइप चरित्र (
|
) और स्पेस कैरेक्टर () का उपयोग करना चाहिए , और प्रत्येक ईमानदार बार के बीच में 1 स्थान होना चाहिए।
- यह कोड-गोल्फ है , इसलिए सबसे छोटा कार्यक्रम (बाइट्स में) जीतता है!
परीक्षण के मामलों
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |