Mark Watney के लिए ASCII-to-hex टेबल बनाएँ


25

इस SciFi.SE प्रश्न से प्रेरित है।


पृष्ठभूमि (मामूली स्पॉइलर के साथ):

द मार्टियन फिल्म में , नायक मार्क वाटनी ASCII वर्णों के हेक्साडेसिमल मूल्यों को देखने के लिए एक ASCII तालिका का उपयोग करता है ताकि वह पृथ्वी पर वापस संचार करने का प्रयास कर सके। *

चुनौती

कोई इनपुट के साथ, निम्न ASCII तालिका को इस तरह से आउटपुट करें:

Dec Hex    Dec Hex    Dec Hex  Dec Hex  Dec Hex  Dec Hex   Dec Hex   Dec Hex  
  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p
  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q
  2 02 STX  18 12 DC2  34 22 "  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r
  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s
  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t
  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u
  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v
  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w
  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x
  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y
 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z
 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {
 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \  108 6C l  124 7C |
 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }
 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~
 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL

अंतिम न्यूलाइन वैकल्पिक है। न्यू लाइन के साथ, उत्पादन की md5 है 58824a1dd7264c0410eb4d727aec54e1। बिना, यह है 41b6ecde6a3a1324be4836871d8354fe

यदि यह मदद करता है, तो यह शीर्ष काटे गए उपयोग की जानकारी के साथ asciiलिनक्स कमांड से आउटपुट है। आप इसे इस प्रकार उबंटू पर फिर से बना सकते हैं:

sudo apt-get install ascii
ascii | tail -n+7

आप अपने उत्तरों में उपयोगिता (या समान) का उपयोग नहीं कर सकते हैंascii

क्योंकि ASCII अक्षर पहले से ही इस मूर्खतापूर्ण मेम के साथ छोटे हैं !


मुझे पता है कि यह ASCII तालिका प्रिंट करने के समान है , लेकिन मेरा मानना ​​है कि इस प्रश्न में आउटपुट का प्रारूपण बहुत अधिक जटिल है और एक अलग प्रश्न का वारंट करता है।


* ध्यान दें, मैंने अभी तक यह फिल्म नहीं देखी है।


1
तो कार्यक्रम हार्ड कोडित किया जा सकता है ??
तन्माथ

@TanMath क्या आप asciiउत्तर में उपयोगिता के उपयोग की बात कर रहे हैं - यदि हां, तो मेरा संपादन देखें - इसकी अनुमति नहीं है।
डिजिटल ट्रामा

4
मूर्खतापूर्ण मेम के लिए +1 ... लेकिन बिना इनपुट के साथ एक और चुनौती क्यों?
edc65

2
@ msh210 कोड-गोल्फ टैग का अर्थ है बाइट्स में सबसे छोटा कोड यदि अन्यथा न कहा जाए । मैं DRY सिद्धांत लागू करने की कोशिश कर रहा हूँ ;-)। इसी तरह, जब तक अन्यथा नहीं कहा जाता है, प्रविष्टियाँ कार्यक्रम या कार्य हो सकती हैं
डिजिटल ट्रामा

1
व्हॉट्सएप को ट्रायल करना बिल्कुल दिखाया जाना चाहिए? (यानी पहली पंक्ति में रिक्त स्थान, दूसरों पर कोई नहीं)
स्तर नदी सेंट

जवाबों:


19

जावास्क्रिप्ट (ईएस 6), 323 332 353

संपादित करें मैं इसे थोड़ा
चरण 1 में छोटा करने में कामयाब रहा , यह विश्वास करो या न करो, 16 वर्णों की एक सरणी का उपयोग करना toString+ toUpperCase
चरण 2 से छोटा है , .mapइसके बजाय उपयोग करने के लिए चारों ओर forफ़िदेलिंग, ताकि मैं इसे एक एकल अभिव्यक्ति फ़ंक्शन में बदल सकूं, एविडिंग कंसोल.लॉग और / या वापसी।

2 संपादित करें DEL को 0 स्थान पर ले जाया गया, कोल कैमरन से उधार लिया गया विचार

