문자 이름을 인쇄


42

모든 유니 코드 문자에는 "LATIN CAPITAL LETTER A"와 같은 이름이 있습니다. 유니 코드 문자 이름은 대문자, 공백 및 빼기 기호 만 포함 할 수 있습니다.

텍스트를 읽고 각 문자의 이름을 새 줄에 출력하는 프로그램을 작성하십시오. 예를 들어, 입력이 "Hello, World!"인 경우 출력은

LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK
  • 입력은 코드의 문자열이 아니라 파일 또는 사용자 입력에서 가져와야합니다.
  • 출력은 파일 또는 표준 출력에 기록되거나 화면에 인쇄되어야합니다.
  • 인터넷 및 외부 라이브러리는 허용되지 않으며 필요한 모든 데이터가 코드에 있어야합니다.
  • 입력에 기본 라틴 코드 범위 32-126의 인쇄 가능한 ASCII 문자 만 포함되어 있다고 가정하십시오. 후행 줄 바꿈을 무시할 수 있습니다.
  • 모든 프로그래밍 언어가 허용됩니다. 바이트 단위의 최단 코드가 이깁니다.

공식 유니 코드 문자 이름은 여기 에서 찾을 수 있습니다 . 다른 출처 :

이것은 첫 번째 질문이므로 이것이 개선 될 수 있다면 어떤 제안이라도 감사하겠습니다.

이 도전의 목적을 위해 아래 목록은 규범 적입니다.

    32  0020        SPACE
