Cada personaje de Unicode tiene un nombre, como "LETRA DE CAPITAL LATINO A". Un nombre de carácter Unicode puede contener solo letras mayúsculas, espacios en blanco y el signo menos.
Escriba un programa que lea un texto y muestre los nombres de cada carácter en una nueva línea. Por ejemplo, si la entrada fuera "¡Hola, mundo!", La salida sería
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
- La entrada debe provenir de un archivo o de la entrada del usuario, no solo de una cadena de código.
- La salida debe escribirse en un archivo o stdout o imprimirse en la pantalla.
- Internet y las bibliotecas externas no están permitidas, todos los datos necesarios deben estar en el código.
- Suponga que la entrada solo contiene caracteres ASCII imprimibles en el rango de código latino básico 32-126. Puede ignorar una nueva línea final.
- Todos los lenguajes de programación permitidos. El código más corto en bytes gana.
Los nombres oficiales de los personajes Unicode se pueden encontrar aquí . Otras fuentes:
- http://www.w3schools.com/charsets/ref_utf_basic_latin.asp
- http://www.ssec.wisc.edu/~tomw/java/unicode.html#x0000
Esta es mi primera pregunta, así que agradecería cualquier sugerencia si se puede mejorar.
Para el propósito de este desafío, la siguiente lista será normativa.
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
mi gato y yo
fuente
fuente
C:\Windows\System32\getuname.dll
. ¿Esto también cuenta como una "biblioteca externa", incluso si está integrada en Windows?Respuestas:
Java: 113 bytes (152 si se lee desde la línea de comandos)
Editar: se eliminaron las llaves inútiles.
Edit2: se eliminó la variable innecesaria.
Edit3: en lugar de Character.getName () uso c.getName ().
Edit4: paso de cadena como argumento de línea de comando.
Con argumento de línea de comando (113 bytes):
Con línea de lectura (152 bytes):
Java tiene todo lo necesario. Estoy seguro de que esto podría ser menospreciado.
fuente
x[0].chars().forEach(i->System.out.println(Character.getName(i)));
Esto ahorra 2 caracteres en comparación con la solución de argumento de línea de comandos (reemplazando elfor
bucle).x[0].chars().map(' '::getName).forEach(System.out::println);
Python 3, 56 bytes
Utiliza una función incorporada
unicodedata.name()
, por lo que puede no ser competente. La respuesta de Java lo hizo de manera similar, así que pensé que al menos valía la pena publicarla.fuente
for i in input():print(unicodedata.name(i))
es más corto?import unicodedata
, así que eso es más largo .JavaScript (ES6) 594
618 626Tenga en cuenta que podría ahorrar ~ 30 bytes comprimiendo la cadena larga con atob / btoa, pero el editor de publicaciones de Stack Exchange no acepta bien el carácter utf8 arriba de '~'. Prefiero mantener un fragmento en ejecución en su lugar.
Editar 8 caracteres guardados gracias a @Ypnypn
Compresión obvia de palabras repetidas. La nueva línea dentro de los backticks es significativa y contada.
Prueba a ejecutar el fragmento en Firefox.
fuente
R,
54 bytes62Editar: por comentario de @flodels, primero necesito leerlo desde la conexión, así que tuve que agregarlo
scan
. Esta también es probablemente una solución no competente de acuerdo con todas las reglas.Uso
También puede envolverlo en una función para un uso más conveniente
Entonces, el uso es solo
fuente
Perl 6 , 21 bytes
No vi una regla específica contra el uso de un método incorporado para obtener los nombres Unicode.
(También la respuesta de Java, que es la más votada actualmente, hace lo mismo)
fuente
Perl (+ coreutils) , 563 bytes
Nota : ¡Lo siguiente no funcionará como está, necesita ser reproducido del
xxd
siguiente volcado! Traté de pasar los datos en bruto directamentezcat
, pero eso falló. Podría usar un módulo nativo Perl Gzip, ¡pero eso será mañana seguro!Para reproducir el archivo, ejecute:
pegue el hexdump y presione Enter, luego Ctrl+ D.
Correr como:
Versión anterior pura de Perl, 893 bytes
fuente
awk -
794739Es broma; D
Funciona con stdin / stdout.
Más "legible":
fuente
C ++ 11, 739 bytes
Basado en la solución de sweerpotato, pero muy modificado.
fuente
C, 644
656Programa completo, lectura de entrada estándar
Prueba de ideona
Esta es una transferencia de mi respuesta de JavaScript a C. El lenguaje C es bueno para manipular caracteres individuales como números (sin necesidad de
.toUpperCase
y similares), pero es más débil en la manipulación de cadenas.Menos golf
fuente
Lisp común (SBCL),
5279Esto está integrado y depende de la implementación, por lo que es posible que desee ignorarlo al elegir la respuesta aceptada. Esto no es suficiente para vencer a Python , desafortunadamente. La versión actualizada se ajusta a la salida esperada (tengo que reemplazar los guiones bajos por espacios).
Ejemplo
fuente
Pyth, 41
Utiliza la misma función que la respuesta de Python de mbomb007 . Tenga en cuenta que esto no se puede ejecutar en línea porque el
$
operador no es seguro.fuente
C ++ 14,
10431000998996972 bytesSolución grotesca en C ++ 14:
Gracias a kirbyfan64sos por jugar dos bytes
fuente
*s
lugar des[0]
?CJam, 517
Versión en línea
He intentado diferentes soluciones, pero simplemente almacenar todos los nombres en una gran matriz parece más eficiente.
Por cierto, este es mi primer programa real de CJam.
fuente
C ++ 14
716706704Versión en vivo .
Con algo de espacio en blanco:
La cadena comprimida se
a
descomprime a:Y durante la descompresión
}
se reemplaza con\0
,|
con(espacio) y
{
con-
y las letras minúsculas se convierten en mayúsculas.La cadena está comprimida en estilo LZ como un
[a-~]
desplazamiento / longitud literal o de dos caracteres codificados para una coincidencia anterior en la cadena.fuente
Clojure, 56 bytes
Inspirado por la respuesta de @peter. Utiliza Clojure para la interoperabilidad de Java.
fuente
Perl - 894 bytes
Cariñosamente hecho a mano. Golf por primera vez en Perl, por lo que cualquier consejo es apreciado.
fuente
Factor, 58 bytes
Bastante simple; hace exactamente lo mismo que las respuestas de Java y Perl 6.
fuente
PHP> = 7, 54 bytes sin competencia
IntlChar :: charName
fuente