Inspiriert von diesem Beitrag . Für diejenigen, die diese Frage als Duplikat markieren, möchte ich Sie dringend bitten, die Frage tatsächlich zu lesen, um festzustellen, dass meine eine Modifikation der verknüpften ist. Der verknüpfte fragt nicht nach einer Eingabe und soll nur das Alphabet diagonal drucken.
Die Herausforderung
Bei einer Eingabe zwischen einschließlich 1-26 wird das Alphabet diagonal gedruckt, der vertikale Druck beginnt jedoch am Index der angegebenen Eingabe.
Beispiele
Angesichts der Eingabe:
16
Ihr Programm sollte folgendes ausgeben:
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
Eingang:
4
Ausgabe:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
v
w
x
y
z
Eingang:
1
Ausgabe:
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
Eingang:
26
Ausgabe:
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
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache.
Viel Glück!
Antworten:
Kohle , 9 Bytes
Probieren Sie es online!
Wie es funktioniert
Diese Lösung funktioniert in der aktuellen Version von Charcoal nicht mehr (höchstwahrscheinlich aufgrund einer Fehlerbehebung), aber das Problem wurde für 10 Bytes mit behoben
↘✂β⁰N↓✂βIθ
.quelle
Iθ
anstelle von verwendenη
.)…βN
anstelle von verwenden✂β⁰N
.05AB1E , 11 Bytes
Das erste Mal versucht 05AB1E, also bin ich offen für Tipps.
Probieren Sie es online!
Wenn eine durch Null indizierte Eingabe von
0
bis25
zulässig ist, können dies 10 Bytes sein, indem das weggelassen wird<
.quelle
JavaScript (ES2017),
73727166 BytesDank @JustinMariner einige Bytes gespart
quelle
10
nachz
am Ende wegen mit++x
vorx.toString()
. Bugfixed und auf 68 Bytes golfen mitpadStart
: TIOn=>g=(x=26)=>x?f(x-1)+(x+9).toString(36).padStart(x<n?x:n)+'\n':""
Python 2,
61 5857 Bytes-3 Bytes dank Rod
-1 Byte mehr dank Mr. Xcoder
quelle
input
würde jedes Mal aufgerufenfor
, wenn die Schleife iteriert, obwohl es nur eine Eingabezeile gibt.Ruby,
514643 BytesGibt eine Liste von Zeichenfolgen zurück.
Sieht so aus, als ob die Python-Typen mit ihren Indizes etwas zu tun hatten. -5 Bytes, indem Sie sich von Mr. Xcoders Verbesserung der ppperry-Lösung inspirieren lassen.
Bisherige Lösung mit
rjust
(51 Bytes):quelle
Python 2 ,
625057 BytesProbieren Sie es online!
Stiehlt schwer von dieser Antwort von Dennis.
quelle
R
9989 Bytes@MickeyT sparte 10 Bytes
Funktion
Demo
quelle
ifelse
Versuchmin
.print.noquote
kann durchcat
eine'\n'
in der Paste ersetzt werden. Das\n
kann ein gerader Wagenrücklauf sein. Geschweifte Klammern für den Funktionskörper können weggelassen werden.write
anstelle voncat
undpaste
write(c(rep(" ",min(x,i)),letters[i]),"",26,,"")
Retina ,
7268 BytesProbieren Sie es online! Die Ausgabe enthält nachgestellte Leerzeichen. Speichern Sie 1 Byte, indem Sie den Speicherplatz löschen, bevor die
$
Indizierung auf Null zulässig ist. Bearbeiten: 4 Bytes mit dem Alphabet-Generator von @ MartinEnder gespeichert. Erläuterung:Füge das Alphabet ein.
Diagonalisiere es.
Konvertieren Sie die Eingabe in unär als Leerzeichen.
Schneiden Sie überlange Linien so ab, dass keine Linie länger als die leere Linie am Ende ist.
quelle
Mathematica, 103 Bytes
quelle
Pyth ,
211715 BytesGeschehen auf einem Telefon mit 3% Akku.
Erläuterung:
Probieren Sie es online!
quelle
Jelly , 11 Bytes
Probieren Sie es online!
quelle
Common Lisp, 84 Bytes
Probieren Sie es online!
quelle
Python , 52 Bytes
Ziemlich überrascht, dass niemand bemerkte, dass der offensichtliche Ansatz auch so kurz war wie die anderen.
Probieren Sie es online!
Python , 53 Bytes
Probieren Sie es online!
quelle
Haskell,
5854 BytesProbieren Sie es online!
Wie es funktioniert
Edit: @Lynn hat 4 Bytes gespeichert. Vielen Dank!
quelle
['`'..]!!m
.Java (OpenJDK 8) , 69 Byte
Probieren Sie es online!
quelle
Gaia , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (Node.js) , 72 Byte
Gibt eine Liste von Zeichenfolgen zurück.
Probieren Sie es online!
quelle
.padStart
padEnd
anstelle vonrepeat
.Mathematica, 67 Bytes
Gibt eine
SparseArray
der Zeichenfolgen zurück. Zum VisualisierenGrid@
vorne anhängen .Probieren Sie es auf Wolfram Sandbox
Verwendung
quelle
Python 2 , 52 Bytes
Probieren Sie es online!
Ich gehe davon aus, dass eine Liste von Zeichenfolgen in Ordnung ist ...
Kürzeste, die ich mit Rekursion bekommen konnte:
quelle
SOGL V0.12 , 12 Bytes
Probieren Sie es hier aus!
quelle
Python 3 , 52 Bytes
Probieren Sie es online!
quelle
C (gcc) , 50 Bytes
Probieren Sie es online!
quelle
Proton , 40 Bytes
Vorausgesetzt, eine Liste von Strings ist in Ordnung.
Probieren Sie es online!
Proton , 49 Bytes
Stattdessen als ASCII-Kunst:
Probieren Sie es online!
quelle
C # (.NET Core) , 66 + 18 Bytes
Die Byteanzahl umfasst auch
Probieren Sie es online!
Dies gibt eine Sammlung von Zeichenfolgen zurück, eine für jede Zeile. Wenn dies nicht zulässig ist, nimmt die Antwort für
string.Concat()
und um 17 Byte zu\n
innerhalb der ZeichenfolgeErläuterung:
quelle
MATL, 14 Bytes
Probieren Sie es bei MATL Online aus
Erläuterung
quelle
Pyth , 12 Bytes
Probieren Sie es hier aus!
Wenn Listen von Strings zulässig sind, kann dies auf 11 Byte verkürzt werden :
Pyth , 12 Bytes
Probieren Sie es hier aus!
Pyth , 14 Bytes
Probieren Sie es hier aus.
Wenn Listen von Strings zulässig sind, kann dies auf 13 Byte verkürzt werden :
Wie funktionieren diese?
Im Gegensatz zu den meisten anderen Antworten wird bei allen drei Lösungen das Kleinbuchstaben-Alphabet durchlaufen.
Erklärung # 1
Erklärung # 2
Erklärung # 3
quelle
Haskell, 60 Bytes
Dies ist eine Funktion, die die Ausgabe als String zurückgibt.
Probieren Sie es online aus.
quelle
Japt ,
1613 Bytes3 Bytes gespart dank @Oliver
Online testen!
quelle
q / kdb +
3331 BytesLösung:
Beispiel:
Erläuterung:
Erstellen Sie eine Liste von Leerzeichen (26) bis zur Länge des Minimums der Eingabe und des Bereichs von
0..25
), fügen Sie jeden Buchstaben des Alphabets hinzu und drucken Sie auf stdout.Anmerkungen:
quelle
Java 1.8 (ohne Lambda), 98 Bytes
Die Logik ist einfach. Bietet keine Validierung der Eingabedaten, sehr schlecht!
quelle
for(;c++<26;s+=c<i?" ":"")System.out.println(s+(char)o++);
sparen, können Sie auch nur eine Funktion oder ein Lambda anstelle eines vollständigen Programms schreiben.a[0]
bezieht? Ich denke, Schnipsel sind nicht fair, wenn sie nicht kompiliert werden. Genauso interessant ist die Herausforderung mit einer konstruktionsreichen Sprache.void f(int i){...}
(kein Static nötig) oderi->{...}
anstelle deines ganzen Programms. Sehen Sie alle Java - Tipps . Siehe meine Antwort für dieselbe Herausforderung als Beispiel. Viel Spaß auf der Seite! :-)