H=x=>(x=[...'0123456789ABCDEF']).map((d,r)=>x[S='slice'](0,8).map(c=>(o+=`   ${w=c*16+r} ${c+d} `[S](-z)+("DELNULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ".substr((w+1&127)*3,3)||String.fromCharCode(w)),z=c<5?8:9,'Dec Hex   '[S](0,c<2?z+2:z)),o+=`
`,z=7).join` `,o='')[0]+o

MD5: 41B6ECDE6A3A1324BE4836871D8354FE

पिक्सेल सही, मैं कहूँगा

कम गोला दिया

H=x=>(
  x=[...'0123456789ABCDEF'],
  a="DELNULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ",
  o='', // the string o will contain the body (16 rows)
  x.map((d,r)=> ( // main loop, r is thr row number, d is the second hex digit to print
    o+=`\n`, z=7,
    x.slice(0,8).map(c=> // loop on 8 columns, c is both column number and digit to print
      (
        // append the column to o
        o += `   ${w=c*16+r} ${c+d} `.slice(-z) + (a.substr((w+1&127)*3,3)||String.fromCharCode(w)), 
        z=c<5?8:9, // adjust the column size
        'Dec Hex   '.slice(0,c<2?z+2:z) // column head, right size
      ) // the .map result is the 8 columns heading
    ).join` ` // join the heading in a single string
  ))[0] // any element of the result map is the heading
  + o // concatenate the body
)

परीक्षा

H=x=>(x=[...'0123456789ABCDEF']).map((d,r)=>x[S='slice'](0,8).map(c=>(o+=`   ${w=c*16+r} ${c+d} `[S](-z)+("DELNULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ".substr((w+1&127)*3,3)||String.fromCharCode(w)),z=c<5?8:9,'Dec Hex   '[S](0,c<2?z+2:z)),o+=`
`,z=7).join` `,o='')[0]+o

/* TEST */ 
console.log=x=>O.textContent=x

console.log(H())
<pre id=O></pre>


11

सी, 307 310 308 307 305 बाइट्स

अंत में 100% काम कर रहा है।

i,j,z=127;main(){for(;j++<8;)printf("Dec Hex%*s",j<3?4:j<6||j>7?2:3,"");for(;i<143&&putchar(!i|i>z?10:32);i+=16)i=i>z?i%z:i,printf("%*d %02X ",i>95?4:3,i,i),i%z>31?putchar(i):printf("%.3s","DELNULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US "+(i+1)%128*3);}

आउटपुट:

$ ./a.out
Dec Hex    Dec Hex    Dec Hex  Dec Hex  Dec Hex  Dec Hex   Dec Hex   Dec Hex
  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p
  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q
  2 02 STX  18 12 DC2  34 22 "  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r
  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s
  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t
  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u
  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v
  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w
  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x
  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y
 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z
 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {
 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \  108 6C l  124 7C |
 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }
 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~
 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL$ ./a.out > file.txt
$ md5sum file.txt
41b6ecde6a3a1324be4836871d8354fe  file.txt

Ungolfed:

/* some variables for the trip */
i,j,z=127;

main()
{
    /* print header row */
    for(;j++<8;)
            printf("Dec Hex%*s", j<3?4:j<6||j>7?2:3, "");

    /* Iterate through ASCII values, print a space after every column, newline after every 8th value */
    for(;i<143 && putchar(!i|i>z ? 10 : 32); i+=16)
    {
            /* print dec/hex value */
            printf("%*d %02X ", i>95?4:3, i, i=i>z?i%z:i);

            /* print character or friendly name for non-printable characters */
            i%z>31
                    ? putchar(i)
                    : printf("%.3s", "DELNULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US "+(i+1)%128*3);
    }
}

Ideone पर इसे आज़माएं

संपादित करें: 2 और बाइट्स। डैन एलन और डिजिटल ट्रॉमा के लिए बहुत धन्यवाद।



@DigitalTrauma: आप जीसीसी में कर सकते हैं। आप सी। में नहीं कर सकते हैं
DevSolar

