배경 (경미한 스포일러 포함) :
영화 ‘ The Martian’ 에서 주인공 Mark Watney는 ASCII 테이블을 사용하여 16 진 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
Linux 명령 의 출력입니다 . 다음과 같이 우분투에서 이것을 다시 만들 수 있습니다.
sudo apt-get install ascii
ascii | tail -n+7
당신은 하지 않을 수 있습니다 사용 ascii
답에 유틸리티 (또는 유사한).
ASCII 문자는 작기 때문에 이미이 바보 같은 밈으로 충분합니다 !
나는 이것이 ASCII 테이블 인쇄 와 비슷하다는 것을 알고 있지만이 질문의 출력 형식이 훨씬 더 복잡하고 다른 질문이 필요하다고 생각합니다.
*이 영화는 아직 보지 못했습니다.
답변
자바 스크립트 (ES6), 323332 353
수정 난이 조금 단축 그럭저럭
16 개 문자의 배열보다 짧은 사용 믿거 나 말거나, 단계 1 toString
+ toUpperCase
사용 주변 하구, 2 단계 .map
대신 for
I 단일 발현 함수 avoding로 모두 변환 할 수 있도록 console.log 및 / 또는 return.
편집 2 장소 0에서 DEL로 이동, 아이디어는 Cole Cameron에서 빌 렸습니다.
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>
답변
기음, 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
언 골프 드 :
/* 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 바이트 더. Dan Allen과 Digital Trauma에게 감사드립니다.
답변
풍선 껌 , 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 압축을 사용합니다. 온라인으로 사용해보십시오!
답변
C, 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;}
위의 사람이 펀치로 나를 이겼지 만 나는 이것을 즐 겼기 때문에 여전히 제출하고 싶었습니다.
골퍼 해제 :
#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;
}
업데이트 : var를 j로 바꿨습니다. 바이트 저장;)
UPDATE2 : 몇 가지 추가 항목을 제거하고 일부 바이트를 저장하기 위해 인쇄 기능을 기능화했습니다.
답변
자바 스크립트 ES6 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')
답변
골프 스크립트, 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}%
답변
파이썬 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)