एक कोड पृष्ठ कोड


15

परिचय

एक कोड पृष्ठ एक विशिष्ट चरित्र में पूर्णांक मानों को मैप करता है। हम इस तरह एक कोड पृष्ठ की कल्पना कर सकते हैं:

+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ए | B | सी | डी | ई | एफ |
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +
| 0 | क्ष | w | ई | आर | टी | z | यू | मैं | ओ | पी | ए | s | डी | च | जी | जे |
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +
| 1 | के | ल | y | x | सी | वी | बी | एन | एम | क्यू | डब्ल्यू | ई | आर | टी | जेड | यू |
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +
| 2 | मैं | ओ | पी | ए | एस | डी | एफ | जी | एच | जे | | | | | | |
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +

पंक्तियाँ पहले अंक को निर्दिष्ट करती हैं और हेक्स-संख्या के दूसरे अंक को कॉलम।

चुनौती

16-255 अद्वितीय वर्णों की एक स्ट्रिंग को देखते हुए, स्ट्रिंग में प्रत्येक वर्ण के शून्य-आधारित सूचकांक का उपयोग करके संबंधित कोड पृष्ठ को आउटपुट करें क्योंकि यह मूल्य है। qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJउदाहरण के लिए इनपुट ऊपर की तालिका प्राप्त करेगा।

  • आउटपुट को ठीक उसी प्रारूप में होना चाहिए, जैसा ऊपर दी गई तालिका में है। केवल एक अनुगामी न्यूलाइन वैकल्पिक है।
  • यदि इनपुट की लंबाई 16 से अधिक नहीं है, तो आपको शेष वर्णों के लिए एक नई पंक्ति शुरू करने और अप्रयुक्त कोशिकाओं को खाली छोड़ने की आवश्यकता है (= 3 रिक्त स्थान से भरा)।
  • प्रत्येक वर्ण को एक कक्ष के ठीक मध्य में रखा गया है, जिसे बाईं और दाईं ओर एक स्थान पर रखा गया है।
  • पहली पंक्ति और स्तंभ में मान अंकों के साथ हेक्स-संख्याओं द्वारा दिए गए हैं 0123456789ABCDEF। वे बाईं और दाईं ओर एक स्थान के साथ गद्देदार होते हैं। आप लोअरकेस-अंक का उपयोग करने का चयन कर सकते हैं, लेकिन आपको एक से चिपके रहने की आवश्यकता है।
  • आउटपुट में मौजूद एकमात्र वर्ण हाइफ़न -, प्लसस +, पाइप |, रिक्त स्थान , हेक्साडेसिमल संख्याओं के लिए अंक और इनपुट से वर्ण हैं।
  • कोई भी निर्माण जो ASCII- कला तालिकाओं से संबंधित है या किसी भी तरह से समस्या का तुच्छ वर्णन करने से मना किया जाता है।
  • आप मान सकते हैं कि इनपुट में केवल विशिष्ट एन्कोडिंग के वर्ण हैं। कृपया निर्दिष्ट करें कि क्या ऐसा है।
  • यदि आपकी भाषा केवल ASCII इनपुट को संभाल सकती है, तो आप ASCII- केवल इनपुट और दोहराया वर्ण मान सकते हैं।

नियम

हैप्पी कोडिंग!


क्या हम लोअरकेस हेक्स अंकों का उपयोग कर सकते हैं?
दरवाज़े

@Doorknob हां, चुनौती में इसे स्पष्ट किया।
डेनकर

1
क्या हम मान सकते हैं कि इनपुट ASCII है (संभवतः दोहराए गए वर्णों के साथ)?
लुइस मेंडो

@DenkerAffe "अद्वितीय" शब्द के साथ या "255" शब्द के साथ 16-255 अद्वितीय वर्णों की एक स्ट्रिंग को देखते हुए संघर्ष करेगा , हालांकि ...
लुइस मेंडो

1
@LuisMendo हम्म, सच है। गोना अनुमति देता है कि उन भाषाओं के लिए जो केवल ASCII को संभाल सकती हैं।
डेन्कर

जवाबों:


7

अजगर, 60 बाइट्स


