Wenn Sie einen Buchstaben des englischen Alphabets erhalten, müssen Sie ein halbdiagonales Alphabet für die Eingabe erstellen.
Wie baue ich ein halbdiagonales Alphabet?
Kurzbeschreibung : Zunächst nehmen Sie die Position des Buchstabens im Alphabet ein P
( P
hier 1-indiziert). Anschließend drucken Sie jeden Buchstaben bis zur Eingabe (einschließlich) in einer Zeile, der ein P-1
Buchstabe vorausgeht, und wiederholen diesen Buchstaben in P
Abständen von Leerzeichen.
Beispiele :
Vorausgesetzt
F
, Ihr Programm sollte Folgendes ausgeben:EIN BB CCC DDDD EEEEE FFFFFF
Vorausgesetzt
K
, Ihr Programm sollte Folgendes ausgeben:EIN BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH IIIIIIIII JJJJJJJJJ KKKKKKKKKKK
Vorausgesetzt
A
, Ihr Programm sollte Folgendes ausgeben:A
Regeln
Sie können entweder Klein- oder Großbuchstaben wählen, dies sollte jedoch konsistent sein.
Sie haben möglicherweise zusätzliche Leerzeichen wie folgt:
- Ein konsistentes führendes Leerzeichen (in jeder Zeile).
- Eine abschließende oder führende Zeile (n).
- Nachgestellte Leerzeichen.
Die Eingabe und Ausgabe kann mit jedem Standardmittel erfolgen, und es gelten Standardlücken.
Sie können stattdessen eine Zeilenliste ausgeben, sofern Sie auch die ASCII-Art- Version angeben .
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Inspiriert von dieser Herausforderung .
Antworten:
Python 3 , 59 Bytes
Probieren Sie es online!
Python 3 , 61 Bytes
Probieren Sie es online! (Link zur Pretty-Print-Version)
quelle
Python 2 ,
636159 Bytes-2 Bytes dank Rod. -2 Bytes dank Felipe Nardi Batista.
Probieren Sie es online!
quelle
C 89 Bytes
Probieren Sie es online!
quelle
PowerShell ,
4542 ByteProbieren Sie es online!
Nimmt Eingaben als Literalzeichen auf und durchläuft dann die Großbuchstaben bis zu diesem Punkt, wobei jeder Iteration die entsprechende Anzahl von Leerzeichen und dann der Zeichen / Leerzeichen-Hybrid vorangestellt wird.
3 Bytes gespart dank TessellatingHeckler.
quelle
"$args"
, was hier nicht funktioniert, ich habe die[0]
Methode vergessen . Haha.JavaScript (ES6), 85 Byte
Funktioniert sowohl für die Eingabe als auch für die Ausgabe in Kleinbuchstaben. Gibt in jeder Zeile ein führendes Leerzeichen und ein nachfolgendes Leerzeichen aus.
Demo
Code-Snippet anzeigen
quelle
`${s} `
kann durch(s+"")
für eine Byte-Speicherung ersetzt werden(s+" ")
, aber das ist genauso lange.APL (Dyalog) , 26 Bytes
Fordert zur Eingabe eines skalaren Zeichens auf. Druckt die Liste der Zeilen.
Probieren Sie es online! (hat ASCII-Art-Version bei einem zusätzlichen Byte)
⎕
Eingabeaufforderung⎕A⍳
finden ɩ ndex in A lphabet⍳
zuerst , dass viele ɩ ntegers(
…)¨
Wenden auf jede folgende stillschweigende Funktion an:⊃∘⎕A
wählen Sie den argument'th Brief Brief von der A lphabet⊢⍴
formt es zyklisch in die Länge des Arguments um' ',¨⍨
füge jedem ein Leerzeichen hinzu⍴∘'',
Voranstellen einer Zeichenfolge mit Argumentlänge (mit Leerzeichen aufgefüllt)∊
ϵ nlist (Abflachen)Die ASCII-Art-Version hat
↑
ganz links ein; Liste der Zeichenfolgen in Zeichentabelle mischen.quelle
Perl 5 , 31 Bytes
30 Byte Code + 1 für
-l
.Probieren Sie es online!
quelle
say
anstelle der-l
Flagge Folgendes verwenden-E
/-M5.01
, ich habesay
in der Vergangenheit viel benutzt und würde wahrscheinlich die Tatsache missbrauchen, dasssay
es eine Alternative zuprint
einer eingeschränkten Quellen-Herausforderung oder ähnlichem ist, aber um -3 willen werde ich es behalten wie besehen. In diesem Meta-Beitrag finden Sie ein faires Argument . Schätzen Sie den Input!Dyalog APL, 38 Bytes
Probieren Sie es online!
Wie?
⎕A↑⍨
- Nimm das Alphabet bis⎕A⍳⍵
- das eingegebene Zeichen¨
- Für jedes Zeichen⍵,' '
- nimm den char und ein Leerzeichen(...)⍴
umformen zu2×y←⎕A⍳⍵
- Der doppelte Index des Zeichens im Alphabet(y/' ')
- und voranstellen von Zeichenindexräumen↑
- dann abflachenquelle
APL (Dyalog Classic) , 26 Byte
Probieren Sie es online!
Erläuterung
quelle
{}
, ersetzen Sie⍵
mit⎕
und behaupten , es ist ein „komplettes Programm“ , anstatt eine Funktion. Damit wäre Ihre Lösung (bisher) die beste.V ,
28, 26, 25, 23 Bytes ( konkurrierend )Probieren Sie es online!
Beachten Sie, dass ich, obwohl ich schon lange vorhatte, bestimmte Funktionen hinzuzufügen , diese Herausforderung mich überzeugt hat, es endlich zu tun.
Die Ausgabe enthält ein vorangestelltes Leerzeichen in jeder Zeile und eine nachfolgende neue Zeile.
Hexdump:
Erläuterung:
quelle
05AB1E , 10 Bytes
Probieren Sie es online!
-2 danke an Adnan .
Anhängen
»
, damit es in separaten Zeilen gedruckt wird.quelle
<
da ein einheitliches führendes Leerzeichen in Ordnung ist.A¹¡н«ðâƶāú
sollte für 10 Bytes arbeiten¹¡
wird dazu führen, dass es nicht funktioniert ... oh, deshalb gibt es da einen«
. : pR
9488 Bytes-6 Bytes dank Giuseppe
Ungolfed:
quelle
f
es sich um einen Einzeiler handelt, undmatch
stattdessenwhich
ein Byte speichern.Haskell,
5244 BytesGibt eine Liste von Zeilen zurück.
Probieren Sie es online!
Edit: @jferard: drei Bytes gespeichert. Vielen Dank!
quelle
f k=[tail$[" ",s:" "]>>=(['A'..s]>>)|s<-['A'..k]]
tail$
.JavaScript (ES8), 92 Byte
Verwendet Kleinbuchstaben. Zeilen haben ein führendes und ein hinteres Leerzeichen. Gibt ein Array von Zeilen zurück.
Testschnipsel
quelle
Schale , 13 Bytes
Nimmt ein Zeichen in einfachen Anführungszeichen als Befehlszeilenargument und gibt das Ergebnis an STDOUT aus. Probieren Sie es online!
Erläuterung
Ich nutze die Art und Weise, wie Husk Listen mit Zeichenfolgen druckt: Verbinden Sie innere Listen mit Leerzeichen und äußere Listen mit Zeilenumbrüchen.
quelle
05AB1E ,
151413 BytesDank Adnan 1 Byte gespeichert
Probieren Sie es online! oder die Ascii-Kunstversion
Erläuterung
quelle
A¹¡н«
stattADIk>£
sollte funktionierenA¹¡н
aber nicht daran«
APL (Dyalog Unicode) , 22 Byte SBCS
Probieren Sie es online!
Verwendet
⎕io←1
. Gibt ein führendes Leerzeichen aus, das zulässig ist.quelle
QBasic,
797472 BytesVielen Dank an Taylor Scott für die Einsparung von Bytes (zweimal!)
Verwendet Großbuchstaben. Die Eingabe erfolgt per Tastendruck und wird nicht auf dem Bildschirm wiedergegeben.
Erläuterung
Wir Schleife
i
von1
bis zu der Position des Begrenzungs Buchstaben im Alphabet (1-basiert). Für jedesi
bewegen wir uns in die Spaltei
des Bildschirms mitTAB
; danni
drucken wir mal deni
th Buchstaben des Alphabets, gefolgt von einem Leerzeichen.quelle
INPUT$(1)
Befehl als direkten Ersatz für die Variablez$
für ein Delta von -2 Bytes verwendenJapt
-R
,24231715 BytesGibt ein Array aus und enthält in jeder Zeile einen führenden Zeilenumbruch sowie einen führenden und einen nachfolgenden Abstand.
Probier es aus
quelle
Kohle , 18 Bytes
Probieren Sie es online!
quelle
E…·?θ⁺× κ⪫× κι
dies sonst in 14 Bytes erledigt würde.?
. Es sollteA
stattdessen sein, denke ich. Oh warte, ohhhhh ich verstehe was du meinst.Braingolf , 65 Bytes
Probieren Sie es online!
Kleinbuchstaben.
Enthält 1 abschließendes Leerzeichen in jeder Zeile und eine abschließende neue Zeile am Ende der Ausgabe.
quelle
C # (.NET Core) , 103 Byte
Probieren Sie es online!
quelle
JavaScript,
102 bis94 Byte2 Bytes gespart dank Neil
quelle
Netzhaut , 51 Bytes
Probieren Sie es online! Erläuterung:
Dupliziere den (ersten) Buchstaben.
Drehen Sie es im Alphabet um 1 zurück oder löschen Sie es, wenn es sich um ein Duplikat handelt
A
. Duplizieren und drehen Sie weiter, bis wir duplizierenA
. An diesem Punkt macht das Löschen das Duplizieren rückgängig und die Schleife ist abgeschlossen.Ersetzen Sie jeden Buchstaben durch eine Linie mit dem Buchstaben auf beiden Seiten.
Fügen Sie doppelte Buchstaben zwischen allen Paaren von Leerzeichen rechts von vorhandenen Buchstaben ein.
quelle
Haskell , 57 Bytes
Probieren Sie es online!
quelle
Kohle , 15 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Wenn zusätzliches Auffüllen zulässig wäre, würde dies für 14 Bytes funktionieren:
Probieren Sie es online! Link ist eine ausführliche Version des Codes.
quelle
Mathematica, 70 Bytes
Kleinbuchstaben
gibt eine Liste aus
Danke @ngenisis für Korrekturen
Bei Ascii-Art- Version
Column@
am Anfang platzierenquelle
Excel VBA, 72 Bytes
Anonyme VBE-Direktfensterfunktion, die Eingaben von der Zelle
A1
und Ausgaben in das VBE-Direktfenster übernimmtquelle
Pyth , 17 Bytes
Probieren Sie es hier aus (hübsche Druckversion).
Wie funktioniert das?
hxG
- Nimmt den Index der Eingabe in Kleinbuchstaben.<G
- Schneidet jedes Zeichen nach der Eingabe aus dem Alphabet..e
- Aufzählungskarte. Karten über das zugeschnittene Alphabet mit den Indizes alsk
und den Buchstaben alsb
.*kd
-k
Leerzeichen anhängen .+bd
-b
+ ein Leerzeichen (der aktuelle Buchstabe + Leerzeichen).*...hk
- Wiederholen Sie diek+1
Zeiten.+(...)(...)
- Verketten.quelle
.e+*kdjd*bhk<GhxG
auch 17 Bytes bekommen.e+*kd*+bdhkhcGQ
C ++ (gcc) , 164 Bytes
Mein erster Versuch nach langer Lauerzeit!
Ungolfed Code unten:
Probieren Sie es online!
quelle