У каждого символа Юникода есть имя, например, «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
- Входные данные должны поступать из файла или из пользовательского ввода, а не просто из строки в коде.
- Вывод должен быть записан в файл или стандартный вывод или распечатан на экран.
- Интернет и внешние библиотеки не допускаются, все необходимые данные должны быть в коде.
- Предположим, что входные данные содержат только печатаемые символы ASCII в диапазоне базового латинского кода 32-126. Вы можете игнорировать завершающий перевод строки.
- Все языки программирования разрешены. Самый короткий код в байтах побеждает.
Официальные имена персонажей Unicode можно найти здесь . Другие источники:
- http://www.w3schools.com/charsets/ref_utf_basic_latin.asp
- http://www.ssec.wisc.edu/~tomw/java/unicode.html#x0000
Это мой первый вопрос, поэтому я буду признателен за любые предложения, если это можно улучшить.
Для целей данного вызова приведенный ниже список должен быть нормативным.
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
я и мой кот
источник
источник
C:\Windows\System32\getuname.dll
. Это также считается «внешней библиотекой», даже если она встроена в Windows?Ответы:
Java - 113 байт (152 при чтении из командной строки)
Редактировать: удалены ненужные фигурные скобки.
Edit2: удалена ненужная переменная.
Edit3: вместо Character.getName () я использую c.getName ().
Edit4: передача строки в качестве аргумента командной строки.
С аргументом командной строки (113 байт):
С строкой чтения (152 байта):
У Java есть все необходимое. Я уверен, что это может быть в гольфе.
источник
x[0].chars().forEach(i->System.out.println(Character.getName(i)));
это экономит 2 символа по сравнению с решением аргумента командной строки (заменяяfor
-loop).x[0].chars().map(' '::getName).forEach(System.out::println);
Python 3, 56 байт
Использует встроенную функцию
unicodedata.name()
, поэтому она может быть некомпетентной. Java-ответ сделал это аналогичным образом, поэтому я подумал, что это, по крайней мере, стоит опубликовать.источник
for i in input():print(unicodedata.name(i))
короче?import unicodedata
, так что это дольше .JavaScript (ES6) 594
618 626Заметьте, что я могу сэкономить ~ 30 байт, сжимая длинную строку с помощью atob / btoa, но символ utf8 над '~' не очень хорошо воспринимается пост-редактором Stack Exchange. Я предпочитаю вместо этого оставить бегущий фрагмент.
Редактировать 8 символов, сохраненных thx @Ypnypn
Очевидное сжатие повторяющихся слов. Новая строка внутри обратных кавычек значительна и считается.
Попробуйте запустить фрагмент в Firefox.
источник
R,
54 байта62Изменить: за комментарий @flodels, мне нужно сначала прочитать его по соединению, поэтому пришлось добавить
scan
. Это также, вероятно, некомпетентное решение по всем правилам.использование
Вы также можете заключить его в функцию для более удобного использования
Тогда использование просто
источник
Perl 6 , 21 байт
Я не видел правила специально против использования встроенного метода для получения имен Unicode.
(Также ответ Java, который является самым высоко проголосовавшим, делает то же самое)
источник
Perl (+ coreutils) , 563 байта
Примечание : ниже не будет работать как есть, его необходимо воспроизвести из
xxd
дампа ниже! Я пытался передать необработанные данные напрямуюzcat
, но это не удалось. Я мог бы просто использовать собственный модуль Perl Gzip, но это точно будет завтра!Чтобы воспроизвести файл, выполните:
вставьте hexdump и нажмите Enter, затем Ctrl+ D.
Беги как:
Предыдущая версия на чистом Perl, 893 байта
источник
awk -
794739Шучу; D
Работает с stdin / stdout.
Более "читаемый":
источник
C ++ 11, 739 байт
Основано на решении свирпотато, но сильно модифицировано.
источник
С 644
656Полная программа, чтение со стандартного ввода
Тест на идеоне
Это перенос моего JavaScript-ответа на C. Язык C хорош для манипулирования одиночными символами в виде чисел (без необходимости
.toUpperCase
и т. П.), Но он слабее в работе со строками.Меньше гольфа
источник
Common Lisp (SBCL),
5279Это встроенный и зависящий от реализации, поэтому вы можете игнорировать его при выборе принятого ответа. К сожалению, этого недостаточно, чтобы победить Python . Обновленная версия соответствует ожидаемому результату (я должен заменить подчеркивания пробелами).
пример
источник
Пиф, 41
Использует то же встроенное, что и в ответе Python от mbomb007 . Обратите внимание, что это не может быть выполнено онлайн, потому что
$
оператор небезопасен.источник
C ++ 14,
10431000998996972 байтаГротескное решение в C ++ 14:
Благодаря kirbyfan64sos для игры в гольф от двух байтов
источник
*s
вместоs[0]
?CJam, 517
Онлайн версия
Я пробовал разные решения, но простое хранение всех имен в огромном массиве кажется наиболее эффективным.
Кстати, это моя первая настоящая программа CJam.
источник
С ++ 14
716706704Живая версия .
С некоторыми пробелами:
Сжатая строка
a
распаковывается в:И во время декомпрессии
}
заменяется на\0
,|
с(пробел) и
{
с-
и строчные буквы преобразуются в верхний регистр.Строка представляет собой сжатый стиль LZ в виде литерала
[a-~]
или двухсимвольного кодированного смещения / длины для соответствия ранее в строке.источник
Clojure, 56 байт
Вдохновленный ответом @ peter. Использует Clojure для взаимодействия Java.
источник
Perl - 894 байта
С любовью созданный вручную. Первый раз игра в гольф в Perl, поэтому любые советы приветствуются.
источник
Фактор, 58 байт
Довольно просто; делает то же самое, что и ответы на Java и Perl 6.
источник
PHP> = 7, 54 байта некомпетентных
IntlChar :: CHARNAME
источник