!   33  0021        EXCLAMATION MARK
"   34  0022        QUOTATION MARK
#   35  0023        NUMBER SIGN
$   36  0024        DOLLAR SIGN
%   37  0025        PERCENT SIGN
&   38  0026        AMPERSAND
'   39  0027        APOSTROPHE
(   40  0028        LEFT PARENTHESIS
)   41  0029        RIGHT PARENTHESIS
*   42  002A        ASTERISK
+   43  002B        PLUS SIGN
,   44  002C        COMMA
-   45  002D        HYPHEN-MINUS
.   46  002E        FULL STOP
/   47  002F        SOLIDUS
0   48  0030        DIGIT ZERO
1   49  0031        DIGIT ONE
2   50  0032        DIGIT TWO
3   51  0033        DIGIT THREE
4   52  0034        DIGIT FOUR
5   53  0035        DIGIT FIVE
6   54  0036        DIGIT SIX
7   55  0037        DIGIT SEVEN
8   56  0038        DIGIT EIGHT
9   57  0039        DIGIT NINE
:   58  003A        COLON
;   59  003B        SEMICOLON
<   60  003C        LESS-THAN SIGN
=   61  003D        EQUALS SIGN
>   62  003E        GREATER-THAN SIGN
?   63  003F        QUESTION MARK
@   64  0040        COMMERCIAL AT
A   65  0041        LATIN CAPITAL LETTER A
B   66  0042        LATIN CAPITAL LETTER B
C   67  0043        LATIN CAPITAL LETTER C
D   68  0044        LATIN CAPITAL LETTER D
E   69  0045        LATIN CAPITAL LETTER E
F   70  0046        LATIN CAPITAL LETTER F
G   71  0047        LATIN CAPITAL LETTER G
H   72  0048        LATIN CAPITAL LETTER H
I   73  0049        LATIN CAPITAL LETTER I
J   74  004A        LATIN CAPITAL LETTER J
K   75  004B        LATIN CAPITAL LETTER K
L   76  004C        LATIN CAPITAL LETTER L
M   77  004D        LATIN CAPITAL LETTER M
N   78  004E        LATIN CAPITAL LETTER N
O   79  004F        LATIN CAPITAL LETTER O
P   80  0050        LATIN CAPITAL LETTER P
Q   81  0051        LATIN CAPITAL LETTER Q
R   82  0052        LATIN CAPITAL LETTER R
S   83  0053        LATIN CAPITAL LETTER S
T   84  0054        LATIN CAPITAL LETTER T
U   85  0055        LATIN CAPITAL LETTER U
V   86  0056        LATIN CAPITAL LETTER V
W   87  0057        LATIN CAPITAL LETTER W
X   88  0058        LATIN CAPITAL LETTER X
Y   89  0059        LATIN CAPITAL LETTER Y
Z   90  005A        LATIN CAPITAL LETTER Z
[   91  005B        LEFT SQUARE BRACKET
\   92  005C        REVERSE SOLIDUS
]   93  005D        RIGHT SQUARE BRACKET
^   94  005E        CIRCUMFLEX ACCENT
_   95  005F        LOW LINE
`   96  0060        GRAVE ACCENT
a   97  0061        LATIN SMALL LETTER A
b   98  0062        LATIN SMALL LETTER B
c   99  0063        LATIN SMALL LETTER C
d   100 0064        LATIN SMALL LETTER D
e   101 0065        LATIN SMALL LETTER E
f   102 0066        LATIN SMALL LETTER F
g   103 0067        LATIN SMALL LETTER G
h   104 0068        LATIN SMALL LETTER H
i   105 0069        LATIN SMALL LETTER I
j   106 006A        LATIN SMALL LETTER J
k   107 006B        LATIN SMALL LETTER K
l   108 006C        LATIN SMALL LETTER L
m   109 006D        LATIN SMALL LETTER M
n   110 006E        LATIN SMALL LETTER N
o   111 006F        LATIN SMALL LETTER O
p   112 0070        LATIN SMALL LETTER P
q   113 0071        LATIN SMALL LETTER Q
r   114 0072        LATIN SMALL LETTER R
s   115 0073        LATIN SMALL LETTER S
t   116 0074        LATIN SMALL LETTER T
u   117 0075        LATIN SMALL LETTER U
v   118 0076        LATIN SMALL LETTER V
w   119 0077        LATIN SMALL LETTER W
x   120 0078        LATIN SMALL LETTER X
y   121 0079        LATIN SMALL LETTER Y
z   122 007A        LATIN SMALL LETTER Z
{   123 007B        LEFT CURLY BRACKET
|   124 007C        VERTICAL LINE
}   125 007D        RIGHT CURLY BRACKET
~   126 007E        TILDE

4
안녕하세요, 계속해서 질문을 수정했습니다. 동의하지 않으면 롤백하십시오. 당신은 더 많은 정보 소스를 필요가 없습니다, 당신은 필요 하나의 불일치 문제를 방지하기 위해, 질문에, 규범 버전. 나는 집어 ssec.wisc.edu/~tomw/java/unicode.html#x0000를 가 가장 간결했다한다. 그 외에는 +1
Level River St

편집 @ steveverrill에게 감사드립니다, 나는 그것을 스스로하기에는 너무 게으르다.
나와 내 고양이

분명히 값이에, 윈도우의 일부로 사용할 수 있습니다 C:\Windows\System32\getuname.dll. Windows에 내장되어 있어도 "외부 라이브러리"로 간주됩니까?
lc.

6
방금 solidus라는 단어를 배웠습니다.
누가 복음

답변:


31

Java-113 바이트 (명령 줄에서 읽은 경우 152)

편집 : 쓸모없는 중괄호가 제거되었습니다.

편집 2 : 불필요한 변수가 제거되었습니다.

Edit3 : Character.getName () 대신 c.getName ()을 사용합니다.

Edit4 : 명령 줄 인수로 문자열 전달

명령 행 인수 (113 바이트) 사용시 :

class Z{public static void main(String[]x){for(Character c:x[0].toCharArray())System.out.println(c.getName(c));}}

읽기 라인 (152 바이트) :

class Z{public static void main(String[]x){for(Character c:new java.util.Scanner(System.in).nextLine().toCharArray())System.out.println(c.getName(c));}}

자바에는 필요한 모든 것이 있습니다. 나는 이것이 골프를 칠 수 있다고 확신한다.


7
제길! 내장! 이것을 흥미로운 도전으로 만들기 위해, 나는 이것이 "모든 필요한 데이터가 코드에 있어야한다"를 준수하지 않는 것으로 간주합니다. 그래도 매우 영리합니다.
Level River St

1
@steveverrill 아 잘 :). 나는 일반적인 lisp가 비슷한 것을 한 또 다른 도전을 보았습니다 (정확하게 기억한다면 1에서 100까지 계산).
피터 Lenkefi

6
와, 이번에는 자바가 많은 골프 언어를 능가 할 수있는 기회를 갖게되었습니다.
vsz

4
대체 Java 8 솔루션 : -loop x[0].chars().forEach(i->System.out.println(Character.getName(i)));를 대체하여 명령 행 인수 솔루션에 비해 2 개의 문자를 절약 for합니다.
hjk

3
또는x[0].chars().map(' '::getName).forEach(System.out::println);
Eric

18

파이썬 3, 56 바이트

내장 함수 unicodedata.name()를 사용하므로 이는 유능하지 않을 수 있습니다. Java 답변도 비슷하게 게시 할 가치가 있다고 생각했습니다.

from unicodedata import*
for i in input():print(name(i))

나는 또한 파이썬으로 하나를 게시하고 싶었지만 내 자바 답변은 충분했습니다 :).
피터 Lenkefi

1
확실히 for i in input():print(unicodedata.name(i))더 짧습니까?
Eric

1
@ 에릭 아니야 import unicodedata, 그래서 더 이상 입니다.
mbomb007

17

자바 스크립트 (ES6) 594 (618) (626)

참고 atob / btoa로 긴 문자열을 압축하여 ~ 30 바이트를 절약 할 수 있지만 '~'위의 utf8 문자는 Stack Exchange 포스트 편집기에서 잘 받아들이지 않습니다. 대신 스 니펫을 계속 실행하는 것을 선호합니다.

편집 8 개 문자 저장 들으 @Ypnypn

반복되는 단어의 명백한 압축. 백틱 내부의 줄 바꿈은 중요하며 계산됩니다.

Firefox에서 스 니펫 실행을 테스트하십시오.

// TEST SUITE
// for testing purpose, redefine alert() to write inside the snippet body
alert=x=>O.innerHTML=x
// for testing purpose, redefine prompt() to have a default text containing all characters
_prompt=prompt
prompt=(i,s)=>{
  for(s='',i=32;i<127;i++)s+=String.fromCharCode(i);
  return _prompt("Insert your message or keep the default",s);
}  
  
// That's the answer code:
z='SPACE/EXCLAMA0QUOTA0NUMBER1DOLLAR1PERCENT1AMPERSAND/APOSTROPHE3242ASTERISK/PLUS1COMMA/HYPHEN-MINUS/FULL STOP/78ZERO8ONE8TWO8THREE8FOUR8FIVE8SIX8SEVEN8EIGHT8NINE86SEMI6LESS-THAN1EQUALS1GREATER-THAN1QUES0COMMERCIAL AT3SQUARE5REVERSE 7/4SQUARE5CIRCUMFLEX9/LOW LINE/GRAVE93CURLY5VERTICAL LINE/4CURLY5TILDE'.replace(/\d/g,c=>'TION MARK/, SIGN/,PARENTHESIS/,/LEFT ,RIGHT , BRACKET/,COLON/,SOLIDUS,/DIGIT , ACCENT'.split`,`[c]).split`/`,alert([...prompt()].map(c=>(q=c.charCodeAt()-32)<33?z[q]:q<59?'LATIN CAPITAL LETTER '+c:q<65?z[q-26]:q<91?'LATIN SMALL LETTER '+c.toUpperCase():z[q-52]).join`
`)
<pre id=O></pre>


9

R, 54 바이트 62

library(Unicode)
cat(u_char_name(utf8ToInt(scan(,""))),sep="\n")

편집 : @ flodels 의견에 따라 연결에서 먼저 읽어야하므로 추가해야했습니다 scan. 이것은 또한 모든 규칙 에 따라 유능하지 않은 솔루션 일 것입니다 .

용법

> cat(u_char_name(utf8ToInt(scan(,""))),sep="\n")
1: 'Hello, World!'
2: 
Read 1 item
LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK

보다 편리한 사용법을 위해 기능으로 묶을 수도 있습니다.

UNI <- function(x)cat(paste0(u_char_name(utf8ToInt(x)),"\n"))

그런 다음 사용법은

UNI("Hello, World!")

1
바이트 수는 정확합니다 :)
Beta Decay

1
그리고 PPCG에 오신 것을 환영합니다! : D
베타 부패

작업을 위해 내장되어 있지만 출력이 요청 된 것은 아닙니다-1 개의 열 테이블 대신 4 개의 열 테이블. 올바른 출력을 얻으려면 코어를 추가해야한다고 생각합니다.
edc65

해결하기 쉬운 @ edc65, 나는 그것을 보너스로 생각했습니다.
David Arenburg

@ edc65가 수정했습니다.
David Arenburg

7

펄 6 , 21 바이트

유니 코드 이름을 얻는 데 기본 제공 방법을 사용하는 것에 대한 규칙은 특별히 보지 못했습니다.
(또한 현재 가장 높은 투표를 한 Java 답변도 동일합니다)

.say for get.uninames

1
펄 6는 이상하다. 그래도 좋아합니다.
cat

6

(+ coreutils) , 563 바이트

참고 : 아래는 그대로 작동하지 않으므로 xxd아래 덤프 에서 재현해야 합니다! 원시 데이터를 (으)로 바로 전달하려고 시도 zcat했지만 실패했습니다. 필자는 네이티브 Perl Gzip 모듈을 사용할 수도 있지만 내일은 확실합니다!

use MIME::Base64;$x=encode_base64(join'',<DATA>);print eval(`base64 -D<<<'$x'|zcat`)->[-32+ord$_].$/for<>=~/./g
__END__
.....x.U.._.u.[r. .@.._~.E(X.i..............J_....1..N......7K......|ih....P...a7......,a.....o.!.=N.K.i.....$..vFv.Pv..........*o...=..|o..O.B..c%2\bj1Gr...nr.|c.{...q......3......aw;b\1...C.Yp..l..K...bB..2C...K..O8e.v...."..C..
.s; .}Oj.....JC..-`@.gMXM..@M...41k.i.K..M.&.&.&.&.&.MdM.&.;..X5q..M.wM|o....3.s.{....MJf4.h>G..B...~$....w...WC.q.2..b.o..Hh.7|.... c..(.I......d|.1...8.8.8.x.q.1.X..*.U.W..d|.....f..4f...l..g'>..oUq4.....j.jU...
0000000: 7573 6520 4d49 4d45 3a3a 4261 7365 3634  use MIME::Base64
0000010: 3b24 783d 656e 636f 6465 5f62 6173 6536  ;$x=encode_base6
0000020: 3428 6a6f 696e 2727 2c3c 4441 5441 3e29  4(join'',<DATA>)
0000030: 3b70 7269 6e74 2065 7661 6c28 6062 6173  ;print eval(`bas
0000040: 6536 3420 2d44 3c3c 3c27 2478 277c 7a63  e64 -D<<<'$x'|zc
0000050: 6174 6029 2d3e 5b2d 3332 2b6f 7264 245f  at`)->[-32+ord$_
0000060: 5d2e 242f 666f 723c 3e3d 7e2f 2e2f 670a  ].$/for<>=~/./g.
0000070: 5f5f 454e 445f 5f0a 1f8b 0808 ff78 ec55  __END__......x.U
0000080: 0003 5f00 7594 5b72 eb20 0c40 b7c2 5f7e  .._.u.[r. .@.._~
0000090: da45 2858 b669 c4c3 089c a49d ee7f 1b17  .E(X.i..........
00000a0: 92b1 9df4 4a5f 96ce d180 3192 7f4e 9cc0  ....J_....1..N..
00000b0: e2e9 e384 374b e0a1 b818 8c87 7c69 68a9  ....7K......|ih.
00000c0: b1bc 8150 fd19 b361 3785 960d 9108 f62c  ...P...a7......,
00000d0: 61b6 18ca 9682 6f80 210c 3d4e 914b 8e69  a.....o.!.=N.K.i
00000e0: eefb 108e c524 c8ad 7646 76dc 5076 d3fc  .....$..vFv.Pv..
00000f0: 9701 17cc 8efb ae89 2a6f cbda e83d b4e7  ........*o...=..
0000100: 7c6f ab85 4fef 42ed d563 2532 5c62 6a31  |o..O.B..c%2\bj1
0000110: 4772 c383 0e6e 72c5 7c63 8e7b 1203 ee71  Gr...nr.|c.{...q
0000120: b91e bccc 190f 33c6 9a8f c4ad 8761 773b  ......3......aw;
0000130: 625c 31ec 19f6 43ec 5970 8f8d 6ca4 d84b  b\1...C.Yp..l..K
0000140: 18bd db62 42e6 cf32 43d8 ce84 4b05 da4f  ...bB..2C...K..O
0000150: 3865 8476 f4b7 8aa5 22bf de43 ff0a ed73  8e.v...."..C...s
0000160: 3b20 037d 4f6a b714 8c85 e44a 4384 a52d  ; .}Oj.....JC..-
0000170: 6040 1367 4d58 4d0c 9a40 4d8c 9a98 3431  `@.gMXM..@M...41
0000180: 6bc2 69e2 4b13 174d 9026 bc26 8226 a226  k.i.K..M.&.&.&.&
0000190: 9226 164d 644d b026 d43b af9a 5835 71d5  .&.MdM.&.;..X5q.
00001a0: c44d 1377 4d7c 6fd3 cdad a133 9a73 067b  .M.wM|o....3.s.{
00001b0: c1fe aeb9 4d4a 6634 c768 3e47 febf 42eb  ....MJf4.h>G..B.
00001c0: b2ad 7e24 bc19 b0fd 77d2 978c 5743 cf71  ..~$....w...WC.q
00001d0: 9a32 acf8 621e 6fc1 1e48 68fa 377c 96b1  .2..b.o..Hh.7|..
00001e0: 95f1 2063 94f1 28e3 49c6 b38c 9d8c bf64  .. c..(.I......d
00001f0: 7c91 31c9 d8cb 38c8 38ca 38c9 7891 7196  |.1...8.8.8.x.q.
0000200: 31cb 58b9 cb2a e355 c657 19df 647c 97f1  1.X..*.U.W..d|..
0000210: dec2 b666 babf 3466 ebdf e26c eff5 6727  ...f..4f...l..g'
0000220: 3efb f76f 5571 34e0 e9f7 1fe2 6a1f 6a55  >..oUq4.....j.jU
0000230: 0700 00                                  ...

파일을 재생하려면 다음을 실행하십시오.

xxd -r > 57413.pl

16 진 덤프를 붙여넣고을 누른 Enter다음 Ctrl+를 누릅니다 D.

다음으로 실행 :

perl 57413.pl <<< 'Hello, World!'
LATIN CAPITAL LETTER H
LATIN SMALL LETTER E
LATIN SMALL LETTER L
LATIN SMALL LETTER L
LATIN SMALL LETTER O
COMMA
SPACE
LATIN CAPITAL LETTER W
LATIN SMALL LETTER O
LATIN SMALL LETTER R
LATIN SMALL LETTER L
LATIN SMALL LETTER D
EXCLAMATION MARK

이전 순수 Perl 버전, 893 바이트

print[SPACE,'EXCLAMATION MARK','QUOTATION MARK',NUMBER.($s=" SIGN"),DOLLAR.$s,PERCENT.$s,AMPERSAND,APOSTROPHE,LEFT.($p=" PARENTHESIS"),RIGHT.$p,ASTERISK,PLUS.$s,COMMA,'HYPHEN-MINUS','FULL STOP',$d=SOLIDUS,($d="DIGIT ").ZERO,$d.ONE,$d.TWO,$d.THREE,$d.FOUR,$d.FIVE,$d.SIX,$d.SEVEN,$d.EIGHT,$d.NINE,COLON,SEMICOLON,"LESS-THAN$s",EQUALS.$s,"GREATER-THAN$s",'QUESTION MARK','COMMERCIAL AT',($b=($a=LATIN)." CAPITAL ".($l="LETTER ")).A,$b.B,$b.C,$b.D,$b.E,$b.F,$b.G,$b.H,$b.I,$b.J,$b.K,$b.L,$b.M,$b.N,$b.O,$b.P,$b.Q,$b.R,$b.S,$b.T,$b.U,$b.V,$b.W,$b.X,$b.Y,$b.Z,'LEFT SQUARE '.($e=BRACKET),"REVERSE $d","RIGHT SQUARE $e",'CIRCUMFLEX ACCENT','LOW LINE','GRAVE ACCENT',($m="$a SMALL $l ").A,$m.B,$m.C,$m.D,$m.E,$m.F,$m.G,$m.H,$m.I,$m.J,$m.K,$m.L,$m.M,$m.N,$m.O,$m.P,$m.Q,$m.R,$m.S,$m.T,$m.U,$m.V,$m.W,$m.X,$m.Y,$m.Z,"LEFT CURLY $e",'VERTICAL LINE',"RIGHT CURLY $e",TILDE]->[-32+ord$_].$/for<>=~/./g

5

AWK - 794 739

     1 라틴 대문자 B
     2 라틴 대문자 L
     3 라틴 대문자 L
     4 라틴 대문자 L
     5 라틴 대문자 L
     6 왼쪽 컬리 브라켓 
     7 라틴어 작은 편지
     8 라틴어 작은 편지 P
     9 라틴어 작은 편지 L
    10 라틴 문자 I
    11 라틴어 작은 편지 T
    12 왼쪽 부모 
    13 인용 마크 
    14 라틴 작은 편지 I
    15 쉼표 
    16 라틴 대문자 L
    17 라틴어 작은 편지 V
    18 쉼표 
    19 라틴 대문자 L
    20 라틴 작은 편지 V
    21 쉼표 
    22 라틴 작은 편지 A
    23 라틴어 작은 편지 X
    24 쉼표 
    25 CIRCUMFLEX ACCENT 
    26 라틴 문자 X
    27 쉼표 
    28 왼쪽 사각형 브래킷 
    29 라틴 작은 편지 X
    30 쉼표 
    31 라틴 대문자 편지 Q
    32 쉼표 
    33 라틴 대문자 L
    34 쉼표 
    35 라틴어 작은 편지 T
    36 라틴 대문자 K
    37 쉼표 
    38 라틴 문자 C
    39 라틴 대문자 K
    40 쉼표 
    41 라틴 대문자 L
    42 쉼표 
    43 라틴어 작은 편지 Q
    44 라틴 문자 X
    45 쉼표 
    46 라틴어 작은 편지 G
    47 쉼표 
    48 라틴 대문자 L
    49 쉼표 
    50 라틴어 작은 편지 W
    51 라틴어 작은 편지 U
    52 쉼표 
    53 라틴 대문자 L
    54 쉼표 
    55 라틴 문자 B
    56 라틴어 작은 편지 Y
    57 쉼표 
    58 라틴어 작은 편지 B
    59 왼쪽 컬리 브라켓 
    60 쉼표 
    61 라틴어 작은 편지 B
    62 라틴 문자 Z
    63 쉼표 
    64 라틴어 작은 편지 B
    65 라틴 문자 D
    66 쉼표 
    67 라틴어 작은 편지 B
    68 라틴어 작은 편지 P
    69 쉼표 
    70 라틴 문자 B
    71 라틴 작은 편지 R
    72 쉼표 
    73 라틴어 문자 B
    74 오른쪽 컬링 브라켓 
    75 쉼표 
    76 라틴 작은 편지 B
    77 라틴 문자 K
    78 쉼표 
    79 라틴어 작은 편지 B
    80 라틴어 작은 편지 L
    81 쉼표 
    82 라틴어 작은 편지 B
    83 라틴어 작은 편지 O
    84 쉼표 
    85 라틴 문자 E
    86 쉼표 
    87 라틴 대문자 L
    88 쉼표 
    89 라틴 대문자 L
    90 라틴 문자 X
    91 쉼표 
    LOW LINE 
    93 라틴 문자 X
    94 쉼표 
    95 라틴 대문자 L
    96 라틴 문자 X
    97 쉼표 
    98 라틴 대문자 L
    99 라틴 문자 V
   100 쉼표 
   101 라틴 대문자 L
   102 물결 
   103 쉼표 
   104 스페이스 
   105 라틴어 작은 편지 T
   106 그레이브 액센트 
   107 라틴 대문자 L
   108 쉼표 
   109 라틴 대문자 L
   110 라틴 대문자 L
   111 쉼표 
   112 라틴 문자 C
   113 무덤 액센트 
   114 라틴 대문자 L
   115 쉼표 
   116 라틴 대문자 L
   117 리버티 SOLIDUS 
   118 역 SOLIDUS 
   119 쉼표 
   수직선 120 개 
   121 라틴 작은 문자 S
   122 쉼표 
   123 라틴 작은 문자 M
   124 리버티 SOLIDUS 
   125 리버티 SOLIDUS 
   126 쉼표 
   127 스페이스 
   128 라틴 작은 편지 T
   129 라틴어 작은 편지 H
   130 라틴 대문자 L
   131 쉼표 
   132 라틴 대문자 L
   133 라틴 문자 S
   134 쉼표 
   135 라틴어 작은 편지 C
   136 라틴 작은 문자 H
   137 라틴 대문자 L
   138 쉼표 
   139 라틴 작은 편지 F
   140 공간 
   141 라틴 대문자 L
   142 라틴 대문자 L
   143 라틴 대문자 L
   144 라틴 대문자 L
   145 라틴 대문자 L
   146 라틴 대문자 L
   147 하이픈 마이너스 
   148 라틴 대문자 L
   149 라틴 대문자 L
   150 라틴 대문자 L
   151 라틴 대문자 L
   152 라틴 대문자 S
   153 스페이스 
   154 라틴 대문자 L
   155 라틴 대문자 L
   156 라틴 대문자 E
   157 라틴 대문자 A
   158 라틴 대문자 L
   159 라틴 대문자 L
   160 라틴 대문자 L
   161 하이픈 마이너스 
   162 라틴 대문자 L
   163 라틴 대문자 L
   164 라틴 대문자 A
   165 라틴 대문자 L
   166 스페이스 
   167 라틴 대문자 L
   168 라틴 대문자 A
   169 라틴 대문자 L
   170 라틴 대문자 L
   171 라틴 대문자 L
   172 라틴 대문자 L
   173 라틴 대문자 L
   174 라틴 대문자 L
   175 라틴 대문자 S
   176 라틴 대문자 L
   177 라틴 대문자 S
   178 스페이스 
   179 라틴 대문자 L
   180 라틴 대문자 L
   181 라틴 대문자 L
   182 라틴 대문자 L
   183 라틴 대문자 A
   184 라틴 대문자 L
   185 라틴 대문자 A
   186 라틴 대문자 L
   187 라틴 대문자 L
   188 라틴 대문자 L
   189 라틴 대문자 L
   190 공간 
   191 라틴 대문자 L
   192 라틴 대문자 L
   193 라틴 대문자 L
   194 라틴 대문자 L
   195 라틴 대문자 L
   196 라틴 대문자 L
   197 라틴 대문자 L
   198 라틴 대문자 L
   199 라틴 대문자 A
   200 라틴 대문자 L
   201 스페이스 
   202 라틴 대문자 L
   203 라틴 대문자 L
   204 라틴 대문자 L
   205 라틴 대문자 C
   206 라틴 대문자 L
   207 라틴 대문자 L
   208 라틴 대문자 L
   209 라틴 대문자 L
   210 라틴 대문자 L
   211 라틴 대문자 L
   212 스페이스 
   213 라틴 대문자 A
   214 라틴 대문자 L
   215 라틴 대문자 L
   216 라틴 대문자 S
   217 라틴 대문자 L
   218 라틴 대문자 L
   219 라틴 대문자 L
   220 라틴 대문자 L
   221 라틴 대문자 L
   222 라틴 대문자 E
   223 스페이스 
   224 라틴 대문자 S
   225 라틴 대문자 L
   226 라틴 대문자 L
   227 라틴 대문자 L
   228 라틴 대문자 L
   229 라틴 대문자 L
   230 라틴 대문자 L
   231 라틴 대문자 L
   232 라틴 대문자 L
   233 스페이스 
   234 라틴 대문자 A
   235 라틴 대문자 L
   236 라틴 대문자 P
   237 라틴 대문자 E
   238 라틴 대문자 L
   239 라틴 대문자
   240 라틴 대문자 A
   241 라틴 대문자 L
   242 라틴 대문자 L
   243 공간 
   244 라틴 대문자 L
   245 라틴 대문자 L
   246 라틴 대문자
   247 라틴 대문자
   248 하이픈 마이너스 
   249 라틴 대문자 L
   250 라틴 대문자 L
   251 라틴 대문자 A
   252 라틴 대문자 L
   253 스페이스 
   254 라틴 대문자 Q
   255 라틴 대문자 L
   256 라틴 대문자 L
   257 라틴 대문자 L
   258 라틴 대문자 A
   259 라틴 대문자 L
   260 라틴 대문자 L
   261 라틴 대문자 L
   262 라틴 대문자 L
   263 스페이스 
   264 라틴 대문자 L
   265 라틴 대문자 L
   266 라틴 대문자 L
   267 라틴 대문자 L
   268 라틴 대문자 L
   269 ​​라틴 대문자 L
   270 라틴 대문자 A
   271 라틴 대문자 L
   272 스페이스 
   273 라틴 대문자 편지 Q
   274 라틴 대문자 L
   275 라틴 대문자 E
   276 라틴 대문자
   277 라틴 대문자 L
   278 라틴 대문자 L
   279 라틴 대문자 L
   280 라틴 대문자 L
   스페이스 281 
   282 라틴 대문자 A
   283 라틴 대문자 S
   284 라틴 대문자 L
   285 라틴 대문자 L
   286 라틴 대문자 L
   287 라틴 대문자 L
   288 라틴 대문자
   289 라틴 대문자 K
   290 스페이스 
   291 라틴 대문자 L
   292 라틴 대문자 A
   293 라틴 대문자 L
   294 라틴 대문자 L
   295 라틴 대문자 L
   296 라틴 대문자 A
   297 라틴 대문자 L
   298 공간 
   299 라틴 대문자 S
   300 라틴 대문자 L
   301 라틴 대문자 L
   302 라틴 대문자 L
   303 라틴 대문자 L
   304 라틴 대문자 L
   305 라틴 대문자
   306 스페이스 
   307 라틴 대문자 L
   308 라틴 대문자 L
   309 라틴 대문자 A
   310 라틴 대문자 L
   311 라틴 대문자 K
   312 라틴 대문자 E
   313 라틴 대문자 L
   314 스페이스 
   315 라틴 대문자 L
   316 라틴 대문자 L
   317 라틴 대문자 L
   318 라틴 대문자 E
   319 라틴 대문자 L
   320 라틴 대문자 S
   321 라틴 대문자 L
   322 스페이스 
   323 라틴 대문자 L
   324 라틴 대문자 L
   325 라틴 대문자 L
   326 라틴 대문자 L
   327 라틴 대문자 L
   328 라틴 대문자 L
   329 라틴 대문자 L
   330 스페이스 
   331 라틴 대문자 A
   332 라틴 대문자 C
   333 라틴 대문자 C
   334 라틴 대문자 E
   335 라틴 대문자 L
   336 라틴 대문자 L
   337 공간 
   338 라틴 대문자 L
   339 라틴 대문자 L
   340 라틴 대문자 L
   341 라틴 대문자 L
   342 라틴 대문자 L
   343 라틴 대문자 L
   344 스페이스 
   345 라틴 대문자 L
   346 라틴 대문자 L
   347 라틴 대문자 L
   348 라틴 대문자 L
   349 라틴 대문자 A
   350 라틴 대문자 L
   351 스페이스 
   352 라틴 대문자 L
   353 라틴 대문자 L
   354 라틴 대문자 L
   355 라틴 대문자 A
   356 라틴 대문자 L
   357 라틴 대문자 S
   358 스페이스 
   359 라틴 대문자 S
   360 라틴 대문자 Q
   361 라틴 대문자 L
   362 라틴 대문자 A
   363 라틴 대문자 L
   364 라틴 대문자 L
   365 공간 
   366 라틴 대문자 L
   367 라틴 대문자 L
   368 라틴 대문자 L
   369 라틴 대문자 L
   370 라틴 대문자 E
   371 라틴 대문자 L
   372 스페이스 
   373 라틴 대문자 L
   374 라틴 대문자 L
   375 라틴 대문자 L
   376 라틴 대문자 L
   377 라틴 대문자 L
   378 공간 
   379 라틴 대문자 L
   380 라틴 대문자 L
   381 라틴 대문자 L
   382 라틴 대문자 L
   383 라틴 대문자 L
   384 스페이스 
   385 라틴 대문자 L
   386 라틴 대문자 L
   387 라틴 대문자 L
   388 라틴 대문자 L
   389 라틴 대문자 L
   390 공간 
   391 라틴 대문자 L
   392 라틴 대문자 L
   393 라틴 대문자 L
   394 라틴 대문자 L
   395 라틴 대문자 L
   396 공간 
   397 라틴 대문자 L
   398 라틴 대문자 L
   399 라틴 대문자 L
   400 라틴 대문자 L
   401 라틴 대문자 L
   402 스페이스 
   403 라틴 대문자 L
   404 라틴 대문자 L
   405 라틴 대문자 L
   406 라틴 대문자 L
   407 라틴 대문자 A
   408 공간 
   409 라틴 대문자 L
   410 라틴 대문자 L
   411 라틴 대문자 L
   412 라틴 대문자 L
   413 라틴 대문자 L
   414 스페이스 
   415 라틴 대문자
   416 라틴 대문자 L
   417 라틴 대문자 A
   418 라틴 대문자 L
   419 라틴 대문자 L
   420 스페이스 
   421 라틴 대문자 S
   422 라틴 대문자 L
   423 라틴 대문자 A
   424 라틴 대문자 L
   425 라틴 대문자 L
   426 스페이스 
   427 라틴 대문자
   428 라틴 대문자 L
   429 라틴 대문자 L
   430 라틴 대문자 L
   431 라틴 대문자 L
   432 스페이스 
   433 라틴 대문자 L
   434 라틴 대문자 L
   435 라틴 대문자 L
   436 라틴 대문자 L
   437 라틴 대문자 L
   438 스페이스 
   439 라틴 대문자 L
   440 라틴 대문자 L
   441 라틴 대문자 A
   442 라틴 대문자 L
   443 라틴 대문자 L
   444 공간 
   445 라틴 대문자 L
   446 라틴 대문자 A
   447 라틴 대문자 L
   448 라틴 대문자 L
   449 라틴 대문자 L
   450 공간 
   451 라틴 대문자 L
   452 라틴 대문자 L
   453 라틴 대문자 L
   454 라틴 대문자 L
   455 스페이스 
   456 라틴 대문자 F
   457 라틴 대문자 L
   458 라틴 대문자 L
   459 라틴 대문자 L
   460 공간 
   461 라틴 대문자 L
   462 라틴 대문자 L
   463 라틴 대문자 L
   464 라틴 대문자
   465 스페이스 
   466 라틴 대문자 F
   467 라틴 대문자 L
   468 라틴 대문자 L
   469 라틴 대문자 L
   470 공간 
   471 라틴 대문자 L
   472 라틴 대문자 L
   473 라틴 대문자 L
   474 라틴 대문자 L
   475 공간 
   476 라틴 대문자 L
   477 라틴 대문자 L
   478 라틴 대문자 F
   479 라틴 대문자 L
   480 스페이스 
   481 라틴 대문자 L
   482 라틴 대문자 L
   483 라틴 대문자 L
   484 라틴 대문자 P
   485 공간 
   486 라틴 대문자 L
   487 라틴 대문자 A
   488 라틴 대문자 L
   489 라틴 대문자 K
   490 공간 
   491 라틴 대문자 L
   492 라틴 대문자 L
   493 라틴 대문자 L
   494 라틴 대문자 L
   495 스페이스 
   496 라틴 대문자
   497 라틴 대문자 L
   498 라틴 대문자 L
   499 라틴 대문자 L
   500 스페이스 
   501 라틴 대문자 L
   502 라틴 대문자 E
   503 라틴 대문자 L
   504 라틴 대문자 L
   505 공간 
   506 라틴 대문자 L
   507 라틴 대문자 W
   508 라틴 대문자 L
   509 공간 
   510 라틴 대문자 L
   511 라틴 대문자 L
   512 라틴 대문자 L
   513 스페이스 
   514 라틴 대문자 L
   515 라틴 대문자 L
   516 라틴 대문자 W
   517 스페이스 
   518 라틴 대문자
   519 라틴 대문자 L
   520 라틴 대문자 L
   521 스페이스 
   522 라틴 대문자 A
   523 라틴 대문자 L
   524 견적 마크 
   525 쉼표 
   526 라틴 작은 편지 W
   527 올바른 부모 
   528 세미콜론 
   529 라틴 작은 편지 Y
   530 등호 
   531 라틴 문자 W
   532 왼쪽 사각형 브래킷 
   533 디지트 투 
   534 오른쪽 스퀘어 브라켓 
   535 세미콜론 
   536 라틴 작은 편지 F
   537 라틴 작은 편지 O
   538 라틴 작은 편지 R
   539 왼쪽 부모 
   540 라틴 문자 X
   541 등호 
   542 라틴 작은 편지 W
   543 왼쪽 사각형 브래킷 
   544 디지트 원 
   545 오른쪽 스퀘어 브라켓 
   546 세미콜론 
   547 라틴 작은 편지 I
   548 더하기 부호 
   549 더하기 부호 
   550 덜 서명 
   551 디지트 투 
   552 디지트 식스 
   553 세미콜론 
   554 라틴 작은 편지 X
   555 등호 
   556 라틴 작은 편지 X
   557 견적 마크 
   558 라틴 작은 편지 N
   559 라틴 대문자 W
   560 오른쪽 스퀘어 브라켓 
   561 쉼표 
   562 견적 마크 
   563 올바른 부모 
   564 라틴 작은 편지 Y
   565 등호 
   566 라틴 문자 L
   567 견적 마크 
   568 라틴 작은 편지 N
   569 라틴 작은 편지 J
   570 오른쪽 스퀘어 브라켓 
   571 쉼표 
   572 견적 마크 
   573 세미콜론 
   574 라틴 작은 편지 F
   575 라틴 작은 편지 O
   576 라틴 작은 편지 R
   577 왼쪽 부모 
   578 라틴 문자 S
   579 라틴 작은 편지 P
   580 라틴 작은 편지 L
   581 라틴 문자 I
   582 라틴어 작은 편지 T
   583 왼쪽 부모 
   584 라틴 문자 X
   585 스페이스 
   586 라틴 작은 편지 Y
   587 공간 
   588 라틴 문자 W
   589 왼쪽 사각형 브래킷 
   590 치수 3 
   591 오른쪽 스퀘어 브라켓 
   592 쉼표 
   593 라틴 문자 B
   594 쉼표 
   595 견적 마크 
   596 쉼표 
   597 견적 마크 
   598 올바른 부모 
   599 세미콜론 
   600 라틴어 작은 편지 J
   601 더하기 부호 
   602 더하기 부호 
   603 덜 서명 
   604 개 1 개 
   605 디지트 투 
   606 디지트 식스 
   607 세미콜론 
   608 라틴 대문자 L
   609 라틴 대문자 S
   610 등호 
   611 로우 라인 
   612 올바른 부모 
   613 라틴 작은 문자 D
   614 왼쪽 사각형 브래킷 
   615 라틴 작은 문자 S
   616 라틴 작은 편지 P
   617 라틴 작은 편지 R
   618 라틴 작은 편지 I
   619 라틴 작은 편지 N
   620 라틴 작은 편지 T
   621 라틴 작은 편지 F
   622 왼쪽 부모 
   623 견적 마크 
   624 PERCENT SIGN 
   625 라틴 작은 문자 C
   626 견적 마크 
   627 쉼표 
   628 라틴 작은 편지 J
   629 올바른 부모 
   630 오른쪽 스퀘어 브라켓 
   631 등호 
   632 라틴 작은 편지 J
   633 오른쪽 컬링 브라켓 
   634 왼쪽 컬리 브라켓 
   635 라틴 작은 편지 F
   636 라틴 작은 편지 O
   637 라틴 작은 편지 R
   638 왼쪽 부모 
   639 라틴 작은 편지 K
   640 등호 
   641 디지트 제로 
   642 세미콜론 
   643 라틴 작은 편지 K
   644 더하기 부호 
   645 더하기 부호 
   646리스 타인 
   647 라틴 대문자 L
   648 라틴 대문자 F
   649 세미콜론 
   650 라틴 작은 편지 P
   651 라틴 작은 편지 R
   652 라틴 작은 편지 I
   653 라틴 작은 편지 N
   654 라틴 작은 문자 T
   655 스페이스 
   656 라틴 작은 편지 I
   657 등호 
   658 로우 라인 
   659 올바른 부모 
   660 라틴 작은 편지 W
   661 라틴 작은 편지 H
   662 라틴 문자 I
   663 라틴 작은 편지 L
   664 라틴 문자 E
   665 왼쪽 PARENTHESIS 
   666 라틴 문자 I
   667 더하기 부호 
   668 더하기 부호 
   669 서명이 적다 
   670 라틴 문자 S
   671 라틴 작은 편지 P
   672 라틴 작은 편지 L
   673 라틴 작은 편지 I
   674 라틴 작은 문자 T
   675 왼쪽 부모 
   676 라틴 작은 편지 B
   677 왼쪽 사각형 브래킷 
   678 라틴 작은 문자 D
   679 왼쪽 사각형 브래킷 
   680 달러 기호 
   681 라틴 작은 편지 K
   682 오른쪽 스퀘어 브라켓 
   683 하이픈 마이너스 
   684 디지트 쓰리 
   685 디지트 원 
   686 오른쪽 스퀘어 브라켓 
   687 쉼표 
   688 라틴 문자 L
   689 올바른 부모 
   690 올바른 부모 
   691 라틴 작은 편지 P
   692 라틴 작은 편지 R
   693 라틴 문자 I
   694 라틴 작은 편지 N
   695 라틴 작은 편지 T
   696 라틴 작은 편지 F
   697 왼쪽 부모 
   698 라틴 문자 Z
   699 등호 
   700 라틴어 작은 편지 W
   701 왼쪽 사각형 브래킷 
   702 라틴 작은 문자 D
   703 왼쪽 사각형 브래킷 
   704 라틴어 작은 편지 Q
   705 왼쪽 사각형 브래킷 
   706 라틴 작은 편지 I
   707 오른쪽 스퀘어 브라켓 
   708 오른쪽 스퀘어 브라켓 
   709 하이픈 마이너스 
   710 디지트 식스 
   711 디지트 나인 
   712 오른쪽 스퀘어 브라켓 
   713 올바른 부모 
   714 견적 마크 
   715 스페이스 
   716 견적 마크 
   717 왼쪽 PARENTHESIS 
   718 라틴 작은 편지 Z
   719 물결표 
   720 SOLIDUS 
   721 라틴 대문자 L
   722 라틴 대문자 L
   723 SOLIDUS 
   724 질문 마크 
   725 라틴 작은 문자 T
   726 라틴 작은 편지 O
   727 라틴 작은 편지 U
   728 라틴 작은 편지 P
   729 라틴 작은 편지 P
   730 라틴 문자 E
   731 라틴 작은 편지 R
   732 왼쪽 PARENTHESIS 
   733 달러 기호 
   734 라틴 작은 편지 K
   735 올바른 부모 
   736 콜론 
   737 로우 라인 
   738 올바른 부모 
   739 오른쪽 컬링 브라켓

농담; D

BEGIN{split("i,Lv,Sv,ax,^x,[x,Q,O,tK,cK,V,qx,g,I,wu,X,by,b{,bz,bd,bp,br,b},bk,bl,bo,e,P,Rx,_x,Jx,Uv,M~, t`Y,ZX,c`Y,N\\,|s,m\\, thY,Ts,chY,f HYPHEN-MINUS GREATER-THAN PARENTHESIS EXCLAMATION COMMERCIAL CIRCUMFLEX APOSTROPHE SEMICOLON AMPERSAND LESS-THAN QUOTATION VERTICAL QUESTION ASTERISK CAPITAL SOLIDUS BRACKET REVERSE PERCENT ACCENT LETTER DOLLAR EQUALS SQUARE NUMBER DIGIT RIGHT THREE COLON TILDE COMMA CURLY SPACE SMALL SEVEN EIGHT GRAVE LATIN NINE FOUR PLUS FIVE LINE LEFT STOP MARK FULL SIGN ZERO TWO ONE LOW SIX AT",w);x=w[1];for(y=w[2];C++<26;x=x"nW],")y=y"nj],";for(split(x y w[3],b,",");j++<126;FS=_)d[sprintf("%c",j)]=j}{for(k=0;k++<NF;print i=_)while(i++<split(b[d[$k]-31],q))printf(z=w[d[q[i]]-69])" "(z~/TT/?toupper($k):_)}

stdin / stdout과 함께 작동합니다.

더 "읽기":

BEGIN{

  # This string (508 bytes) holds a representation of the character names in 
  # the right order, plus a list of the used words.

    split("i,Lv,Sv,ax,^x,[x,Q,O,tK,cK,V,qx,g,I,wu,X,by,b{,bz,bd,bp,br,b},bk,bl,bo,
    e,P,Rx,_x,Jx,Uv,M~, t`Y,ZX,c`Y,N\\,|s,m\\, thY,Ts,chY,f HYPHEN-MINUS GREATER-T
    HAN PARENTHESIS EXCLAMATION COMMERCIAL CIRCUMFLEX APOSTROPHE SEMICOLON AMPERSA
    ND LESS-THAN QUOTATION VERTICAL QUESTION ASTERISK CAPITAL SOLIDUS BRACKET REVE
    RSE PERCENT ACCENT LETTER DOLLAR EQUALS SQUARE NUMBER DIGIT RIGHT THREE COLON
    TILDE COMMA CURLY SPACE SMALL SEVEN EIGHT GRAVE LATIN NINE FOUR PLUS FIVE LINE
     LEFT STOP MARK FULL SIGN ZERO TWO ONE LOW SIX AT",w);

  # Since the letters each appear 26 times I construct that part at runtime.
  # The array b will hold the coded combinations of which words need to
  # be printed for each input character.

    x=w[1];
    for(y=w[2];C++<26;x=x"nW],")
        y=y"nj],";

  # The array d is an ASCIICodeFromChar function replacement.
  # I set the field separator to empty, so each character of the input is
  # an input field. That's why using a BEGIN part was mandatory.

    for(split(x y w[3],b,",");j++<126;FS=_)
        d[sprintf("%c",j)]=j
}

  # Here I go through the element of b that matches the input and print
  # the requested words, using the input to produce a capital letter if
  # needed. I excluded these from the word list to save another 26 bytes

{
    for(k=0;k++<NF;print i=_)
        while(i++<split(b[d[$k]-31],q))
            printf(z=w[d[q[i]]-69])" "(z~/TT/?toupper($k):_)
}

5

C ++ 11, 739 바이트

#include<iostream>
#define D,"DIGIT "
#define G" SIGN",
int main(){std::string a=" BRACKET",s="SQUARE"+a,c="CURLY"+a,t="TION MARK",p="PARENTHESIS",l="LEFT ",r="RIGHT ",x="LATIN ",y="L LETTER ",z[]{"SPACE","EXCLAMA"+t,"QUOTA"+t,"NUMBER"G"DOLLAR"G"PERCENT"G"AMPERSAND","APOSTROPHE",l+p,r+p,"ASTERISK","PLUS"G"COMMA","HYPHEN-MINUS","FULL STOP","SOLIDUS"D"ZERO"D"ONE"D"TWO"D"THREE"D"FOUR"D"FIVE"D"SIX"D"SEVEN"D"EIGHT"D"NINE","COLON","SEMICOLON","LESS-THAN"G"EQUALS"G"GREATER-THAN"G"QUES"+t,"COMMERCIAL AT",l+s,"REVERSE SOLIDUS",r+s,"CIRCUMFLEX ACCENT","LOW LINE","GRAVE ACCENT",l+c,"VERTICAL LINE",r+c,"TILDE"};getline(std::cin,s);for(char c:s)std::cout<<(c<65?z[c-32]:c<91?x+"CAPITA"+y+c:(c-=32,c<65?z[c-26]:c<91?x+"SMAL"+y+c:z[c-52]))+"\n";}

sweerpotato의 솔루션을 기반으로하지만 크게 수정되었습니다.


잘 했어요 : ~)!
sweerpotato

5

C, 644656

표준 입력에서 읽는 전체 프로그램

Ideone에서 테스트

이것은 JavaScript 답변을 C로 포팅하는 것입니다. C 언어는 단일 문자를 숫자 (필수 등 .toUpperCase)로 조작하는 데 능숙하지만 문자열 조작에서는 약합니다.

char*s,*p,*q,b[999],*d=b+99,c,*l[129];
main(k){for(k=32,p="/SPACE/EXCLAMAaQUOTAaNUMBERbDOLLARbPERCENTbAMPERSAND/APOSTROPHEdcecASTERISK/PLUSbCOMMA/HYPHEN-MINUS/FULL STOP/hiZEROiONEiTWOiTHREEiFOURiFIVEiSIXiSEVENiEIGHTiNINE/gSEMIgLESSnbEQUALSbGREATERnbQUESaCOMMERCIAL ATdkfREVERSE h/ekfCIRCUMFLEXj/LOWmGRAVEjdlfVERTICALmelfTILDE/";
c=*p;p++)c>96?q?(p=q,q=0):(q=p,p=strchr("aTION MARK/b SIGN/cPARENTHESIS/d/LEFT eRIGHT f BRACKET/gCOLON/hSOLIDUSi/DIGIT j ACCENTkSQUARElCURLYm LINE/n-THANz",c)):c-47?*d++=c:(*d++=0,l[k++]=d);
for(;~(k=getchar());puts(k<65?l[k]:(k&31)<27?b:l[k<97?k-26:k-52]))sprintf(b,"LATIN %s LETTER %c",k<91?"CAPITAL":"SMALL",k&95);}

덜 골프

char *all = "/SPACE/EXCLAMAaQUOTAaNUMBERbDOLLARbPERCENTbAMPERSAND/APOSTROPHEdcecASTERISK/PLUSbCOMMA/HYPHEN-MINUS/FULL STOP/hiZEROiONEiTWOiTHREEiFOURiFIVEiSIXiSEVENiEIGHTiNINE/gSEMIgLESSnbEQUALSbGREATERnbQUESaCOMMERCIAL ATdkfREVERSE h/ekfCIRCUMFLEXj/LOWmGRAVEjdlfVERTICALmelfTILDE/";
char *subs = "aTION MARK/b SIGN/cPARENTHESIS/d/LEFT eRIGHT f BRACKET/gCOLON/hSOLIDUSi/DIGIT j ACCENTkSQUARElCURLYm LINE/n-THANz";

main(int k)
{
    char c, *s, *p, *q=0, 
    b[999], // work buffer
    *d = b+99, // first part of buffer is used later
    *l[129]; // characters descriptions (used 32 to 126)

    // Uncompress the descriptions of all char except letters
    for(k = 32, p = all; c = *p; ++p)
    {
       c >= 'a' // substitution word are marked as lowercase letters
        ? q  
           ? (p = q, q = 0)
           : (q = p, p = strchr(subs, c))
        : c != '/'
           ? *d++ = c 
           : (*d++ = 0, l[k++] = d); // end char description
    }
    // Scan the input string and print each char description
    for(; (k=getchar()) != -1; )
    {
       sprintf(b,"LATIN %s LETTER %c", k<91 ? "CAPITAL":"SMALL", k & 95);
       puts( k<65 ? l[k] : k<91 ? b : k<97 ? l[k-26] : k<123 ? b : l[k-52]);
    }
}

4

커먼 리스프 (SBCL), 52 79

(map()(lambda(y)(format t"~:@(~A~)~%"(substitute #\  #\_(char-name y))))(read))

이것은 내장 및 구현에 따라 다르므로 허용되는 답변을 선택할 때 무시할 수 있습니다. 불행히도 파이썬 을 이길 수는 없습니다 . 업데이트 된 버전은 예상 출력을 따릅니다 (밑줄을 공백으로 바꿔야 함).

CL-USER> (map()(lambda(y)(format t"~:@(~A~)~%"(substitute #\  #\_(char-name y))))(read))
"(λ(r)(* 2 ᴨ r))"
LEFT PARENTHESIS
GREEK SMALL LETTER LAMDA
LEFT PARENTHESIS
LATIN SMALL LETTER R
RIGHT PARENTHESIS
LEFT PARENTHESIS
ASTERISK
SPACE
DIGIT TWO
SPACE
GREEK LETTER SMALL CAPITAL PI
SPACE
LATIN SMALL LETTER R
RIGHT PARENTHESIS
RIGHT PARENTHESIS

4

피스, 41

$from unicodedata import name as neg$Vz_N

mbomb007의 python answer 와 동일한 내장 기능을 사용합니다 . $운영자가 안전하지 않기 때문에 온라인으로 실행할 수 없습니다 .


4

C ++ 14 1043 1000 998 996 972 바이트

C ++ 14의 그로테스크 한 솔루션 :

#include<iostream>
#include<map>
#define b cout
#define d string
#define e },{
using namespace std;char l='\n';d s[]{"DIGIT ","LATIN CAPITAL LETTER ","LATIN SMALL LETTER "};map<char, d> m{{' ',"SPACE"e'!',"EXCLAMATION MARK"e'\"',"QUOTATION MARK"e'#',"NUMBER SIGN"e'$',"DOLLAR SIGN"e'%',"PERCENT SIGN"e'&',"AMPERSAND"e'\'',"APOSTROPHE"e'(',"LEFT PARENTHESIS"e')',"RIGHT PARENTHESIS"e'*',"ASTERISK"e'+',"PLUS SIGN"e',',"COMMA"e'-',"HYPHEN-MINUS"e'.',"FULL STOP"e'/',"SOLIDUS"e':',"COLON"e';',"SEMICOLON"e'<',"LESS-THAN SIGN"e'=',"EQUALS SIGN"e'>',"GREATER-THAN SIGN"e'?',"QUESTION MARK"e'@',"COMMERCIAL AT"e'[',"LEFT SQUARE BRACKET"e'\\',"REVERSE SOLIDUS"e']',"RIGHT SQUARE BRACKET"e'^',"CIRCUMFLEX ACCENT"e'_',"LOW LINE"e'`',"GRAVE ACCENT"e'{',"LEFT CURLY BRACKET"e'|',"VERTICAL LINE"e'}',"RIGHT CURLY BRACKET"e'~',"TILDE"}};int main(){d str;getline(cin,str);for(char c:str){islower(c)?b<<s[2]<<(char)(c-32):isupper(c)?b<<s[1]<<c:isdigit(c)?b<<*s<<c:b<<m.at(c);b<<l;}}

2 바이트를 깎아 낸 kirbyfan64sos 덕분에


*s대신에 할 수 있습니까 s[0]?
kirbyfan64sos

물론 할 수 있습니다! 완전히 놓친
sweerpotato

3

CJam, 517

l{i32-["SPACE""EXCLAMA""TION MARK":T+"QUOTA"T+"NUMBER DOLLAR PERCENT"{S/" SIGN"am*~}:H~"AMPERSAND""APOSTROPHE""LEFT PARENTHESIS":L"RIGHT ":R1$5>+"ASTERISK""PLUS"H"COMMA""HYPHEN-MINUS""FULL STOP""SOLIDUS":D"DIGIT "a"ZERO ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE"S/m*~"COLON""SEMI"1$+"LESS-THAN EQUALS GREATER-THAN"H"QUES"T+"COMMERCIAL AT""CAPITA"{["LATIN "\"L LETTER "]a'[,65>m*~L5<}:Z~"SQUARE BRACKET":Q+"REVERSE "D+RQ+"CIRCUMFLEX ACCENT""LOW LINE""GRAVE"2$A>+"SMAL"Z"CURLY"33$B>+:C+"VERTICAL LINE"RC+"TILDE"]=N}/

온라인 버전

나는 다른 솔루션을 시도했지만 단순히 거대한 이름으로 모든 이름을 저장하는 것이 가장 효율적인 것 같습니다.

그건 그렇고 나의 첫 진짜 CJam 프로그램입니다.


3

C ++ 14 716 706 704

#include<iostream>
char*q,x,b[584],*t=b,a[]=R"(space}exclamation|mark}quot"-number|sign}dolla!apercent!mam"%sand}apostrophe}left|par%3hesis}righ"Wasterisk}plus*<comma}hy)#n{minus}full|stop}solid"Ldigit|zero!Tone!Gtw"kthre#&four!Uiv#&six!Heve>^!_e6r!ani,1colon}semi!Fless{than8Eequal:$grea<s$2quesMj>EJoial|at}lQ9n|capit"?let('|Jes+\re|bracket}r5urse|C5M?%2circumflex|acXR}low|l:bgrave#'0=smaNy0+curly*s/Ytic4z)$/\$itilde)",*s=a;int c,z,l='{';int main(){for(;x=*s++;)if(z=x-32,x>96)*t++=x<l?z:"- "[x%l];else for(c=z*95+*s++-32,q=t-c/13,x=3+c%13;x--;)*t++=*q++;while(std::cin.get(x)){for(s=b,z=0,c=x<65?x-32:x<91?z=33:x<97?x-57:x<l?z=40:x-82;c--;)while(*s++);auto&o=std::cout<<s;(z?o.put(x&~32):o)<<"\n";}}

라이브 버전 .

공백이있는 경우 :

#include <iostream>

// a is compressed using an LZ like compression scheme
char *q, x, b[584],
    *t = b,
    a[] =
        R"(space}exclamation|mark}quot"-number|sign}dolla!apercent!mam"%sand}apostrophe}left|par%3hesis}righ"Wasterisk}plus*<comma}hy)#n{minus}full|stop}solid"Ldigit|zero!Tone!Gtw"kthre#&four!Uiv#&six!Heve>^!_e6r!ani,1colon}semi!Fless{than8Eequal:$grea<s$2quesMj>EJoial|at}lQ9n|capit"?let('|Jes+\re|bracket}r5urse|C5M?%2circumflex|acXR}low|l:bgrave#'0=smaNy0+curly*s/Ytic4z)$/\$itilde)",
    *s = a;

