キャラクター名を印刷する


42

すべてのUnicode文字には、「LATIN CAPITAL LETTER A」などの名前があります。Unicode文字名には、大文字、空白、マイナス記号のみを含めることができます。

テキストを読み取り、新しい行に各文字の名前を出力するプログラムを作成します。たとえば、入力が「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
  • 入力は、コード内の文字列だけでなく、ファイルまたはユーザー入力から行う必要があります。
  • 出力は、ファイルまたはstdoutに書き込むか、画面に印刷する必要があります。
  • インターネットおよび外部ライブラリは許可されていません。必要なデータはすべてコードに含める必要があります。
  • 入力には、Basic Latinコード範囲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
こんにちは、先に進んで質問を編集しました。同意しない場合はロールバックしてください。情報のソースはこれ以上必要ありません。不一致の問題を回避するために、質問に1つの標準バージョンが必要です。最も簡潔なssec.wisc.edu/~tomw/java/unicode.html#x0000を選択しました。それ以外、+ 1
レベルリバーセント

@steveverrillを編集してくれてありがとう、私は自分でそれをするのが面倒でした。
私と私の猫

どうやら、値は、Windowsの一部として、で利用可能ですC:\Windows\System32\getuname.dll。これは、Windowsに組み込まれている場合でも、「外部ライブラリ」としてもカウントされますか?
lc。

6
ソリダスという言葉を学びました。
ルーク

回答:


31

Java-113バイト(コマンドラインから読み取る場合は152)

編集:無駄な中括弧を削除しました。

Edit2:不要な変数を削除しました。

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));}}

Javaには必要なものがすべて揃っています。私はこれがゴルフダウンできると確信しています。


7
くそー!ビルトイン!これを興味深い課題にするために、これは「必要なすべてのデータをコードに含める必要がある」ことに違反していると考えます。しかし、非常に賢い。
レベルリバーセント

1
@steveverrillまあ:)。一般的なLispが似たようなことをした別の課題を見てきました(正しく覚えていれば1から100まで数えます)。
ピーターレンケフィ

6
うわー、今回はJavaが多くのゴルフ言語を打ち負かすチャンスがあります。
-vsz

4
代替Java 8ソリューション:x[0].chars().forEach(i->System.out.println(Character.getName(i)));これは、コマンドライン引数ソリューションと比較して2文字を節約します(for-loopを置き換えることにより)。
hjk

3
または多分x[0].chars().map(' '::getName).forEach(System.out::println);
エリック

18

Python 3、56バイト

組み込み関数を使用するunicodedata.name()ため、これは無能な場合があります。Javaの回答でも同様のことが行われたため、少なくとも投稿する価値があると思いました。

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

私もPythonで投稿したいと思っていましたが、私のJavaの答えは十分にチート:)でした。
ピーターレンケフィ

1
確かfor i in input():print(unicodedata.name(i))に短いですか?
エリック

1
@Eric No.する必要がimport unicodedataあるので、それは長くなります。
mbomb007

17

JavaScript(ES6)594 618 626

注: atob / btoaを使用して長い文字列を圧縮することで最大30バイト節約できますが、 '〜'の上のutf8文字はStack Exchangeポストエディターでは受け入れられません。代わりに、実行中のスニペットを保持することを好みます。

THX @Ypnypnで保存された8文字を編集

繰り返される単語の明らかな圧縮。バックティック内の改行は重要であり、カウントされます。

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
あなたのバイト数は正しいです:)
ベータ崩壊

1
PPCGへようこそ!:D
ベータ崩壊

タスクに組み込まれている場合は便利ですが、出力は要求されたものではありません。1列テーブルではなく4列テーブルです。正しい出力を得るためにコアを追加する必要があると思う
-edc65

@ edc65は簡単に修正できるので、それをボーナスだと思っただけです。
デビッドアレンバーグ

@ edc65が修正しました。
デビッドアレンバーグ

7

Perl 6、21バイト

ユニコード名を取得するための組み込みメソッドの使用に特に反対するルールはありませんでした。
(また、現在最高の投票数であるJavaの回答も同じです)

.say for get.uninames

1
Perl 6は奇妙です。でも大好きです。

6

