Cetak nama karakter


42

Setiap karakter Unicode memiliki nama, seperti "LATIN CAPITAL LETTER A". Nama karakter Unicode hanya boleh berisi huruf besar, spasi putih, dan tanda minus.

Tulis program yang membaca teks dan menampilkan nama masing-masing karakter pada baris baru. Misalnya, jika inputnya adalah "Halo, Dunia!", Hasilnya adalah

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
  • Input harus berasal dari file atau dari input pengguna, bukan hanya string dalam kode.
  • Output harus ditulis ke file atau stdout atau dicetak ke layar.
  • Perpustakaan internet dan eksternal tidak diizinkan, semua data yang diperlukan harus dalam kode.
  • Asumsikan bahwa input hanya berisi karakter ASCII yang dapat dicetak dalam rentang kode Latin Dasar 32-126. Anda dapat mengabaikan baris baru yang tertinggal.
  • Semua bahasa pemrograman diizinkan. Kode terpendek dalam byte menang.

Nama karakter Unicode resmi dapat ditemukan di sini . Sumber lain:

Ini adalah pertanyaan pertama saya, jadi saya sangat menghargai saran apa pun jika ini dapat diperbaiki.

Untuk tujuan tantangan ini, daftar di bawah ini bersifat normatif.

    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
Hai, saya sudah maju dan mengedit pertanyaan Anda, putar kembali jika Anda tidak setuju. Anda tidak perlu lebih banyak sumber informasi, Anda perlu satu , versi normatif dalam pertanyaan, untuk menghindari masalah dengan perbedaan. Saya memilih ssec.wisc.edu/~tomw/java/unicode.html#x0000 karena itu yang paling ringkas. Selain itu, +1
Level River St

Terima kasih atas hasil edit @steveverrill, saya terlalu malas untuk melakukannya sendiri.
saya dan kucing saya 6-15

Rupanya nilai tersedia sebagai bagian dari Windows, di C:\Windows\System32\getuname.dll. Apakah ini juga dianggap sebagai "perpustakaan eksternal", bahkan jika itu dibangun untuk Windows?
lc.

6
Saya baru belajar kata solidus.
Luke

Jawaban:


31

Java - 113 byte (152 jika dibaca dari baris perintah)

Sunting: dihapus kurung keriting yang tidak berguna.

Edit2: menghapus variabel yang tidak perlu.

Edit3: Alih-alih Character.getName () saya menggunakan c.getName ().

Sunting4: Melewati string sebagai argumen baris perintah.

Dengan argumen baris perintah (113 byte):

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

Dengan baris baca (152 byte):

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

Jawa memiliki semua yang dibutuhkan. Saya yakin ini bisa diturunkan.


7
Mengutuk! Builtin! Untuk menjadikan ini tantangan yang menarik, saya akan menganggap ini sebagai ketidakpatuhan dengan "semua data yang diperlukan harus ada dalam kode." Sangat pintar.
Level River St

1
@steveverrill Oh well :). Saya telah melihat tantangan lain di mana cadel umum melakukan sesuatu yang serupa (menghitung dari satu hingga 100 jika saya ingat benar).
Peter Lenkefi

6
Wow, kali ini Jawa memiliki peluang untuk mengalahkan banyak bahasa golf.
vsz

4
Solusi Java 8 Alternatif: x[0].chars().forEach(i->System.out.println(Character.getName(i)));Ini menghemat 2 karakter dibandingkan dengan solusi argumen baris perintah (dengan mengganti for-loop).
hjk

3
Atau mungkinx[0].chars().map(' '::getName).forEach(System.out::println);
Eric

18

Python 3, 56 byte

Menggunakan fungsi bawaan unicodedata.name(), jadi ini mungkin tidak kompeten. Jawaban Java juga melakukan hal yang sama, jadi saya pikir itu setidaknya layak untuk dikirim.

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

Saya juga ingin memposting satu dengan python tetapi jawaban java saya cukup curang :).
Peter Lenkefi

1
Tentunya for i in input():print(unicodedata.name(i))lebih pendek?
Eric

1
@ Eric Tidak. Anda harus import unicodedata, jadi itu lebih lama .
mbomb007

17

JavaScript (ES6) 594 618 626

Catatan saya bisa menyimpan ~ 30 byte mengompresi string panjang dengan atob / btoa, tetapi karakter utf8 di atas '~' tidak diterima dengan baik oleh editor posting Stack Exchange. Saya lebih memilih menyimpan cuplikan yang berjalan.

Edit 8 karakter tersimpan thx @Ypnypn

Jelas kompresi kata berulang. Baris baru di dalam backticks signifikan dan diperhitungkan.

Tes menjalankan cuplikan di 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 byte 62

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

Sunting: per komentar @flodels, saya harus membacanya dari koneksi terlebih dahulu, jadi harus menambahkan scan. Ini juga mungkin solusi yang tidak kompeten sesuai dengan semua aturan.

Pemakaian

> 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

Anda juga dapat membungkusnya menjadi fungsi untuk penggunaan yang lebih nyaman

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

Kemudian, penggunaannya adil

UNI("Hello, World!")