int c, z, l = '{';

int main() {
    // Decompress from a into b
    for (; x = *s++;)
        if (z = x - 32, x > 96)
            *t++ = x < l ? z : "- "[x % l];
        else
            for (c = z * 95 + *s++ - 32, q = t - c / 13, x = 3 + c % 13; x--;) *t++ = *q++;

    // Process input a char at a time, performing a lookup into b for the c'th null separated string
    while (std::cin.get(x)) {
        for (s = b, z = 0,
            c = x < 65 ? x - 32 : x < 91 ? z = 33 : x < 97 ? x - 57 : x < l ? z = 40 : x - 82;
             c--;)
            while (*s++)
                ;
        auto& o = std::cout << s;
        (z ? o.put(x & ~32) : o) << "\n";
    }
}

압축 된 문자열은 다음과 같이 압축 a해제됩니다.

공백} 느낌표 | 표} 따옴표 | 표} 번호 | 기호} 달러 | 기호} 퍼센트 | 기호} 앰퍼샌드} 아포스트로피} 왼쪽 | 괄호} 오른쪽 | 괄호} 별표} 플러스 | 기호} 쉼표} 하이픈 {마이너스} 풀 | 정지} solidus} 자리 | 0} 자리 | 1} 자리 | 2} 자리 | 3} 자리 | 4} 자리 | 5} 자리 | 6} 자리 | 7} 자리 | 8} 자리 | 9} 콜론} 세미콜론} 없음 {보다 | sign} 같음 | sign} 물음보다 {질문보다} 질문 {mark} 상업 | at} 라틴어 | 자본 | 편지 |} 왼쪽 | 스퀘어 | 브래킷} 반전 | 솔 리더스} 오른쪽 | 스퀘어 | 브래킷} 서클 플렉스 | 액센트} 낮음 | 라인 } 자갈 | 액센트} 라틴 | 작은 | 편지 |} 왼쪽 | 곱슬 | 브래킷} 수직 | 라인} 오른쪽 | 곱슬 | 브래킷} 물결표