K+*"+---"hJ16\+Vm++"| "j" | "d" |"+]+]d.HMJ.e+.Hk.[bdJczJNK

अग्रणी न्यूलाइन महत्वपूर्ण है।

इसे यहाँ आज़माएँ।


क्या आप परिवर्तित कोड दिखा सकते हैं?
कैलक्यूलेटरफैलीन

@CatsAreFluffy ऑनलाइन दुभाषिया में डिबग मोड को सक्षम करें।
डेन्कर

न्यूलाइन क्या करती है?
लीक नून

@ अदनान व्हाट्स, कि मेरी ओर से एक निरीक्षण था। निश्चित, धन्यवाद।
दरवाज़े

@ केनीलाऊ यह पहले प्रिंट करता है +---+---+---[...]। Pyth में, newline फ़ंक्शन प्रिंट करता है और अपना तर्क देता है।
दरवाज़े

5

पायथन 3.5, 326 355 बाइट्स:

( +29 बाइट्स के बाद से अगर अंतिम पंक्ति की लंबाई 16 से अधिक नहीं है, तो अप्रयुक्त कोशिकाओं को खाली छोड़ दिया जाना चाहिए (हालांकि, मेरी राय में, यह बहुत अच्छा लगता है अगर उन खाली कोशिकाओं को अभी भी नहीं दिखाया गया है )

def f(r):o=' 0123456789ABCDEF';r=[r[0+i:16+i]for i in range(0,len(r),16)];print('+---'*17+'+\n|',end='');[print(' {} |'.format(h),end='')for h in o];print(''.join([str(e+' | ')if e.isdigit()or e.isalpha()else str(e)for e in''.join([str('\n'+'+---'*17+'+\n| '+x[0]+x[1])for x in zip(o[1::1],r)])]),end='');print('  |'+'   |'*(15-len(r[-1]))+'\n'+'+---'*17+'+')

एक जादू की तरह काम करता है!

नमूना इनपुट और आउटपुट:

Input: 'hopper'

Output:

    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |   | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0 | h | o | p | p | e | r |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Input: 'honkhonkhonkhonkhonk'

Output:

    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |   | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0 | h | o | n | k | h | o | n | k | h | o | n | k | h | o | n | k | 
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 1 | h | o | n | k |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Input: 'hi'

Output: 

    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |   | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0 | h | i |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

मुझे उम्मीद है कि यह ठीक है।

इसके अलावा, यहाँ एक और संस्करण है जिसे मैंने इस चुनौती के लिए बनाया है, जो कि एक अमान्य उम्मीदवार है, क्योंकि यह अंतिम पंक्ति के लिए अतिरिक्त खाली कोशिकाओं को प्रिंट नहीं करता है, यदि इसकी लंबाई एक से अधिक 16 नहीं है, तो मेरी राय में यह बेहतर दिखने वाले पृष्ठ का उत्पादन करता है ओपी द्वारा आवश्यक एक की तुलना में, मुख्य रूप से क्योंकि यह खाली कोशिकाओं को भी नहीं दिखाता है यदि अंतिम पंक्ति 16 से अधिक नहीं है, लेकिन इसके बजाय सिर्फ भरे हुए कोशिकाओं को दिखाता है, और यह है:

def f2(r):o=' 0123456789ABCDEF';r=[r[0+i:16+i]for i in range(0,len(r),16)];print('+---'*17+'+\n|',end='');[print(' {} |'.format(h),end='')for h in o];print(''.join([str(e+' | ')if e.isdigit()or e.isalpha()else str(e)for e in''.join([str('\n'+'+---'*17+'+\n| '+x[0]+x[1])for x in zip(o[1::1],r)])]));print('+---'*(len(r[-1])+1)+'+')

ऊपर दिए गए अनुचित कोड के लिए यहां एक नमूना इनपुट और आउटपुट है:

Input: 'ggreuuobgugoubgoubguorgoruguor'

Output:

    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |   | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 0 | g | g | r | e | u | u | o | b | g | u | g | o | u | b | g | o | 
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 1 | u | b | g | u | o | r | g | o | r | u | g | u | o | r | 
    +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

    (As you can see, there are no empty cells shown in the entire table. This looks much better to me.)

" यदि इनपुट की लंबाई 16 की एक से अधिक नहीं है, तो आपको शेष वर्णों के लिए एक नई पंक्ति शुरू करने और अप्रयुक्त कोशिकाओं को खाली (= 3 स्थानों से भरा) छोड़ने की आवश्यकता है। "
लीक नून

@ केनीलाऊ आह, हाँ। मैंने वो नहीं देखा। डांग ... अभी प्रगति पर है। ईमानदारी से, हालांकि, यह एक ओपी शो की तुलना में बहुत बेहतर दिखता है, आपको नहीं लगता?
आर। कप

क्यों गिरा वोट?
आर। कप

@ R.Kap मैं आपको काफी कुछ नहीं बता सकता, लेकिन यहाँ,
कैट


1

जावास्क्रिप्ट (ईएस 6), 148 बाइट्स

s=>(s=' 0123456789ABCDEF'+s+' '.repeat(15)).match(/(?!^).{16}/g).map((t,i)=>d+`+
| `+[s[i],...t].join` | `,d=`+---`.repeat(17)).join` |
`+` |
${d}+`

' 0123456789ABCDEF'पहले कॉलम को भरने के लिए मौजूद है, लेकिन सुविधा भी पहली पंक्ति को शामिल किया गया। इनपुट स्ट्रिंग को तब रिक्त स्थान के साथ गद्देदार किया जाता है, ताकि इसे (?|^)मिलान किए जाने वाले प्रमुख स्थान को रोकने के साथ लंबाई 16 के सबस्ट्रिंग में विभाजित किया जा सके। बाकी सिर्फ टुकड़ों में जुड़ रहा है।


1

एक्सेल VBA, 157 बाइट्स (धोखा?)

बेनामी VBE तत्काल विंडो फ़ंक्शन जो विनाशकारी रूप से सीमा से इनपुट लेता है [A1]और आउटपुट करता हैActiveSheet ऑब्जेक्ट है।

golfed

[B1:Q1]="=Dec2Hex(Column(B1)-2)":L=[Len(A1)]:For i=0To l:Cells(Int(i/16)+2,i Mod 16+2)=Mid([A1],i+1,1):Next:For i=1To Int(l/16)+1:Cells(i+1,1)=i:Next:[A1]=""

प्रारूपित

[B1:Q1]="=Dec2Hex(Column(B1)-2)"
L=[Len(A1)]
For i=0To l:Cells(Int(i/16)+2,i Mod 16+2)=Mid([A1],i+1,1):Next
For i=1To Int(l/16)+1:Cells(i+1,1)=i:Next
[A1]=""

इनपुट आउटपुट

दिया हुआ:

[A1]="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJ"

उत्पन्न आउटपुट है

टेबल वाली बात


probs मान्य नहीं है, लेकिन वैसे भी शांत। इसे अधिक समान बनाने के लिए (लेकिन अभी भी अमान्य है?) आपको उचित सेल बोर्डर चालू करना चाहिए।
लिंडन व्हाइट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.