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:
- http://www.w3schools.com/charsets/ref_utf_basic_latin.asp
- http://www.ssec.wisc.edu/~tomw/java/unicode.html#x0000
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
code-golf
kolmogorov-complexity
unicode
saya dan kucing saya
sumber
sumber
C:\Windows\System32\getuname.dll
. Apakah ini juga dianggap sebagai "perpustakaan eksternal", bahkan jika itu dibangun untuk Windows?Jawaban:
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):
Dengan baris baca (152 byte):
Jawa memiliki semua yang dibutuhkan. Saya yakin ini bisa diturunkan.
sumber
x[0].chars().forEach(i->System.out.println(Character.getName(i)));
Ini menghemat 2 karakter dibandingkan dengan solusi argumen baris perintah (dengan menggantifor
-loop).x[0].chars().map(' '::getName).forEach(System.out::println);
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.sumber
for i in input():print(unicodedata.name(i))
lebih pendek?import unicodedata
, jadi itu lebih lama .JavaScript (ES6) 594
618 626Catatan 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.
sumber
R,
54 byte62Sunting: 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
Anda juga dapat membungkusnya menjadi fungsi untuk penggunaan yang lebih nyaman
Kemudian, penggunaannya adil
sumber
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)
sumber
Perl (+ coreutils) , 563 byte
Catatan : Di bawah ini tidak akan berfungsi apa adanya, itu perlu direproduksi dari
xxd
dump di bawah ini! Saya mencoba agar data mentah diteruskanzcat
, tetapi itu gagal. Saya mungkin hanya menggunakan modul Perl Gzip asli, tapi itu pasti besok!Untuk mereproduksi file, jalankan:
rekatkan hexdump dan tekan Enter, lalu Ctrl+ D.
Jalankan sebagai:
Versi Perl murni sebelumnya, 893 byte
sumber
awk -
794739Hanya bercanda; D
Bekerja dengan stdin / stdout.
Lebih "dapat dibaca":
sumber
C ++ 11, 739 byte
Berdasarkan solusi sweerpotato, tetapi banyak dimodifikasi.
sumber
C, 644
656Program 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
.toUpperCase
dan sejenisnya), tetapi lebih lemah dalam manipulasi string.Kurang golf
sumber
Gangguan Umum (SBCL),
5279Ini 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
sumber
Pyth, 41
Menggunakan builtin yang sama dengan jawaban python mbomb007 . Perhatikan bahwa ini tidak dapat dijalankan secara online karena
$
operator tidak aman.sumber
C ++ 14,
10431000998996972 byteSolusi aneh dalam C ++ 14:
Berkat kirbyfan64sos untuk bermain golf dua byte
sumber
*s
bukans[0]
?CJam, 517
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.
sumber
C ++ 14
716706704Versi langsung .
Dengan spasi putih:
String yang dikompres akan terkompresi
a
menjadi: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.sumber
Clojure, 56 byte
Terinspirasi oleh jawaban @ peter. Gunakan Clojure untuk interop Java.
sumber
Perl - 894 byte
Dengan penuh kasih dibuat dengan tangan. Pertama kali bermain golf di Perl, jadi ada kiat yang dihargai.
sumber
Faktor, 58 byte
Cukup mudah; melakukan hal yang sama persis dengan jawaban Java dan Perl 6.
sumber
PHP> = 7, 54 Bytes Tidak Bersaing
IntlChar :: charName
sumber