Schreiben Sie ein Programm oder eine Funktion, die genau diesen Text ausgibt, wobei die Groß- und Kleinschreibung keine Rolle spielt:
A, B, C, D, E, F, G,
H, I, J, K, L, M, N, O, P,
Q, R, S,
T, U, V,
W, X, Y, Z.
(Basierend auf dem Alphabet-Song , den viele amerikanische Kinder lernen, das Alphabet auswendig zu lernen, obwohl es für mehr Komprimierbarkeit bearbeitet wurde.)
Die Ausgabe muss genau so aussehen wie oben (Groß- / Kleinschreibung wird nicht berücksichtigt ), darf jedoch nachgestellte Leerzeichen in jeder Zeile und / oder nachgestellten Zeilenumbrüchen enthalten. Beachten Sie den Punkt am Ende.
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
code-golf
string
kolmogorov-complexity
ETHproductions
quelle
quelle
/(?=[HQTW])/
H, I, J, K, LMNO, P
?Antworten:
Vim,
42, 40 Tastenanschläge / ByteVielen Dank an Lynn und ihre großartige Antwort für den Tipp, das Alphabet aus der Hilfe zu holen.
Danke an RomanGräf für das Speichern von zwei Bytes!
Erläuterung:
Dann verschieben wir das Ende der Zeile mit
$
, ändern ein Zeichen mit zurückch
und fügen einen Punkt ein.quelle
05AB1E , 16 Bytes
Code
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Bash + GNU-Dienstprogramme, 36
Ideone.
quelle
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'
?JavaScript (ES6),
6665 Bytes@Neil zu schlagen war unmöglich ... Deshalb habe ich es getan. :-)
1 Byte dank eines Tricks von @LevelRiverSt . Using
String.fromCharCode
ist 7 Bytes länger:Wie es funktioniert
Dies erzeugt rekursiv jedes Zeichen des Alphabets von
a
bisy
mit.toString()
. Nach jedem Buchstaben wird ein Komma sowie ein Zeilenumbruch, wenn9568512>>i-9&1
1, oder ein Leerzeichen angehängt . Wenn die Rekursion über 34 hinausgeht, dh bisz
, kehrt die Funktion einfach zurück"z."
.quelle
Python 2.7,
67 6663 BytesDennis hat ein Byte gespeichert.
quelle
exec
stattfor
sollte ein Byte speichern.Jelly ,
1918 BytesVielen Dank an @Adnan für das Golfen ab 1 Byte!
Probieren Sie es online!
Wie es funktioniert
quelle
JavaScript (ES6),
80 bis74 ByteMöglicherweise kann dies mit atob / btoa verkürzt werden, wenn Sie die Verwendung der ISO-8859-1-Codierung kennen. Bearbeiten: 6 Bytes dank @RickHitchcock gespeichert.
quelle
.join`, `
? Setzen Sie Backslashes vor die Backticks. (Ja, Kommentar Abschrift ist anders, seufz ...)Pyke,
231917 BytesProbieren Sie es hier aus!
quelle
R
8371 BytesProbieren Sie es online!
Erstellt eine Matrix aus 3 Zeilen (eine mit den Buchstaben, eine mit den Kommas und die andere mit einem Leerzeichen oder einer Newline).
Edit : Danke Billywob!
quelle
cat(a,sep="")
spart ein paar Bytes:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
[-26]
onLETTERS
wird ein weiteres Byte gespeichert.CJam, 26 Bytes
Online-Dolmetscher
quelle
Brainfuck, 117 Bytes
Die ersten vier Zeilen haben jeweils ein Leerzeichen am Ende, und das Programm geht von 8-Bit-Zellen aus. Probieren Sie es online!
(Die Behandlung der letzten Zeile ist schwierig ...)
quelle
Perl, 37 Bytes
Dank an @Dom Hastings für diese Lösung (3 Bytes kürzer als meine, siehe unten).
Mit
-E
(oder-M5.010
) Flag ausführen:Meine vorherige Version, 3 Bytes länger (insgesamt 40 Bytes):
quelle
say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
JavaScript (ES6),
6664 BytesRegex stimmt mit den Zeichen überein, aber nicht mit den Zeilenumbrüchen. Mit Regex Replace kann ich jedem Zeichen das "," hinzufügen.
Bearbeiten: 2 Zeichen dank ETHProductions entfernt
quelle
$1
zu$&
.Cheddar, 70 Bytes
Sieht so aus, als würde es nicht kürzer werden. Ich habe andere Versionen davon gemacht, die ziemlich interessante Methoden verwenden, aber dies ist die kürzeste
Probieren Sie es online!
Erläuterung
Der
@"
Operator wird verwendet, um Zeichenfolgenbereiche zu generieren. Es wird eine Zeichenfolge generiert, die vom linken Zeichencode bis zum rechten Zeichencode beginnt.Zum Beispiel
65
ist der Zeichencode fürA
und90
fürZ
. Wenn Sie65 @" 90
dies tun , werden A bis Z oder das Alphabet generiert.quelle
C,
11210281 BytesVielen Dank an cleblanc & LevelRiverSt!
quelle
i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}
. Beachten Sie, dass Sie absolut alles zwischen die?:
Zeichen eines ternären Operators setzen können, auch mehrere durch Kommas getrennte Ausdrücke (es wird bis zum letzten ausgewertet.)Brainfuck, 157 Bytes
Probieren Sie es online aus
quelle
Ruby,
5654 BytesDie erste Zeile endet mit einem wörtlichen Zeilenumbruch.
Bearbeiten: speicherte zwei Bytes durch Ersetzen
'A'..'Y'
durch?A..?Y
.quelle
Vim, 32 Bytes
26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"
Lässt am Ende eine leere Zeile, was erlaubt war, aber es ist seltsam, so ungeschickt zu sein. Schlimmer noch, ich ende im Einfügemodus. Ich habe einige andere Leute gesehen, die es hier gemacht haben, also denke ich, ist es erlaubt? Es fühlt sich schmutzig an.
26o<C-V><C-V>64,<Esc>
: Beim ersten<C-V>
wird der zweite buchstäblich eingefügt. Die<C-V>64
im Puffer verbleibenden Zeichen werden in ASCII-Codepunkte und dann in Buchstaben umgewandelt. Kommas schon in.r.
: Nie wieder am Ende sein, also mach das.
jetzt.V{g<C-A>
: Verwendet visuelles Inkrement, um alle64
s in die ASCII-Codepunkte der Großbuchstaben umzuwandeln.8Jj9Jj3Jj.j4J
: Die beliebige Leitung wird verbunden. Erstens ist8J
statt ,7J
weil wir mit der Leerzeile zu tun hat . Die wiederholten3J
s sind für eine Punktwiederholung geeignet.cH<C-R>"
: Die Leute denken normalerweise ani<C-R>
Einfügemodus Einfügen, aber es ist eher wie ein Einfügemodus Makro. Sachen wie<C-V>65
laufen wie geschrieben und werden als Dezimalpunkt interpretiert. Dies lässt eine zusätzliche (erlaubte) Zeile am Ende und bleibt im Einfügemodus.quelle
PowerShell v3 +,
607867 BytesOKAY. Dieses Mal habe ich die Spezifikation tatsächlich gelesen, verstanden und befolgt. Versprechen. : D
Übernimmt das Array
65..90
und durchläuft jedes Element|%{...}
. Bei jeder Iteration wird eine neue Zeichenfolge mithilfe von Verkettung, Indizierung und Multiplikation erstellt.Zuerst nehmen wir die aktuelle Nummer und
char
wandeln sie in einen ASCII-Buchstaben um. Das ist mit einem anderen Zeichen verknüpft, basierend auf der Indizierung in der Zeichenfolge,'.,'
ob es sich um ein Komma handelt90
oder nichtZ.
. Das ist eine Zeichenfolge, die verkettet wird" "
, um die Buchstaben durch Leerzeichen zu trennen, und eine Zeichenfolgenmultiplikation"`n"
basierend auf dem Booleschen Wert, um festzustellen, ob das aktuelle Element-in
das angegebene Array ist (dh ob ein Zeilenumbruchzeichen verkettet werden muss). Die resultierende Zeichenfolge verbleibt in der Pipeline.Diese Zeichenfolgen werden in Parens eingekapselt und
-join
zu einer neuen Zeichenfolge zusammengefasst, die dann ebenfalls in der Pipeline verbleibt undWrite-Output
am Ende implizit das Ergebnis ausgibt. Da`n
die Zeichenfolge vorhanden ist, wird sie beim Drucken automatisch in Zeilenumbrüche konvertiert.Benötigt v3 + für den
-in
Operator. Verfügt über ein Leerzeichen in jeder Zeile, was gemäß den Herausforderungsspezifikationen in Ordnung ist.Beispiel
quelle
PHP, 62 Bytes
nur zum Vergleich 87 Bytes
quelle
\n
."# (?=[HQTW])#"
und das Ersetzen auf"\n"
gleiche Bytes verkürzen und es übersichtlicher machen. Die Verwendung einer veralteten Funktion kann Anfänger verwirren. Und die physische Unterbrechung kann auf anderen Systemen als Unix falsch interpretiert werden. Sie können es als Ihren eigenen Vorschlag posten.MATL,
3829 Bytes9 Bytes gespart dank @Luis!
Probieren Sie es online!
Erläuterung
quelle
R 146 Bytes
Erläuterung:
LETTERS
ist für Großbuchstaben vordefiniert.Die
f
Funktion dient zum Verketten des Vektors x on,
mit additionaly
(wird für Zeilenumbrüche verwendet).Die Katze wird verwendet, wenn sie
\n
als Zeilenumbruch gedruckt wird.f
wird für die Buchstaben aufgerufen, um Zeilen zu bilden, und dann für die Zeilen erneut, um die gesamte Ausgabe zu bilden.Wahrscheinlich golfen - ich mag die mehrfachen Anrufe von f nicht ...
quelle
CJam, 31 Bytes
Erläuterung:
Probieren Sie es online aus
quelle
Julia, 71 Bytes
Benötigt 0,5 oder besser für den Rundfunk
.()
quelle
print
/ -Funktionsdefinition? Wenn Sie jedoch nichtjoin
in einer Variablen speichern, wird ein Byte gespeichert.join
. Ich habe falsch gezählt. Das Ausführen des Programms gibt die Zeichenfolge zurück. Ist ein Programm, das einen String zurückgibt, keine gültige Ausgabe? (Oder sind es nur Funktionen, die Dinge zurückgeben dürfen, die als Ausgabe gelten. Wenn diesf()=
kürzer ist alsprint()
)f()=
oder()->
ist in Ordnung - ich denke, die Idee ist, dass Funktionen zuweisbar sind und mehrmals ausgeführt werden können, und im Gegensatz dazu wäre dies ein Code-Snippet.Cheddar, 57 Bytes
Probieren Sie es online! Ist das nicht schön Es ist ein schönes Rechteck.
Zwei Regex-Substitutionen.
(65@"90)
ist das Alphabet in Großbuchstaben,.sub(/[GPSV]/g,"$0\n")
ersetztGPSV
durch sich selbst und"\n"
,.sub(/[^Z\n]/g,"$0, ")
ersetzt alle Nicht-Zeilenumbrüche undZ
-Zeichen durch sich selbst", "
und"."
fügt ein Finale hinzu.
.quelle
Japt, 24 Bytes
Online testen!
Wie es funktioniert
quelle
Java,
116109105104Ungolfed:
quelle
||
bis|
(-3); Ändernc==90
aufc>89
(-1); Ändern'.'
auf46
(-1); und'\n'
zu10
(-2) wechseln ."GPSV".contains(""+c)
stattc==71|c==80|c==83|c==86
.q, 46 Bytes
quelle
Retina, 43 Bytes
Führender Zeilenumbruch ist von Bedeutung. Probieren Sie es online!
Ich benutze Retina zum ersten Mal, daher sind alle Golftipps willkommen ...
quelle
Pyth, 25 Bytes
Ein Programm, das das Ergebnis an STDOUT ausgibt.
Probieren Sie es online aus
Wie es funktioniert
quelle