Die Herausforderung
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die Folgendes ohne Eingabe ausgibt:
a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache.
code-golf
string
kolmogorov-complexity
alphabet
SpookyGengar
quelle
quelle
Antworten:
05AB1E , 2 Bytes
Probieren Sie es online!
Beachten Sie, dass dies als Liste von Zeilen ausgegeben wird, da das OP dies ausdrücklich zulässt. Der Link verwendet eine Version mit hübschem Aufdruck (verbunden mit Zeilenumbrüchen).
Wie es funktioniert
A
ergibt das Kleinbuchstaben.ƶ
hebt das Alphabet an (multipliziert jedes Element mit seinem Index).»
verbindet durch Zeilenumbrüche.quelle
Python 2 , 36 Bytes
Probieren Sie es online!
quelle
APL (Dyalog) ,
1285 Bytes SBCS3 Bytes gespart dank @ngn
4 Bytes gespart dank @ Adám
OP- geklärte Großbuchstaben sind gültig und werden als Array von Zeichenfolgen ausgegeben.
Probieren Sie es online!
Wie?
⌸
gibt uns jeden Buchstaben im⎕A
lphabet mit seinem Indizes darin, in die Funktion übergab⍴⍨
mit dem Buchstaben als linkes Argument und dem Indexesals rechtes Argument.⍴⍨
Das rechte Argument wird auf die Länge des linken umgerechnet .⍨
wechselt zwischen links und rechts (daher das Symbol dafür, das aussieht wie das Gesicht eines Lesers dieser Erklärung).quelle
819⌶↑⎕A⍴¨⍨⍳26
↑
.Haskell , 27 Bytes
Probieren Sie es online! Gibt eine Liste von Zeilen zurück. (Danke an @totallyhuman für den Hinweis, dass dies jetzt erlaubt ist)
Erläuterung:
quelle
<$
wiederholt ihr erstes Argument n - mal, wobei n die Länge seines zweiten Arguments ist?Brainfuck , 74 Bytes
Probieren Sie es online!
Erläuterung
Probieren Sie es online!
quelle
Befunge-98 (FBBI) , 27 Bytes
wo
ist ein Substitutionszeichen (ASCII 26)
Probieren Sie es online!
Verwendet Großbuchstaben und hat einen nachgestellten Zeilenumbruch.
Erläuterung
Der Code speichert einen Zähler (anfangs 0) und in jeder Schleife:
1+
- Erhöht es um 1:0\::
- Pusht Dinge so, dass der Stack so aussieht:bottom [N, 0, N, N, N] top
'`j'@
- Prüft, ob der Zähler größer als 26 istj'@
- Wenn es so ist, springen wir über das'
und verlassen es mit@
j'@
- Wenn nicht, führen wir den aus'
, der den ASCII-Wert von@
zum Stapel schiebtNun sieht der Stack so aus:
bottom [N, 0, N, N, 64] top
+\
- Fügt hinzu und schaltet dann die Top 2 um: Beimbottom [N, 0, (N+64), N] top
ersten Durchgang ist dies ASCII 65 oderA
k:
- Dupliziert die Sekunde von den höchsten(N+1)
Zeiten - jetzt gibt es(N+2)
Werte von(N+64)
auf dem Stapel (plus dieN
und0
von früher)$$
- Werfen Sie die oberen 2 Werte weg - jetzt gibt es nurN
Werte von(N+64)
>:#,_
- Druckt jeden Spitzenwert aus, bis es zu einem kommt.0
Dies bedeutet, dassN
Kopien von(N+64)
gedruckt werden$
- Wirft die weg0
- Jetzt ist der Stapel geradeN
a,
- Druckt eine EingabeUnd es wiederholt sich
Mir gefällt, wie ich
@
beide zum Beenden des Programms und zum Hinzufügen zum Zähler verwendet habe.quelle
Ruby ,
32-30Bytes-2 Bytes dank @EricDuminil.
Probieren Sie es online!
quelle
27.times{|n|puts (n+96).chr*n}
wäre mit 30 Bytes richtigJavaScript (ES6), 54 Byte
quelle
Excel VBA, 38 Bytes
Sofortfenster verwenden. :)
quelle
"
BASH,
59 5440 BytesProbieren Sie es online!
Danke. 5 Bytes zu @Justin Mariner
quelle
for
Loop kann mit diesem Tipp für 54 Bytes abgespielt werden : Probieren Sie es online aus!Ruby, 38 Bytes
Gibt ein Array von Strings zurück
-5 bytes dank totalhuman
* -11 Bytes dank des hervorragenden Golfspiels von Jordan.
quelle
"\n"
;puts
erledigt das für Sie (obwohl die Referenz für die Zukunft$/
2 Bytes kürzer ist) - aber Sie können esputs
ganz loswerden, wenn Sie dies zu einem Lambda machen, das nur ein Array von Zeilen zurückgibt. Sie können aucha=[*?a..?z];puts a.map
zuputs (a=*?a..?z).map
undx*(a.index(x)+1)
zu wechselnx*-~a.index(x)
. Insgesamt sind das 38 Bytes .(a=*?a..?z)
im Block befindet und nicht der Argumentteil des Lambda.V , 9 Bytes
Probieren Sie es online!
Hexdump:
quelle
MATL , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
&
nicht zum Duplizieren und Transponieren verwendet werden kann2Y2
?&
dupliziert und transponiert nicht wirklich, obwohl es manchmal das gleiche Ergebnis liefert. Was es tut, ist die Anzahl der Ein- / Ausgänge der nächsten Funktion zu ändern. Wenn Sie zum Beispiel verwenden&+
, nimmt die+
Funktion jetzt eine anstelle von zwei Eingaben und gibt die Summe der Eingaben mit sich selbst transponiert aus. Aber das ist nur , weil das ist , wie die+
Arbeit mit 1 Eingang (gleiche gilt für=
,>
und einige andere)Python 3 , 37 Bytes
Gibt eine führende neue Zeile aus (was erlaubt ist).
Probieren Sie es online!
quelle
Gelee ,
54 Byteshinterhältiger Missbrauch der Python-Implementierung
-1 Byte dank Adám (das Ausgeben einer Liste von Zeilen war erlaubt; so wie das Schreiben einer Funktion anstelle eines Programms)
Ein Niladic-Link, der eine Liste von Zeichenfolgen und Zeilen zurückgibt
(um sie mit den neuen Zeilen als vollständiges Programm auszudrucken, fügen Sie
Y
sie einfach wieder hinzu ).Probieren Sie es online! (Die Fußzeile ruft den Link als nilad (
¢
) auf undruftŒṘ
aus Gründen der Übersichtlichkeitdie Python-Darstellung des Ergebnisses () ab, da das Standardverhalten des vollständigen Programms das Ergebnis wie folgt zusammenfassen würde.abbccc...
)Wie?
quelle
Øa×J
sollte reichen .MATL , 11 Bytes
Probieren Sie es online!
Verwendet Broadcast-Multiplikation mit Einsen, um eine große quadratische 26x26-Matrix der gewünschten Buchstaben zu erhalten. Als nächstes wird der untere dreieckige Teil genommen und implizit gedruckt.
Auch 11 Bytes:
quelle
Javascript,
87 Bytes, 72 Bytes (Vielen Dank an @steenbergh)Meine erste Antwort auch:
quelle
ind=1
am Anfang, das Semikolon danachi<123
und das letzte Semikolon entfernen . Bitte verdeutlichen Sie Ihren Header auch durch die Angabe der Sprache - bytecount, der ein # vorangestellt ist.j
insgesamtfor(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
Japt ,
97 BytesGibt ein Array von Zeilen aus
Versuch es
Erläuterung
Teilen Sie (
¬
) das Kleinbuchstaben (;C
) in ein Array von Zeichen, ordnen Sie es dem Array (Ë
) zu und wiederholen Sie (p
) das aktuelle Element um den aktuellen Index (E
), indem Sie ihn inkrementieren (°
).quelle
®p°Y
Pip , 9 Bytes
Probieren Sie es online!
Im Pseudocode ist dies
wo
z
ist mit dem Kleinbuchstaben vorgegeben undi
ist voreingestellt auf 0.Kartenbasierte Lösungen benötigen ein zusätzliches Byte, da das
-n
Flag in mehreren Zeilen angezeigt werden muss:quelle
Acc !! 66 Bytes
Probieren Sie es online!
Mit Kommentaren
quelle
Haskell , 31 Bytes
-12 bytes dank nimi.
Probieren Sie es online!
Dies ist kein Snippet, sondern eine Null-Funktion (keine Argumente), die eine Liste von Zeilen ausgibt, die aufgrund dieses Metakonsenses zulässig ist .
quelle
R , 38 Bytes
Eine relativ uninteressante Antwort. Iterieren Sie
i
zwischen 1 und 26, und drucken Sie den dritteni
Buchstaben des Alphabetsi
(mit einem impliziten Zeilenumbruch).Probieren Sie es online!
Ein interessanterer Ansatz könnte sein, etwa Folgendes zu verwenden:
Dies gibt uns alle Buchstaben in der richtigen Menge, aber keine Zeilenumbrüche. Vielleicht kann jemand, der schlauer als ich ist, einen Weg finden, das zu nutzen, um eine golferischere Antwort zu finden.
quelle
rep(letters, 1:26)
das viel kürzer ist ...Perl 5 , 19 Bytes
Probieren Sie es online!
quelle
Rust , 82 Bytes
Ich hatte gehofft, dass es viel kürzer gewesen wäre, aber das explizite Konvertieren / Casting zwischen Typen benötigt eine Menge Bytes :(
Probieren Sie es online!
quelle
PHP,
4746 Bytesoder
Laufen Sie mit
-nr
oder versuchen Sie es online .quelle
J ,
18 -17 BytesErläuterung:
Probieren Sie es online!
quelle
Perl 6 ,
2423 BytesVersuch es
Versuch es
quelle
Oktave ,
2524 BytesProbieren Sie es online!
Dank Giuseppe, der mir mitteilte, dass OP Großbuchstaben zulässt, wurde ein Byte gespeichert.
Erläuterung:
Erstellen Sie einen Vektor
x
mit den ASCII-Werten des Großbuchstaben und transponieren Sie ihn. Addiere die negiertenx
(also 26 Nullen, in einem Zeilenvektor, um ein Gitter mit (den ASCII-Werten von) zu erzeugen:Nehmen Sie die untere Dreiecksmatrix und konvertieren Sie sie in Zeichen, indem Sie sie mit der leeren Zeichenfolge verketten.
quelle
C (gcc) ,
48 Bytes,50 BytesNachlauffähige Version, gemäß Cleblanc und Steadybox in den Kommentaren unten.
Probieren Sie es online!
quelle
s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}
Noch schlägt meine Antwort um ein paar Bytes :)s[9];main(i){for(;puts(memset(s,i+95,i++))-27;);}
Japt,
171611 Bytes-5 Bytes danke an Oliver
In ISO-8859-1
Nicht das beste Ergebnis, aber ich bin immer noch ein Neuling. Anregungen sind sehr willkommen.
Gibt die Liste der Zeilen aus, sofern dies OP erlaubt. Der Link enthält 3 Bytes mehr für Zeilenumbrüche.
Probieren Sie es online!
quelle
1oBÊÄ
kann durch ersetzt werden26õ
. Sie können tun , so etwas wie ein paar mehr Bytes speichern;26ÆCgX pXÄ
o
dasf
Argument ...