1
Hitungan byte Anda sudah benar :)
Beta Decay

1
Dan selamat datang di PPCG! : D
Beta Decay

Baik untuk Anda memiliki built-in untuk tugas, tetapi output tidak apa yang diminta - tabel 4 kolom, bukan 1 tabel kolom. Saya pikir Anda harus menambahkan beberapa inti untuk mendapatkan output yang benar
edc65

@ edc65 yang mudah diperbaiki, saya hanya menganggapnya sebagai bonus.
David Arenburg

@ edc65 memperbaikinya.
David Arenburg

7

Perl 6 , 21 byte

Saya tidak melihat aturan khusus yang menentang penggunaan metode bawaan untuk mendapatkan nama unicode.
(Juga jawaban Java yang merupakan yang tertinggi saat ini melakukan hal yang sama)

.say for get.uninames

1
Perl 6 aneh. Tapi aku menyukainya.
kucing

6

Perl (+ coreutils) , 563 byte

Catatan : Di bawah ini tidak akan berfungsi apa adanya, itu perlu direproduksi dari xxddump di bawah ini! Saya mencoba agar data mentah diteruskan zcat, tetapi itu gagal. Saya mungkin hanya menggunakan modul Perl Gzip asli, tapi itu pasti besok!

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

Untuk mereproduksi file, jalankan:

xxd -r > 57413.pl

rekatkan hexdump dan tekan Enter, lalu Ctrl+ D.

Jalankan sebagai:

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

Versi Perl murni sebelumnya, 893 byte

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

Hanya bercanda; 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):_)}

Bekerja dengan stdin / stdout.

Lebih "dapat dibaca":

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 byte

#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";}

Berdasarkan solusi sweerpotato, tetapi banyak dimodifikasi.


Bagus sekali: ~)!
sweerpotato

5

C, 644 656

Program lengkap, membaca dari input standar

Uji Ideone

Ini adalah porting jawaban JavaScript saya ke C. Bahasa C pandai memanipulasi karakter tunggal sebagai angka (tidak perlu .toUpperCasedan sejenisnya), tetapi lebih lemah dalam manipulasi string.

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

Kurang golf

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

Gangguan Umum (SBCL), 52 79

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

Ini bawaan dan tergantung pada implementasi, jadi Anda mungkin ingin mengabaikannya saat memilih jawaban yang diterima. Sayangnya, ini tidak cukup untuk mengalahkan Python . Versi yang diperbarui sesuai dengan output yang diharapkan (saya harus mengganti garis bawah dengan spasi).

Contoh

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

Pyth, 41

$from unicodedata import name as neg$Vz_N

Menggunakan builtin yang sama dengan jawaban python mbomb007 . Perhatikan bahwa ini tidak dapat dijalankan secara online karena $operator tidak aman.


4

C ++ 14, 1043 1000 998 996 972 byte

Solusi aneh dalam 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;}}

Berkat kirbyfan64sos untuk bermain golf dua byte


Dapat Anda lakukan *sbukan s[0]?
kirbyfan64sos

Tentu bisa! Benar-benar melewatkannya
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}/

Versi online

Saya telah mencoba berbagai solusi tetapi hanya menyimpan semua nama dalam array yang besar tampaknya paling efisien.

Ngomong-ngomong, ini adalah program CJam asli saya.


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

Versi langsung .

Dengan spasi putih:

#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";
    }
}

String yang dikompres akan terkompresi amenjadi:

spasi} seru | mark} kutipan | mark} angka | tanda} dolar | tanda} persen | tanda} tanda kutip dan} tanda kutip} kiri | tanda kurung} kanan | tanda kurung} tanda bintang} plus | tanda} koma} tanda hubung {minus} penuh | berhenti} solidus} digit | nol} digit | satu} digit | dua} digit | tiga} digit | empat} digit | lima} digit | enam} digit | tujuh} digit | delapan} digit | sembilan} titik dua} titik koma} titik koma} kurang {daripada | tanda} sama dengan | tanda} lebih besar {daripada | tanda} pertanyaan | tanda} komersial | at} latin | modal | huruf |} kiri | persegi | braket} terbalik | solidus} kanan | persegi | braket} sirkumfleks | aksen} rendah | baris } kuburan | aksen} latin | kecil | huruf |} kiri | keriting | kurung} vertikal | garis} kanan | keriting | kurung} tilde

Dan selama dekompresi }diganti dengan \0, |dengan (spasi) dan {dengan -dan huruf kecil dikonversi ke huruf besar.

String dikompresi dengan gaya LZ baik sebagai literal [a-~]atau karakter dua disandikan offset / panjang untuk pertandingan sebelumnya dalam string.


3

Clojure, 56 byte

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

Terinspirasi oleh jawaban @ peter. Gunakan Clojure untuk interop Java.


3

Perl - 894 byte

Dengan penuh kasih dibuat dengan tangan. Pertama kali bermain golf di Perl, jadi ada kiat yang dihargai.

$_=$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

Faktor, 58 byte

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

Cukup mudah; melakukan hal yang sama persis dengan jawaban Java dan Perl 6.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.