ओवल और स्टिक के रूप में मुद्रित द्विआधारी मूल्यों को नेत्रहीन करना इतना आसान नहीं है ... इसके साथ मदद करने के लिए, आपको एक फ़ंक्शन (या प्रोग्राम) लिखना होगा जो कस्टम बाइनरी प्रतिनिधित्व में संख्या प्रिंट करता है।
इसलिए मैं एक संख्या लेना चाहता हूं, 3 कहता हूं ( 00000011
) और उपयोगकर्ता-परिभाषित प्रारूप में बिट्स का उत्पादन करता हूं , उदाहरण के लिए अंतरिक्ष अलग जोड़े के साथ:
00 00 00 11
या, कहें, उलटे क्रम में और कुछ सज्जाकारों के साथ, जैसे:
11_00_00_00
इसके अलावा, कस्टम वर्णों के रूप में '0' और '1' को दिखाने के लिए उन्हें अलग पहचान देने के लिए प्रतिबल होना चाहिए, जैसे:
XX oo oo oo
तो चुनौती है उस कोड को लिखना जो सभी विनिर्देशन को पूरा करता है।
विशिष्टता
फ़ंक्शन इस तरह से इनपुट लेता है: एफ (ए, मुखौटा, शून्य, वाले)
पैरामीटर:
ए - इनपुट नंबर - 0-255 की सीमा में कोई भी (अहस्ताक्षरित) पूर्णांक।
मास्क - एक स्ट्रिंग पैरामीटर जो आउटपुट के निर्माण को परिभाषित करता है।
शून्य - एक ही लंबाई की एक स्ट्रिंग, प्रत्येक आउटपुट स्लॉट के लिए 'शून्य' ग्लिफ़ को परिभाषित करती है।
लोगों - एक ही लंबाई की एक स्ट्रिंग, प्रत्येक उत्पादन स्लॉट के लिए परिभाषित करता है 'एक' ग्लिफ़।
आउटपुट निर्माण के नियम:
आउटपुट कैसे उत्पन्न होता है यह समझने के लिए उदाहरण के साथ इस छवि को करीब से देखें:
तो मुखौटा में केवल एकल अंक को पार्स किया जाता है और ए के संगत बिट्स द्वारा प्रतिस्थापित किया जाता है, अन्य वर्णों को छोड़ दिया जाता है । इसके अलावा, यदि लिया गया बिट का मान 1 है तो यह अंतिम आउटपुट में "X" के रूप में दिखाई देता है और यदि यह 0 है तो यह "o" के रूप में दिखाई देता है। उपर्युक्त उदाहरण में सभी चार बिट्स "1" हैं, इसलिए हम सभी स्लॉट में "X" देखते हैं।
यदि इनपुट संख्या 128 थी, तो, तार्किक रूप से, आउटपुट होगा X foo bar ooo
। "शून्य" और "वाले" मापदंडों में वर्ण: कोई भी मुद्रण योग्य ASCII वर्ण, मान लें कि वे हमेशा मुखौटा के साथ चार-संरेखित होते हैं।
नोट :
- बिट्स 0-अनुक्रमित हैं: 0 वां बिट एमएसबी है।
- मान लें कि मास्क स्ट्रिंग में अंक 8,9 की अनुमति नहीं है।
- इनपुट स्ट्रिंग्स में किसी भी मुद्रण योग्य ASCII वर्ण शामिल हैं।
- 'ज़ीरोस' और 'अप्स' चार-मास्क के साथ संरेखित हैं।
- आपकी भाषा में विशेष वर्ण / संशोधक के लिए: हम मान सकते हैं कि वे इनपुट स्ट्रिंग में दिखाई नहीं देंगे।
स्पष्टता के लिए, अधिक उदाहरण देखें।
इनपुट -> आउटपुट उदाहरण
सभी 8 बिट्स को सामान्य अंडाकार और स्टिक संकेतन में एक अंतरिक्ष सीमांकक के साथ सामान्य क्रम में आउटपुट करें:
mask = "0123 4567"
zeros = "0000 0000"
ones = "1111 1111"
A=1 -> 0000 0001
उत्पादन उलट क्रम में, डैश-एंड-ग्लिफ़ नोटेशन में:
mask = "| 7654 3210 |"
zeros= " ---- ---- "
ones = " ssss ssss "
A=1 -> | s--- ---- |
A=3 -> | ss-- ---- |
A=128-> | ---- ---s |
पैक किए गए डेटा के लिए एक आउटपुट में विविध अधिसूचनाएं:
mask = "0 | 123 4567"
zeros= " --- ----"
ones = "X kkk ssss"
A= 15 -> | --- ssss
A= 16 -> | --k ----
A= 32 -> | -k- ----
A= 128 -> X | --- ----
A= 255 -> X | kkk ssss
दोहराए जाने वाले पैटर्न:
mask = "| 7 66 555 4444 |"
zeros= " . .. ... .... "
ones = " 0 00 000 0000 "
A= 0 -> | . .. ... .... |
A= 1 -> | 0 .. ... .... |
A= 2 -> | . 00 ... .... |
A= 3 -> | 0 00 ... .... |
A= 4 -> | . .. 000 .... |
अपडेट करें
नियमों को थोड़ा सरल किया गया है - कार्यक्रम को केवल एक नंबर प्रिंट करना चाहिए (न कि सरणी / संख्याओं की सूची जैसा कि शुरू में प्रस्तावित किया गया था)।
A
है, क्योंकि यह सभी परीक्षण मामलों में समान है