बस हर दुकान के बारे में आजकल यूनिवर्सल उत्पाद कोड (यूपीसी) बारकोड का उपयोग करता है ताकि चेकिंग प्रक्रिया को सरल बनाया जा सके। यदि नाम का आपके लिए कोई मतलब नहीं है, तो आप निश्चित रूप से पहचान लेंगे कि वे क्या दिखते हैं:
स्वरूप
सबसे आम प्रणाली यूपीसी-ए है, जो प्रत्येक विशिष्ट उत्पाद का प्रतिनिधित्व करने के लिए 12 अंकों का उपयोग करती है। प्रत्येक अंक को कोड को सात बिट की लंबाई वाली मशीनों को पढ़ने की अनुमति देने के लिए काले और सफेद धारियों की एक श्रृंखला में एन्कोड किया गया है। बारकोड की शुरुआत, मध्य और अंत को इंगित करने वाले पैटर्न के कुल 11 बिट्स हैं। यह 12 × 7 + 11 = 95 बिट्स की कुल बारकोड लंबाई के लिए आता है। (अब से, जब बाइनरी का उपयोग प्रत्येक बिट के रंग को संदर्भित करने के लिए किया जाता है, 0
सफेद है और 1
काला है।)
शुरुआत और अंत दोनों का एक पैटर्न है 101
। अंकों को फिर 6 के 2 समूहों में विभाजित किया जाता है और नीचे दिखाए गए अनुसार एन्कोड किया जाता है, 01010
बाएं और दाएं समूहों के बीच एक पैटर्न के साथ । यह तालिका प्रत्येक संख्या के लिए पैटर्न को सूचीबद्ध करती है। ध्यान दें कि यदि यह अंक दाईं ओर या बाईं ओर है, तो यह पैटर्न अलग-अलग है (यह बारकोड को उल्टा स्कैन करने की अनुमति देता है)। हालाँकि, दाईं ओर का पैटर्न बाईं ओर के सफेद (इसके विपरीत सफेद और इसके विपरीत स्वैप ब्लैक) है।
यदि आप ऊपर की छवि नहीं देख सकते हैं, तो यह प्रत्येक संख्या के बाइनरी समकक्ष है।
# Left Right
0 0001101 1110010
1 0011001 1100110
2 0010011 1101100
3 0111101 1000010
4 0100011 1011100
5 0110001 1001110
6 0101111 1010000
7 0111011 1000100
8 0110111 1001000
9 0001011 1110100
उदाहरण
कहते हैं कि आपके पास यूपीसी है 022000 125033
। (वे यादृच्छिक संख्याएँ नहीं हैं। यदि आप उनके महत्व का पता लगाते हैं तो एक टिप्पणी छोड़ दें।) आप इस बॉयलरप्लेट से शुरू करते हैं जो हर बारकोड में समान है:
101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx101
अंकों के लिए, आप प्रत्येक को उसी तरफ (बाएं या दाएं) के लिए संबंधित एन्कोडिंग के साथ बदलते हैं। यदि आप अभी भी भ्रमित हैं, तो नीचे दी गई छवि देखें।
यहां बाइनरी में आउटपुट |
पाइप के साथ भागों को अलग करता है।
101|0001101|0010011|0010011|0001101|0001101|0001101|01010|1100110|1101100|1001110|1110010|1000010|1000010|101
चुनौती
एक प्रोग्राम लिखें जो उपयोगकर्ता इनपुट के लिए यूपीसी-ए बारकोड को आउटपुट करता है। छवि का आयाम 95 × 30 पिक्सेल होना चाहिए, जिसमें प्रत्येक "बिट" एक पिक्सेल चौड़ा और 30 पिक्सेल लंबा होगा। काली धारियाँ अंदर होती हैं rgb(0, 0, 0)
और सफेद धारियाँ लगातार पारदर्शी होती हैं या rgb(255, 255, 255)
।
टिप्पणियाँ
- स्टड या कमांड लाइन से इनपुट लें, या एक फ़ंक्शन लिखें जो एक स्ट्रिंग या पूर्णांक लेता है (ध्यान दें कि इनपुट में अग्रणी शून्य हो सकते हैं, और अधिकांश भाषाएं उन्हें हटा देती हैं या संख्या को ऑक्टल में बदल देती हैं)।
- निम्न तरीकों में से किसी एक में आउटपुट करें:
- इसे अपनी पसंद के नाम और प्रारूप (PNG, PBM, आदि) वाली फ़ाइल में सहेजें।
- इसे स्क्रीन पर प्रदर्शित करें।
- स्टडआउट के लिए अपने फ़ाइल डेटा आउटपुट।
- आप पुस्तकालयों या बिल्डरों का उपयोग नहीं कर सकते हैं जो बारकोड उत्पन्न करते हैं ( मैं आपको देख रहा हूं, गणितज्ञ ), हालांकि आप छवि या ग्राफिक्स पुस्तकालयों का उपयोग कर सकते हैं।
- UPC का अंतिम अंक आमतौर पर एक चेक अंक होता है , लेकिन इन उद्देश्यों के लिए आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।
उदाहरण
अपने कोड का परीक्षण करने के लिए यहां कुछ और उदाहरण दिए गए हैं। सुविधा के लिए बाइनरी आउटपुट भी दिया गया है।
इनपुट: 012345678910
आउटपुट:
10100011010011001001001101111010100011011000101010101000010001001001000111010011001101110010101
इनपुट: 777777222222
आउटपुट:
10101110110111011011101101110110111011011101101010110110011011001101100110110011011001101100101
स्कोरिंग
यह कोड गोल्फ है , इसलिए सबसे छोटा सबमिशन (बाइट्स जीत में)। टाईब्रेकर सबसे शुरुआती पद पर जाता है।
["777777","222222"]