2
@DevSolar यह कोई GCC चीज नहीं है। K & R C में, संकलक, जिसमें प्रिंटफ और पुशर की घोषणा नहीं है, अनुमान लगाएगा, और सही अनुमान लगाएगा। दूसरी ओर, यह मानक C99 में अपरिभाषित व्यवहार है, लेकिन कौन परवाह करता है - यह सभी संकलकों में अपेक्षित रूप से काम करता है जो मुझे पता है
edc65

1
305 यदि आप x,y,z=127;z के साथ 127 की 4 घटनाओं को पहली पंक्ति में बदलते हैं और प्रतिस्थापित करते हैं। 6 अक्षर जोड़ता है लेकिन 8 को दूर ले जाता है।
Persixty

चतुर चाल, DEL को पहले स्थान पर रखना। मैं इस विचार को उधार लूंगा। मैं इस एक के लिए अब upvote होगा, लेकिन मैं पहले से ही कल कल :)
edc65

7

बबलगम , 535 बाइट्स

0000000: e0 05 2f 02 0f 5d 00 22 19 48 62 01 d3 1f 78 e2  ../..].".Hb...x.
0000010: 9a a0 8e 4e 5d d1 b4 c1 77 aa 32 58 ca 97 55 7e  ...N]...w.2X..U~
0000020: a8 01 87 7d db e4 00 55 8f c0 49 67 b6 56 02 5e  ...}...U..Ig.V.^
0000030: ae b2 4d e2 a9 f4 7f 99 a8 56 9e b7 4c 60 a4 79  ..M......V..L`.y
0000040: 6a 76 54 11 90 72 d6 b7 19 df 2f 57 39 2d 21 c0  jvT..r..../W9-!.
0000050: d1 4c 5e d6 21 29 c8 ed 7c a9 7b 8c 85 dc 62 a1  .L^.!)..|.{...b.
0000060: 65 98 e1 0b a7 36 83 c8 ca 88 0c 57 22 f6 56 1e  e....6.....W".V.
0000070: 45 03 b6 74 21 a8 39 52 e9 71 b4 98 ed 71 38 9f  E..t!.9R.q...q8.
0000080: 2d dc 21 d7 bf 60 41 cc bb bd a7 cb 0b 17 8d 65  -.!..`A........e
0000090: 05 13 04 0f 6c bb 67 62 aa c7 ad 6b be 9e 46 77  ....l.gb...k..Fw
00000a0: 35 b9 91 85 f5 47 31 2f c7 ec da c0 00 0e a6 48  5....G1/.......H
00000b0: 01 ba 8b cd b0 34 81 c4 74 9f 4e 3b c3 d0 f7 10  .....4..t.N;....
00000c0: 46 a0 55 8d 49 5d b7 b0 c9 79 ac e5 5f ef 49 f2  F.U.I]...y.._.I.
00000d0: b0 1b 71 3a e1 30 7a fc ce a7 a8 d5 c3 9a 35 1a  ..q:.0z.......5.
00000e0: 4e 27 92 40 4b b5 9b c4 0d 5c e8 cd 71 00 bd c1  N'.@K....\..q...
00000f0: ca aa d2 05 dc e1 0f d9 19 1d 6f 14 87 b3 e4 e8  ..........o.....
0000100: 9e 82 64 d8 e4 76 e7 24 0a 0e 88 72 a1 12 44 95  ..d..v.$...r..D.
0000110: d4 78 82 bd da 71 f3 fb 03 00 d1 4b c8 80 cb 49  .x...q.....K...I
0000120: 0b 98 be 26 ba 3e e8 82 e2 14 9b ba 1a cf bf bc  ...&.>..........
0000130: 30 4e c4 e8 7e b4 d5 46 e6 bc 73 97 c5 ed a6 e2  0N..~..F..s.....
0000140: 06 02 e7 1b 74 4d da 73 fb 15 68 50 c0 ed 32 9b  ....tM.s..hP..2.
0000150: 0d d7 49 d5 c1 a2 e9 07 2c 77 81 6c d3 8d 59 26  ..I.....,w.l..Y&
0000160: 1c 35 ec 2b 7e cb 3a f1 cc 45 a9 e5 6d 3e 33 ca  .5.+~.:..E..m>3.
0000170: 56 3c 8a 8d f6 13 e9 59 d4 52 07 44 ab 5e bc f4  V<.....Y.R.D.^..
0000180: 1f ed f8 9c 8b 48 e1 c4 6c fd 47 d5 04 cc 6e aa  .....H..l.G...n.
0000190: 3f 54 b8 cc cd 09 01 6d 20 3c 42 c9 44 da b1 c1  ?T.....m <B.D...
00001a0: 69 80 12 26 6b 65 e1 4d 1c c3 48 36 2b 14 00 61  i..&ke.M..H6+..a
00001b0: 04 6b 9a 59 2a 53 e3 64 a7 4f dd cc be 2c 20 5e  .k.Y*S.d.O..., ^
00001c0: f7 c7 64 34 e6 12 a6 44 c1 69 35 76 05 db 13 ab  ..d4...D.i5v....
00001d0: 52 10 b5 8e da 8e c5 3c 4c d0 69 0b 19 18 67 ef  R......<L.i...g.
00001e0: 44 1c 7b 70 63 98 95 40 28 6e 3d e7 44 cb 24 83  D.{pc..@(n=.D.$.
00001f0: 88 62 63 3c 02 1c e7 db db 02 56 ae cd 9c e0 9c  .bc<......V.....
0000200: 1c a1 c1 ae d1 dd 7b b7 e6 bd 5b 38 ee 75 c5 6c  ......{...[8.u.l
0000210: 06 16 6c b2 fb 00 00                             ..l....

यह उपरोक्त कार्यक्रम LZMA संपीड़न का उपयोग करता है। इसे ऑनलाइन आज़माएं!


1
मुझे लगता है कि आप इससे बेहतर कर सकते हैं ... ;-)
डिजिटल ट्रॉमा 20

11
बबलगम में नहीं ...
डेनिस

4
आपको पूरे उपन्यास द मार्टियन को मुद्रित करने के लिए कितने बाइट्स की आवश्यकता होगी ?
एलेक्स ए।

1
@DigitalTrauma यह आसान है ... आपको केवल SHA-256 पर एक उपसर्ग के हमले को अंजाम देना है ...
LegionMammal978

3

सी, 385 384 358 बाइट्स

i,n,j;char a[100]="NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US DEL";z(o){printf("%3d %02X %.*s ",j,j,3,a+o);}main(){for(;i<8;i++){printf("%3s %3s   ","Dec","HEX ");}printf("\n");for(;n<16;n++){for(j=n;j<=n+112;j+=16){if(j==127)z(96);else j<32?z(j*3):printf("%3d %02X %c   ",j,j,j);}printf("\n");}return 0;}

ऊपर वाले ने मुझे पंच मार दिया लेकिन मैं अभी भी जमा करना चाहता था क्योंकि मुझे यह पसंद था।

डी-golfed:

#include<stdio.h>
i,n,j;
char a[100] = "NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US DEL";
z(o){printf("%3d %02X %.*s ",j,j,3,a+o);}
main(){
   for(;i<8;i++){printf("%3s %3s   ","Dec","HEX ");}printf("\n");
   for(;n<16;n++){
      for(j=n;j<=n+112;j+=16){
         if(j==127)z(96);
         else j<32?z(j*3):printf("%3d %02X %c   ",j,j,j);
      }
      printf("\n");
   }
   return 0;
}

अद्यतन: जम्मू के साथ एक संस्करण की जगह। एक बाइट को बचाया;)
UPDATE2: कुछ अतिरिक्त चीज़ों की छंटनी की और कुछ बाइट्स को बचाने के लिए एक प्रिंट चीज़ का कार्य किया।


कई उत्तरों के समान, आपके पास कॉलम के बीच सही रिक्ति नहीं है। इसके अलावा s/HEX/Hex/
डिजिटल ट्रॉमा

मैंने thingy सी कीवर्ड को समझाने वाले अध्याय को याद किया होगा; --P
डिजिटल ट्रॉमा

3

जावास्क्रिप्ट ईएस 6 432 405 398 385

o="Dec Hex  "
o=`${o}  ${o}  ${o+o+o+o} ${o} ${o}\n`
for(i=0;i<16;i++){for(j=0;j<8;j++){k=i+j*16
o+=k>9&&k<16?' ':k<96||k>99?'  ':'   '
o+=k+" "+(k<16?0:'')+k.toString(16).toUpperCase()+" "
o+=k>31?String.fromCharCode(k):"NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ".substr(k*3,3)
}o+="\n"}
console.log(o.substr(0,o.length-2)+'DEL')

ES5 मैं इसे ले? ES6 आप की तरह बातें कर सकता है ${o} ${o} ${o+o+o+o} ${o} ${o}
नील

@ नील धन्यवाद! मैंने बदलाव जोड़ा और अनुगामी स्थान का ध्यान रखा गया है।
वोल्फहैमर

वास्तव में आप एक कदम आगे जा सकते हैं क्योंकि बैकलाइट्स के अंदर शाब्दिक नई रूपरेखा कानूनी है (यह सुनिश्चित नहीं है कि टिप्पणी में इसे कैसे प्रदर्शित किया जाए)।
नील

3

गोल्फस्क्रिप्ट, 225 बाइट्स

"\x04\x04\x02\x02\x02\x03\x03\x02"{"Dec Hex"" ":s@*}%n[128,{3s*\+-4>s+.~.96<@>\256+16base{10,"ABCDEF"1/+=}%1>{+}/}%"\x1f\xbb\x89\xbc\xaf\x82=F\xd7U%\x80\x8a\xf6\xc7U\xa6al)A\xf6\x19\xfe\x03\x83\xef-\x9f\xe7m\xeb\x82h\xf3\xbfEm6V\x1fD\x8c\xd7~\xcb\x95&(\x1e/:\x8e\xc5\xb0\x0b\xd6\xd4\xd09\xdd""\xff\x1e"{base}/{90,65>1342s++1/=}%3/32/"\x7f"{,32>}%1/*]zip{s*}%16/zip{s*n}%

3

पायथन 2.7, 389 बाइट्स

शायद यह अब और नीचे ट्रिम करने के लिए नहीं जा रहा है, लेकिन यह इसे दूर करने के लिए मजेदार था।

r=range
c='NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US '
h=''
p=['']*16
o=[11,11,9,9,9,10,10,9]
e=['%3s '%str(i)+('%02X ')%(i)+('DEL',c[i*3:i*3+3].strip() if i<32 else chr(i))[i<127] for i in r(128)]
for i in r(8):
    l=e[i*16:(i+1)*16]
    h+='Dec Hex'.ljust(o[i])
    p=[p[j]+l[j].ljust((0,o[i])[i<7]) for j in r(16)]
print h+'\n'+'\n'.join(p)

3

पायथन 3.4, 216 बाइट्स

साथ ही वैध पायथन 2.7। FryAmTheEggman के विचार / शाप के बारे में सुझाव का इस्तेमाल किया । कासिनी।कंट्रोलनाम, जो लगभग 100 बाइट्स बचाता है।

import curses.ascii as a
o=''
w=4,4,2,2,2,3,3,1
for x in w:o+='Dec Hex'+' '*x
o+=' '
for n in range(16):
 o+='\n'
 for x in w:o+='%3d %02X %-*s'%(n,n,x,n>31and[chr(n),'DEL'][n>126]or a.controlnames[n]);n+=16
print(o)

$ python ascii.py | md5
58824a1dd7264c0410eb4d727aec54e1

2

रूबी (2.2.2p95), 277 295 306 331 364

a='Dec Hex  ';puts"#{a}  "*2+a*4+" #{a}"*2,16.times.map{|i|8.times.map{|j|(k=i+j*16;k==127?'  127 7F DEL':"#{k} #{'%.2X'%k} #{'NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US  '[k*3..k*3+2]||k.chr}").rjust(j<2?10+j :9+j/6)}.join}

ungolfed

s = "Dec Hex    " * 2 + "Dec Hex  " * 4 + " Dec Hex  " * 2
a = 127.times.map { |i|
  "#{i} #{'%.2X'%i} #{'NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US  '[i*3..i*3+2]||i.chr}"
}
a << '  127 7F DEL'
x = 16.times.map { |i|
  8.times.map { |j|
    a[i + j * 16].rjust(j < 2 ? 10 + j : 9 + j / 6)
  }.join
}.join "\n"
puts s, x

नियंत्रण नाम सरणी वास्तव में मुझे यहाँ मारती है। अभी भी रूबी के लिए अजगर के शाप के समान कुछ खोजने की उम्मीद है ...
कॉनर क्लार्क

1

माइक्रोसेप्टिक II , 1314 बाइट्स

शायद इष्टतम से बहुत दूर।

"Dec Hex    "pp"Dec Hex  "ppps"Dec Hex   "ppoP"  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p\n  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q\n  2 02 STX  18 12 DC2  34 22 \"  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r\n  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s\n  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t\n  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u\n  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v\n  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w\n  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x\n  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y\n 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z\n 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {\n 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \\  108 6C l  124 7C |\n 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }\n 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~\n 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL"

2
मैं इसका परीक्षण कैसे करूं?
डिजिटल ट्रॉमा

@DigitalTrauma मैं उत्तर के लिए github रेपो की एक कड़ी जोड़ूंगा। प्रोग्राम के साथ दुभाषिया को इनपुट की पहली पंक्ति के रूप में चलाएं।
सुपरजेडी २२२४

बधाई। आपने इस प्रतियोगिता में सबसे उबाऊ उत्तर दिया। '_ó +1
user48538

@ zyabin101 अच्छी तरह से, यह संभवत: एक बार में स्ट्रिंग को प्रिंट करने की तुलना में लगभग 30 बाइट्स छोटा है।
SuperJedi224

1

जावास्क्रिप्ट, 415 413 423 1 411 406 402 414 2 412 बाइट्स

x=>eval('a=`${d="Dec Hex  "}  `[r="repeat"](2)+d[r](3)+`${d} `[r](2)+d+`
`;z="NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ".match(/.{3}/g);z[127]="DEL";for(j=i=0;i<128;i++){a+=("  "+((b=i%8*16)+j)).slice(-3)+" "+(0+(c=b+j).toString(16).toUpperCase()).slice(-2)+" "+(c<32||i==127?z[c]:String.fromCharCode(c))+(b==112?`
`:(b < 80 ? " " : "  "));if(b==112)j++}a')

मैं समझ नहीं पा रहा था कि चार्ट कोड 32 से पहले चार्ट को कैसे प्रिंट किया जाए, इसलिए उन्हें स्ट्रिंग के रूप में सूचीबद्ध किया जाए।

मुझे जो हैश मिला है, वह मैच ( 41b6ecde6a3a1324be4836871d8354fe) है।

डेमो + Ungolfed:

function t() {
  a = `${d="Dec Hex  "}  `.repeat(2) + d.repeat(3) + `${d} `.repeat(2) + d + "\n";
  z = "NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ".match(/.{3}/g);
  z[127] = "DEL";
  for (j = i = 0; i < 128; i++) {
    a += ("  " + ((b = i % 8 * 16) + j)).slice(-3) + " " + (0 + (c = b + j).toString(16).toUpperCase()).slice(-2) + " " + (c < 32 || i == 127 ? z[c] : String.fromCharCode(c)) + (b==112?"\n":(b < 80 ? " " : "  "));
    if(b==112)j++;
  }
  return a
}
document.write("<pre>" + t() + "</pre>")


1 - निश्चित रिक्ति
2 - फिर से निश्चित रिक्ति


हुह, मोबाइल क्रोम में <pre> मोनोस्पेस नहीं है, हालांकि यह होना चाहिए।
निकेल

मुझे नहीं लगता कि यह प्रश्न पूछने के लिए स्पेस को कम कर रहा है।
SuperJedi224 21

@ विग ओटी wff। मैं इस ०.१
nicael

@ डिजिटल मैंने रिक्ति तय की है।
निकेल

@ अंतिम कॉलम के बाद आप? ठीक है, लेकिन यह भी उपस्थिति को प्रभावित नहीं करता है ...
nikel

1

MATLAB, 363 बाइट्स

सी जितना छोटा नहीं है लेकिन तुलनीय ...

h='';s=@sprintf;for i=[4 4 2 2 2 3 3 2]h=s([h 'Dec Hex%*s'],i,'');end
h=[h 10];a='NULDLESOHDC1STXDC2ETXDC3EOTDC4ENQNAKACKSYNBELETBBS CANHT EM LF SUBVT ESCFF FS CR GS SO RS SI US ';for i=0:15for j=0:7k=i+16*j;if j<2b=1+6*i+3*j;h=[h s('%3d %02X %-3s ',k,k,a(b:b+2))];else
h=[h s('%*d %02X %c ',3+(j>5),k,k,k)];end
end
h=[h(1:end-1) 10];end
disp([h(1:end-2) 'DEL']);

क्या मुझे नि: शुल्क परीक्षण डाउनलोड करना है, या क्या कोई अन्य तरीका है जिससे मैं आपके उत्तर का परीक्षण कर सकता हूं? या क्या आप दावा कर सकते हैं कि आउटपुट का md5 सही है?
डिजिटल ट्रामा

आप इसे GNU ऑक्टेव में चला सकते हैं, लेकिन मैंने पहले ही किया था और इस संस्करण में कॉलम 6, 7 और 8 के बीच अतिरिक्त पैडिंग का अभाव है। इसके अलावा, यह सही है।
रेनर पी।

हाँ आप सही है। कोड को ठीक किया। यह तब होता है, अगर आपके पास गोल्फ और अनऑर्गोलेटेड वेरिएंट हैं। कुछ टाइपो को ठीक किया। दिलचस्प बात यह है कि मुझे एक अलग आस्की मिलती है। टेल-एन = + 7 (पहली पंक्ति के दो स्थान गायब हैं) (Ubuntu 15.10)। मैंने कभी ध्यान नहीं दिया, कि d और e नाम के matlab वैरिएबल्स में अलग-अलग व्यवहार होता है। (i = 1: 2d = 10; अंत;% सिंटैक्स त्रुटि) (i = 1: 2k / 10; अंत;% बस ठीक)
जोनास

1

/// , 998 बाइट्स

//\/\////  /Dec Hex/ 0/ 1/ 2/ 3/ 4/ 5/ 6	/ 7/ 8/ 9/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F /
 /  NUL 6DL280 4@ 0P6` 12	pSOH 7DC3! 91 51Q7a 13	qSTX 8DC4" 02 62R8b 14	rETX 9DC5# 13 73S9c 15	sEOT 0DC6$ 24 84T 00d 16	tENQ 1NAK 7% 35 95U 01e 17	uACK 2SYN 8& 46 	06V 02f 18	v	BEL 3ET9' 57	 	1G 7W 03g 19	wBS4CAN 0( 68 	2H 8X 04h 20	xHT5EM1) 79 	3I 9Y 05i 21	y
0L 6SU2* 8: 	4J 0Z 06j 22	z
1VT7ES3+ 9; 	5K 1[ 07k 23	{
2F 8FS4, 0< 	6L 2\\ 08l 24	|
3CR9GS5- 1= 	7M 3] 09m 25	}
4SO0RS6. 2> 	8N 4^ 10n 26	~
5SI1US7\/ 3? 	9O 5_ 11o 27	DEL

इसे ऑनलाइन आज़माएं!


1

पीएचपी ,330 321 बाइट्स

$a=[NUL,SOH,STX,ETX,EOT,ENQ,ACK,BEL,BS,HT,LF,VT,FF,CR,SO,SI,DLE,DC1,DC2,DC3,DC4,NAK,SYN,ETB,CAN,EM,SUB,ESC,FS,GS,RS,US,127=>DEL];foreach($t=[3,3,1,1,1,2,2,0]as$i)echo'Dec Hex ',str_repeat(' ',$i);echo" 
";for($x=0;$x<16;)for($y=$x++;$y<128;$y+=16)printf("% 3d %1$02X % -".$t[$y/16].s.($y<112?' ':"
"),$y,$a[$y]?:chr($y));

इसे ऑनलाइन आज़माएं!

कम गोल्फ:

$a=[NUL,SOH,STX,ETX,EOT,ENQ,ACK,BEL,BS,HT,LF,VT,FF,CR,SO,SI,DLE,
DC1,DC2,DC3,DC4,NAK,SYN,ETB,CAN,EM,SUB,ESC,FS,GS,RS,US,127=>DEL];

$t=[3,3,1,1,1,2,2,0];

foreach( $t as $i )
    echo 'Dec Hex ', str_repeat( ' ', $i );

echo" \n";

for( $x=0; $x<16; ) {
    for( $y=$x++; $y<128; $y+=16 ) {
        printf( "% 3d %1$02X % -" . $t[$y/16] . 's' . ( $y<112 ?' ' : "\n" ),
            $y, $a[$y] ?: chr($y) );
    }
}

0

कॉमन लिस्प (SBCL), 309

(progn(format t"~{~v,0TDec Hex  ~}"#1='(0 11 22 31 40 49 59 69))(dotimes(y 16)(fresh-line)(loop for x from 0 for k in #1#for i =(+(* 16 x)y)do(format t"~v,0T~3d ~2,'0x ~a"k i i(if(graphic-char-p #2=(code-char i))#2#(case i(8"BS")(9"HT")(10"LF")(12"FF")(13"CR")(127"DEL")(t(string-upcase(char-name #2#)))))))))

एक स्क्रिप्ट को चलाने के लिए जो निम्न मानक आउटपुट को आउटपुट करता है, अर्थात। अंतिम न्यूलाइन के बिना संस्करण (md5: 41b6ecde6a3a1324be4836871d8354fe)।

Dec Hex    Dec Hex    Dec Hex  Dec Hex  Dec Hex  Dec Hex   Dec Hex   Dec Hex  
  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p
  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q
  2 02 STX  18 12 DC2  34 22 "  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r
  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s
  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t
  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u
  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v
  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w
  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x
  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y
 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z
 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {
 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \  108 6C l  124 7C |
 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }
 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~
 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL

विवरण

  • (0 11 22 31 40 49 59 69)एक पंक्ति में प्रत्येक कॉलम की स्थिति शामिल है, जैसा कि वांछित आउटपुट का निरीक्षण करके प्राप्त किया गया है। कई कोने के मामले थे जो केवल प्रत्येक कॉलम के लिए सटीक स्थिति को हार्ड-कोडिंग द्वारा बेहतर रूप से नियंत्रित किए जाते हैं और ~Tप्रारूप को निर्देशात्मक सारणी की आवश्यकता के अनुसार देते हैं।

  • चूंकि वर्णों के नाम कार्यान्वयन-निर्भर होते हैं, यह कोड केवल SBCL दुभाषिया को लक्षित करता है (मैंने CCL के साथ परीक्षण किया, जो अन्य नामों का उपयोग करता है)। मैं char-nameअधिकांश गैर-ग्राफिक पात्रों के लिए भरोसा करता हूं , लेकिन उनमें से कुछ में अपेक्षित आउटपुट के लिए स्पष्ट मैपिंग है।

Ungolfed

(progn
  (format t"~{~v,0TDec Hex  ~}" '(0 11 22 31 40 49 59 69))
  (dotimes(y 16)
    (fresh-line)
    (loop for x from 0
          for k in '(0 11 22 31 40 49 59 69)
          for i = (+ (* 16 x) y)
          for c = (code-char i)
          do (format t
                     "~v,0T~3d ~2,'0x ~a"
                     k
                     i
                     i
                     (if (graphic-char-p c)
                         c
                         (case i
                           (8"BS")
                           (9"HT")
                           (10"LF")
                           (12"FF")
                           (13"CR")
                           (127"DEL")
                           (t (string-upcase (char-name c)))))))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.