Jedes Unicode-Zeichen hat einen Namen wie "LATIN CAPITAL LETTER A". Ein Unicode-Zeichenname darf nur Großbuchstaben, Leerzeichen und das Minuszeichen enthalten.
Schreiben Sie ein Programm, das einen Text liest und die Namen der einzelnen Zeichen in einer neuen Zeile ausgibt. Wenn die Eingabe beispielsweise "Hallo, Welt!" Wäre, wäre die Ausgabe "Hallo, Welt!"
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
- Die Eingabe sollte aus einer Datei oder Benutzereingabe stammen, nicht nur aus einer Zeichenfolge im Code.
- Die Ausgabe sollte in eine Datei oder ein Standardformat geschrieben oder auf dem Bildschirm ausgedruckt werden.
- Internet und externe Bibliotheken sind nicht erlaubt, alle notwendigen Daten sollten im Code sein.
- Angenommen, die Eingabe enthält nur druckbare ASCII-Zeichen im lateinischen Basiscode-Bereich 32-126. Sie können eine nachgestellte Zeile ignorieren.
- Alle Programmiersprachen erlaubt. Kürzester Code in Bytes gewinnt.
Die offiziellen Unicode-Zeichennamen finden Sie hier . Andere Quellen:
- http://www.w3schools.com/charsets/ref_utf_basic_latin.asp
- http://www.ssec.wisc.edu/~tomw/java/unicode.html#x0000
Dies ist meine erste Frage. Ich würde mich über jeden Vorschlag freuen, wenn dies verbessert werden kann.
Für die Zwecke dieser Herausforderung ist die nachstehende Liste normativ.
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
Ich und meine Katze
quelle
quelle
C:\Windows\System32\getuname.dll
. Gilt dies auch als "externe Bibliothek", selbst wenn sie in Windows integriert ist?Antworten:
Java - 113 Bytes (152, wenn von der Befehlszeile gelesen)
Bearbeiten: unnötige geschweifte Klammern entfernt.
Edit2: unnötige Variable entfernt.
Edit3: Anstelle von Character.getName () verwende ich c.getName ().
Edit4: String als Kommandozeilenargument übergeben.
Mit Befehlszeilenargument (113 Bytes):
Mit Lesezeile (152 Bytes):
Java hat alles, was benötigt wird. Ich bin mir sicher, dass man hier Golf spielen könnte.
quelle
x[0].chars().forEach(i->System.out.println(Character.getName(i)));
Dies spart 2 Zeichen im Vergleich zur Befehlszeilenargumentlösung (durch Ersetzen derfor
-loop).x[0].chars().map(' '::getName).forEach(System.out::println);
Python 3, 56 Bytes
Verwendet eine eingebaute Funktion
unicodedata.name()
, daher ist diese möglicherweise nicht kompetent. Die Java-Antwort hat es ähnlich gemacht, also dachte ich, dass es sich zumindest lohnt, etwas zu posten.quelle
for i in input():print(unicodedata.name(i))
das wohl kürzer?import unicodedata
, das ist also länger .JavaScript (ES6) 594
618 626Hinweis Ich könnte ~ 30 Bytes einsparen, indem ich die lange Zeichenfolge mit atob / btoa komprimiere, aber das utf8-Zeichen über '~' wird vom Post-Editor von Stack Exchange nicht gut akzeptiert. Ich bevorzuge es, stattdessen ein laufendes Snippet zu behalten.
Bearbeite 8 gespeicherte Zeichen dank @Ypnypn
Offensichtliche Komprimierung wiederholter Wörter. Der Zeilenvorschub innerhalb der Backticks ist signifikant und wird gezählt.
Testen Sie das Snippet in Firefox.
quelle
R,
54 Bytes62Edit: per @flodels Kommentar muss ich ihn erst von der Verbindung lesen, musste also hinzufügen
scan
. Dies ist wahrscheinlich auch eine nicht kompetente Lösung nach allen Regeln.Verwendungszweck
Sie können es auch in eine Funktion für eine bequemere Verwendung einwickeln
Dann ist die Verwendung gerecht
quelle
Perl 6 , 21 Bytes
Ich habe keine Regel speziell gegen die Verwendung einer eingebauten Methode zum Abrufen der Unicode-Namen gesehen.
(Auch die Java-Antwort, die derzeit die am höchsten bewertete ist, macht das Gleiche.)
quelle
Perl (+ Coreutils) , 563 Bytes
Hinweis : Das untenstehende funktioniert nicht wie es ist, es muss vom
xxd
unten stehenden Speicherauszug reproduziert werden! Ich habe versucht, die Rohdaten direkt an weiterzuleitenzcat
, aber das ist fehlgeschlagen. Ich verwende vielleicht nur ein natives Perl Gzip-Modul, aber das wird sicher morgen sein!Führen Sie zum Reproduzieren der Datei Folgendes aus:
Fügen Sie den Hexdump ein und drücken Sie Enter, dann Ctrl+ D.
Rennen wie:
Vorherige reine Perl-Version, 893 Bytes
quelle
awk -
794739Nur ein Scherz; D
Funktioniert mit stdin / stdout.
Mehr "lesbar":
quelle
C ++ 11, 739 Bytes
Basierend auf Sweerpotato-Lösung, jedoch stark modifiziert.
quelle
C 644
656Volles Programm, Lesen von der Standardeingabe
Test auf Ideone
Dies ist eine Portierung meiner JavaScript-Antwort auf C. Die C-Sprache kann einzelne Zeichen gut als Zahlen manipulieren (keine Notwendigkeit für
.toUpperCase
und dergleichen), aber sie ist schwächer in der String-Manipulation.Weniger golfen
quelle
Common Lisp (SBCL),
5279Dies ist integriert und von der Implementierung abhängig. Sie können es daher ignorieren, wenn Sie die akzeptierte Antwort auswählen. Dies ist leider nicht genug, um Python zu schlagen . Die aktualisierte Version entspricht der erwarteten Ausgabe (ich muss Unterstriche durch Leerzeichen ersetzen).
Beispiel
quelle
Pyth, 41
Verwendet dieselbe integrierte Funktion wie die Python-Antwort von mbomb007 . Beachten Sie, dass dies nicht online ausgeführt werden kann, da der
$
Bediener unsicher ist.quelle
C ++ 14,
10431000998996972 BytesGroteske Lösung in C ++ 14:
Danke an kirbyfan64sos für das Golfen aus zwei Bytes
quelle
*s
anstelle von tuns[0]
?CJam, 517
Online Version
Ich habe verschiedene Lösungen ausprobiert, aber das Speichern aller Namen in einem riesigen Array scheint am effizientesten zu sein.
Dies ist übrigens mein erstes richtiges CJam-Programm.
quelle
C ++ 14
716706704Live-Version .
Mit etwas Leerzeichen:
Die komprimierte Zeichenfolge wird
a
dekomprimiert, um:Und während der Dekompression
}
wird ersetzt durch\0
,|
mit(Leerzeichen) und
{
mit-
und Kleinbuchstaben in Großbuchstaben umgewandelt.Die Zeichenfolge wird im LZ-Stil entweder als Literal
[a-~]
oder als Offset / Länge mit zwei Zeichen zu einer früheren Übereinstimmung in der Zeichenfolge komprimiert .quelle
Clojure, 56 Bytes
Inspiriert von @ peters Antwort. Verwendet Clojure für die Java-Interop.
quelle
Perl - 894 Bytes
Liebevoll von Hand gefertigt. Zum ersten Mal Golfen in Perl, daher sind alle Tipps willkommen.
quelle
Faktor 58 Bytes
Ziemlich einfach; macht genau das Gleiche wie die Java- und Perl 6-Antworten.
quelle
PHP> = 7, 54 Bytes Nicht kompetent
IntlChar :: charName
quelle