Perl (+ 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

hexdumpを貼り付けて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ローマ字大文字E
     3ローマ字大文字G
     4ローマ字大文字I
     5ローマ字大文字N
     6左カーリーブラケット 
     7ローマ字小文字S
     8ローマ字小文字P
     9ローマ字小文字L
    10ローマ字小文字I
    11ローマ字小文字T
    12左のパレンテーゼ 
    13引用符 
    14ローマ字小文字I
    15コンマ 
    16ローマ字大文字L
    17ローマ字小文字V
    18コンマ 
    19ローマ字大文字S
    20ローマ字小文字V
    21コンマ 
    22ローマ字小文字A
    23ローマ字小文字X
    24コンマ 
    25 CIRCUMFLEXアクセント 
    26ローマ字小文字X
    27コンマ 
    28左角ブラケット 
    29ローマ字小文字X
    30コンマ 
    31ローマ字大文字Q
    32コンマ 
    33ローマ字大文字O
    34コンマ 
    35ローマ字小文字T
    36ローマ字大文字K
    37コンマ 
    38ローマ字小文字C
    39ローマ字大文字K
    40コンマ 
    41ローマ字大文字V
    42コンマ 
    43ローマ字小文字Q
    44ローマ字小文字X
    45コンマ 
    46ローマ字小文字G
    47コンマ 
    48ローマ字大文字I
    49コンマ 
    50ローマ字小文字W
    51ローマ字小文字U
    52コンマ 
    53ローマ字大文字X
    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ローマ字大文字P
    88 COMMA 
    89ローマ字大文字R
    90ローマ字小文字X
    91コンマ 
    92ローライン 
    93ローマ字小文字X
    94 COMMA 
    95ローマ字大文字J
    96ローマ字小文字X
    97コンマ 
    98ローマ字大文字U
    99ローマ字小文字V
   100コンマ 
   101ラテン大文字M
   102ティルド 
   103コンマ 
   104スペース 
   105ローマ字小文字T
   106グレーブアクセント 
   107ローマ字大文字Y
   108コンマ 
   109ローマ字大文字Z
   110ローマ字大文字X
   111コンマ 
   112ローマ字小文字C
   113グレイブアクセント 
   114ローマ字大文字Y
   115コンマ 
   116ローマ字大文字N
   117逆ソリダス 
   118逆ソリダス 
   119コンマ 
   120垂直線 
   121ローマ字小文字S
   122コンマ 
   123ローマ字小文字M
   124逆ソリダス 
   125逆ソリダス 
   126コンマ 
   127スペース 
   128ローマ字小文字T
   129ローマ字小文字H
   130ローマ字大文字Y
   131コンマ 
   132ローマ字大文字T
   133ローマ字小文字S
   134コンマ 
   135ローマ字小文字C
   136ローマ字小文字H
   137ローマ字大文字Y
   138コンマ 
   139ローマ字小文字F
   140スペース 
   141ローマ字大文字H
   142ローマ字大文字Y
   143ローマ字大文字P
   144ローマ字大文字H
   145ローマ字大文字E
   146ローマ字大文字N
   147ハイフンマイナス 
   148ローマ字大文字M
   149ローマ字大文字I
   150ローマ字大文字N
   151ラテン大文字U
   152ローマ字大文字S
   153スペース 
   154ローマ字大文字G
   155ローマ字大文字R
   156ローマ字大文字E
   157ラテン大文字A
   158ローマ字大文字T
   159ローマ字大文字E
   160ローマ字大文字R
   161ハイフンマイナス 
   162ローマ字大文字T
   163ローマ字大文字H
   164ローマ字大文字A
   165ローマ字大文字N
   166スペース 
   167ラテン大文字P
   168ラテン大文字A
   169ローマ字大文字R
   170ローマ字大文字E
   171ローマ字大文字N
   172ローマ字大文字T
   173ローマ字大文字H
   174ラテン大文字E
   175ローマ字大文字S
   176ローマ字大文字I
   177ラテン大文字S
   178スペース 
   179ローマ字大文字E
   180ローマ字大文字X
   181ラテン大文字C
   182ラテン大文字L
   183ローマ字大文字A
   184ローマ字大文字M
   185ローマ字大文字A
   186ローマ字大文字T
   187ローマ字大文字I
   188ローマ字大文字O
   189ローマ字大文字N
   190スペース 
   191ラテン大文字C
   192ローマ字大文字O
   193ローマ字大文字M
   194ローマ字大文字M
   195ローマ字大文字E
   196ローマ字大文字R
   197ローマ字大文字C
   198ローマ字大文字I
   199ラテン大文字A
   200ラテン大文字L
   201スペース 
   202ラテン大文字C
   203ローマ字大文字I
   204ローマ字大文字R
   205ローマ字大文字C
   206ローマ字大文字U
   207ローマ字大文字M
   208ローマ字大文字F
   209ローマ字大文字L
   210ローマ字大文字E
   211ラテン大文字X
   212スペース 
   213ラテン大文字A
   214ローマ字大文字P
   215ローマ字大文字O
   216ローマ字大文字S
   217ローマ字大文字T
   218ローマ字大文字R
   219ローマ字大文字O
   220ローマ字大文字P
   221ローマ字大文字H
   222ローマ字大文字E
   223スペース 
   224ローマ字大文字S
   225ラテン大文字E
   226ローマ字大文字M
   227ローマ字大文字I
   228ローマ字大文字C
   229ローマ字大文字O
   230ローマ字大文字L
   231ローマ字大文字O
   232ローマ字大文字N
   233スペース 
   234ラテン大文字A
   235ローマ字大文字M
   236ラテン大文字P
   237ローマ字大文字E
   238ラテン大文字R
   239ローマ字大文字S
   240ローマ字大文字A
   241ローマ字大文字N
   242ラテン大文字D
   243スペース 
   244ラテン大文字L
   245ラテン大文字E
   246ローマ字大文字S
   247ラテン大文字S
   248ハイフンマイナス 
   249ローマ字大文字T
   250ローマ字大文字H
   251ラテン大文字A
   252ローマ字大文字N
   253スペース 
   254ローマ字大文字Q
   255ローマ字大文字U
   256ローマ字大文字O
   257ローマ字大文字T
   258ローマ字大文字A
   259ローマ字大文字T
   260ローマ字大文字I
   261ローマ字大文字O
   262ローマ字大文字N
   263スペース 
   264ローマ字大文字V
   265ローマ字大文字E
   266ローマ字大文字R
   267ローマ字大文字T
   268ローマ字大文字I
   269ローマ字大文字C
   270ローマ字大文字A
   271ローマ字大文字L
   272スペース 
   273ローマ字大文字Q
   274ローマ字大文字U
   275ラテン大文字E
   276ローマ字大文字S
   277ローマ字大文字T
   278ローマ字大文字I
   279ローマ字大文字O
   280ローマ字大文字N
   281スペース 
   282ローマ字大文字A
   283ローマ字大文字S
   284ラテン大文字T
   285ローマ字大文字E
   286ローマ字大文字R
   287ローマ字大文字I
   288ローマ字大文字S
   289ローマ字大文字K
   290スペース 
   291ラテン大文字C
   292ラテン大文字A
   293ローマ字大文字P
   294ローマ字大文字I
   295ローマ字大文字T
   296ローマ字大文字A
   297ローマ字大文字L
   298スペース 
   299ローマ字大文字S
   300ローマ字大文字O
   301ラテン大文字L
   302ローマ字大文字I
   303ローマ字大文字D
   304ローマ字大文字U
   305ローマ字大文字S
   306スペース 
   307ローマ字大文字B
   308ローマ字大文字R
   309ローマ字大文字A
   310ローマ字大文字C
   311ローマ字大文字K
   312ローマ字大文字E
   313ローマ字大文字T
   314スペース 
   315ローマ字大文字R
   316ローマ字大文字E
   317ローマ字大文字V
   318ローマ字大文字E
   319ローマ字大文字R
   320ローマ字大文字S
   321ラテン大文字E
   322スペース 
   323ローマ字大文字P
   324ラテン大文字E
   325ローマ字大文字R
   326ローマ字大文字C
   327ローマ字大文字E
   328ローマ字大文字N
   329ローマ字大文字T
   330スペース 
   331ローマ字大文字A
   332ローマ字大文字C
   333ローマ字大文字C
   334ローマ字大文字E
   335ローマ字大文字N
   336ローマ字大文字T
   337スペース 
   338ラテン大文字L
   339ローマ字大文字E
   340ローマ字大文字T
   341ローマ字大文字T
   342ローマ字大文字E
   343ローマ字大文字R
   344スペース 
   345ローマ字大文字D
   346ローマ字大文字O
   347ローマ字大文字L
   348ラテン大文字L
   349ローマ字大文字A
   350ローマ字大文字R
   351スペース 
   352ラテン大文字E
   353ローマ字大文字Q
   354ローマ字大文字U
   355ローマ字大文字A
   356ローマ字大文字L
   357ローマ字大文字S
   358スペース 
   359ラテン大文字S
   360ローマ字大文字Q
   361ローマ字大文字U
   362ローマ字大文字A
   363ローマ字大文字R
   364ローマ字大文字E
   365スペース 
   366ローマ字大文字N
   367ローマ字大文字U
   368ローマ字大文字M
   369ローマ字大文字B
   370ラテン大文字E
   371ローマ字大文字R
   372スペース 
   373ラテン大文字D
   374ローマ字大文字I
   375ローマ字大文字G
   376ローマ字大文字I
   377ローマ字大文字T
   378スペース 
   379ローマ字大文字R
   380ローマ字大文字I
   381ラテン大文字G
   382ラテン大文字H
   383ラテン大文字T
   384スペース 
   385ローマ字大文字T
   386ローマ字大文字H
   387ローマ字大文字R
   388ローマ字大文字E
   389ローマ字大文字E
   390スペース 
   391ラテン大文字C
   392ラテン大文字O
   393ラテン大文字L
   394ローマ字大文字O
   395ラテン大文字N
   396スペース 
   397ローマ字大文字T
   398ラテン大文字I
   399ラテン大文字L
   400ローマ字大文字D
   401ローマ字大文字E
   402スペース 
   403ラテン大文字C
   404ラテン大文字O
   405ローマ字大文字M
   406ローマ字大文字M
   407ローマ字大文字A
   408スペース 
   409ローマ字大文字C
   410ローマ字大文字U
   411ローマ字大文字R
   412ラテン大文字L
   413ローマ字大文字Y
   414スペース 
   415ローマ字大文字S
   416ローマ字大文字P
   417ローマ字大文字A
   418ローマ字大文字C
   419ローマ字大文字E
   420スペース 
   421ラテン大文字S
   422ローマ字大文字M
   423ローマ字大文字A
   424ローマ字大文字L
   425ラテン大文字L
   426スペース 
   427ローマ字大文字S
   428ローマ字大文字E
   429ローマ字大文字V
   430ローマ字大文字E
   431ローマ字大文字N
   432スペース 
   433ローマ字大文字E
   434ローマ字大文字I
   435ローマ字大文字G
   436ローマ字大文字H
   437ラテン大文字T
   438スペース 
   439ローマ字大文字G
   440ローマ字大文字R
   441ローマ字大文字A
   442ローマ字大文字V
   443ローマ字大文字E
   444スペース 
   445ローマ字大文字L
   446ローマ字大文字A
   447ローマ字大文字T
   448ローマ字大文字I
   449ローマ字大文字N
   450スペース 
   451ローマ字大文字N
   452ローマ字大文字I
   453ローマ字大文字N
   454ローマ字大文字E
   455スペース 
   456ローマ字大文字F
   457ローマ字大文字O
   458ローマ字大文字U
   459ローマ字大文字R
   460スペース 
   461ラテン大文字P
   462ラテン大文字L
   463ローマ字大文字U
   464ローマ字大文字S
   465スペース 
   466ローマ字大文字F
   467ローマ字大文字I
   468ローマ字大文字V
   469ラテン大文字E
   470スペース 
   471ラテン大文字L
   472ローマ字大文字I
   473ラテン大文字N
   474ローマ字大文字E
   475スペース 
   476ローマ字大文字L
   477ローマ字大文字E
   478ローマ字大文字F
   479ローマ字大文字T
   480スペース 
   481ローマ字大文字S
   482ローマ字大文字T
   483ローマ字大文字O
   484ローマ字大文字P
   485スペース 
   486ローマ字大文字M
   487ローマ字大文字A
   488ローマ字大文字R
   489ローマ字大文字K
   490スペース 
   491ローマ字大文字F
   492ローマ字大文字U
   493ローマ字大文字L
   494ローマ字大文字L
   495スペース 
   496ローマ字大文字S
   497ローマ字大文字I
   498ローマ字大文字G
   499ローマ字大文字N
   500スペース 
   501ローマ字大文字Z
   502ローマ字大文字E
   503ローマ字大文字R
   504ローマ字大文字O
   505スペース 
   506ローマ字大文字T
   507ローマ字大文字W
   508ローマ字大文字O
   509スペース 
   510ローマ字大文字O
   511ローマ字大文字N
   512ローマ字大文字E
   513スペース 
   514ローマ字大文字L
   515ローマ字大文字O
   516ローマ字大文字W
   517スペース 
   518ローマ字大文字S
   519ローマ字大文字I
   520ローマ字大文字X
   521スペース 
   522ラテン大文字A
   523ローマ字大文字T
   524引用符 
   525コンマ 
   526ローマ字小文字W
   527右パレンテーシス 
   528セミコロン 
   529ローマ字小文字Y
   530イコールサイン 
   531ローマ字小文字W
   532左角ブラケット 
   533 DIGIT TWO 
   534右角ブラケット 
   535セミコロン 
   536ローマ字小文字F
   537ローマ字小文字O
   538ローマ字小文字R
   539左のパレンテーシス 
   540ローマ字小文字X
   541イコールサイン 
   542ローマ字小文字W
   543左角ブラケット 
   544デジ1 
   545右スクエアブラケット 
   546セミコロン 
   547ローマ字小文字I
   548プラス記号 
   549プラス記号 
   550未満のサイン 
   551 DIGIT TWO 
   552 DIGIT SIX 
   553セミコロン 
   554ローマ字小文字X
   555イコールサイン 
   556ローマ字小文字X
   557引用符 
   558ローマ字小文字N
   559ローマ字大文字W
   560右角ブラケット 
   561 COMMA 
   562見積マーク 
   563右パレンテーシス 
   564ローマ字小文字Y
   565イコールサイン 
   566ローマ字小文字Y
   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 COMMA 
   593ローマ字小文字B
   594コンマ 
   595引用符 
   596コンマ 
   597引用符 
   598右パレンテーシス 
   599セミコロン 
   600ローマ字小文字J
   601プラス記号 
   602プラス記号 
   603未満記号 
   604デジ1 
   605桁2 
   606 DIGIT SIX 
   607セミコロン 
   608ローマ字大文字F
   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パーセント記号 
   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ローマ字大文字N
   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左の頭頂部 
   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ローマ字小文字Q
   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 DIGIT SIX 
   711 DIGIT NINE 
   712右角ブラケット 
   713右パレンテシス 
   714引用符 
   715スペース 
   716引用符 
   717左冠動脈 
   718ローマ字小文字Z
   719ティルド 
   720ソリダス 
   721ローマ字大文字T
   722ローマ字大文字T
   723ソリダス 
   724質問マーク 
   725ローマ字小文字T
   726ローマ字小文字O
   727ローマ字小文字U
   728ローマ字小文字P
   729ローマ字小文字P
   730ローマ字小文字E
   731ローマ字小文字R
   732左パレンテーシス 
   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、644 656

完全なプログラム、標準入力からの読み取り

Ideoneでテストする

これはJavaScriptへの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

Common Lisp(SBCL)、 52 79

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

これは組み込みで実装に依存するため、受け入れられた回答を選択するときに無視することもできます。残念ながら、これはPythonを打ち負かすのに十分ではありません。更新されたバージョンは、予想される出力に準拠しています(アンダースコアをスペースに置き換える必要があります)。

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

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} digit | zero} digit | one} digit | two} digit | three} digit | four} digit | five} digit | six} digit | seven} digit | eight} digit | nine} colon} semicolon} less {than | sign} equals | sign} greater {than | sign} question | mark} commercial | at} latin | capital | letter |} left | square | bracket} reverse | solidus} right | square | bracket} circumflex | accent} low | line } grave | accent} latin | small | letter |} left | curly | bracket} vertical | line} right | curly | bracket} tilde

そして、解凍中 }置き換えられ\0|(空間)と{して-と小文字は大文字に変換されます。

文字列は[a-~]、文字列の前の部分に一致するリテラルまたは2文字エンコードのオフセット/長さとして圧縮されたLZスタイルです。


3

Clojure、56バイト

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

@peterの答えに触発されました。Javaの相互運用にClojureを使用します。


3

Perl-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.