그리고 압축 해제시 }대체됩니다 \0, |(공간)과 {함께 -와 소문자가 대문자로 변환됩니다.

문자열은 리터럴 [a-~]또는 두 문자로 인코딩 된 오프셋 / 길이로 문자열의 앞부분과 일치하도록 LZ 스타일로 압축 됩니다.


3

클로저, 56 바이트

(doseq[c(read-line)](println(Character/getName(int c))))

@peter의 답변에서 영감을 얻었습니다. Java interop에 Clojure를 사용합니다.


3

펄-894 바이트

손으로 사랑스럽게 만들어졌습니다. Perl에서 처음으로 골프를 타면 모든 팁을 얻을 수 있습니다.

$_=$ARGV[0];s/(.)/$1\n/g;s/([A-Z])/& CAPITAL' $1/g;s/([a-z])/& SMALL' \U$1/g;s/,/COMMA/g;s/& /LATIN /g;s/' / LETT, /g;s/&/AMP,SAND/g;s/'/APOSTROPHE/g;s/ \n/SPACE\n/g;s/\*/AST,ISK/g;s/-/HYPHEN-MINUS/g;s/\./FULL STOP/g;s/@/COMM,CIAL AT/g;s/~/TILDE/g;s/:/&/g;s/;/SEMI&/g;s/&/COLON/g;s/\|/V,TICAL&/g;s/_/LOW&/g;s/&/ LINE/g;s/\^/CIRCUMFLEX&/g;s/`/GRAVE&/g;s/&/ ACCENT/g;s/\//&/g;s/\\/REV,SE &/g;s/&/SOLIDUS/g;s/!/!&/g;s/"/"&/g;s/\?/?&/g;s/!/EXCLAMA/g;s/"/QUOTA/g;s/\?/QUES/g;s/&/TION MARK/g;s/#/NUMB,&/g;s/\$/DOLLAR&/g;s/%/P,CENT&/g;s/\+/PLUS&/g;s/</LESS-THAN&/g;s/=/EQUALS&/g;s/>/GREAT,-THAN&/g;s/&/ SIGN/g;s/\(/<&/g;s/\)/>&/g;s/&/ PARENTHESIS/g;s/\[/<&/g;s/\]/>&/g;s/&/ SQUARE'/g;s/{/<&/g;s/}/>&/g;s/&/ CURLY'/g;s/'/ BRACKET/g;s/</LEFT/g;s/>/RIGHT/g;s/0/&Z,O/g;s/1/&ONE/g;s/2/&TWO/g;s/3/&THREE/g;s/4/&FOUR/g;s/5/&FIVE/g;s/6/&SIX/g;s/7/&SEVEN/g;s/8/&EIGHT/g;s/9/&NINE/g;s/&/DIGIT /g;s/,/ER/g;print;

1

요소, 58 바이트

[ readln [ char>name "-"" " replace >upper print ] each ] 

꽤 간단합니다. Java 및 Perl 6 답변과 정확히 동일합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.