Eine Kanonenkugel wird abgefeuert, so dass sie im ersten Augenglied ihres Fluges von N
Baumkronen, im zweiten Augenglied von N-1
Baumkronen usw. aufsteigt , bis sie den höchsten Punkt ihrer Flugbahn erreicht. Dann fängt es an, um 1, 2 usw. Baumkronen pro Augenglied zu fallen, bis es den Boden berührt. Gleichzeitig bewegt sich die Kanonenkugel horizontal mit einer konstanten Geschwindigkeit von 1 Baumwipfel / Augenglied.
Ihre Aufgabe ist es, die Flugbahn mit aufeinander folgenden Buchstaben aus dem englischen Alphabet zu zeichnen. Wenn Ihnen die Buchstaben ausgehen, beginnen Sie erneut bei 'A'
. Schreiben Sie eine Funktion oder ein Programm. Die Eingabe ist eine Ganzzahl N
( 1≤N≤15
). Die Ausgabe kann eine Zeichenmatrix in jeder vernünftigen Form sein, beispielsweise eine durch Zeilenumbrüche getrennte Zeichenfolge oder eine Liste von Zeichenfolgen. Buchstaben können alle Kleinbuchstaben oder alle Großbuchstaben sein. Zusätzliche führende und nachfolgende Leerzeichen sind zulässig. Standardlücken sind verboten. Kürzerer Code ist besser.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
undP
geht das Häkchen 1 nach rechts, aber 0 nach oben oder unten.Antworten:
05AB1E ,
33322928 BytesProbieren Sie es online!
Erläuterung
quelle
Nú»
oder so etwas könnte verwendet werden, um zu drucken, wie Sie anstatt gehen])~.c
Stax ,
2924 BytesFühren Sie es online aus und debuggen Sie es
Dies ist die entsprechende ASCII-Darstellung desselben Programms.
quelle
R,
169163161153150110109 BytesDieser Ansatz füllt eine Matrix aus und druckt dann die Matrix.
Golf gespielt
Danke @ Giuseppe für 153.
Danke @JDL für 150.
Siehe @ Giuseppes Kommentar zu 112 und einige Änderungen zu 110. 109. Rippen Sie den Originalcode.
Wenn Sie eine gültige Ausgabe zeichnen, dann 73 Bytes
quelle
Map
statt verwendenmapply
?lapply
anstatt istmapply
. Vielen Dank für 150row,column
paarweise direkt zu indizieren,[
anstatt durchmapply
(oderMap
) gehen zu müssen, also habe ich eine Möglichkeit gefunden, dies zu tun. Ich habe auch daran erinnert , dasswrite
existiert und ersetzencat
für 112 Bytes !Python 2 ,
140135133 BytesProbieren Sie es online!
quelle
MATL , 29 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Java (OpenJDK 8) , 121 Byte
Probieren Sie es online!
Erläuterung
quelle
C 184 Bytes
Probieren Sie es online!
Abgerollt:
quelle
main
zu kompilieren. Bei TIO befindet sich dasmain
in der Fußzeile.Clojure,
417319 BytesIrgendwann verwickelte ich mich in
reverse
Anrufe und gab die Idee auf, sie so kurz wie möglich zu halten. Ich wollte nur eine funktionierende Lösung haben. Bitte schön...Irgendwie ungolfed
Aktualisieren
Motiviert durch Oliviers Kommentar gelang es mir, mehrere
reverse
Anrufe zu unterbrechen und einige allgemeine Golf-Tricks anzuwenden, um Charaktere zu schneiden. Auch habe ich Aliase fürreverse
,map-indexed
,concat
,repeat
undstr
da habe ich sie mehrfach jeder.Ungolfed
Erstellt die Funktion,
c
die den Wert n akzeptiert und eine Liste von Zeilen zurückgibt.quelle
Holzkohle ,
3331 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: 2 Bytes dank nur @ ASCII gespeichert. Erläuterung:
Initialisieren Sie den aktuellen Buchstaben als Index in Großbuchstaben auf 0.
Machen Sie eine Schleife von der Negation der Eingabe zur Eingabe einschließlich.
Normalerweise befindet sich jede Spalte rechts von der vorherigen. Es gibt jedoch keine Spalte für Null. Stattdessen ist eine Korrektur erforderlich, um sicherzustellen, dass die linke und die rechte Seite ausgerichtet sind.
Schleife für jeden Buchstaben in der Spalte.
Den aktuellen Brief drucken.
Erhöhen Sie den Buchstabenindex.
Bewegen Sie sich nach oben oder unten, je nachdem, auf welcher Seite der Flugbahn wir uns befinden.
quelle
Perl 5 , -n
112929088 BytesAusnahmsweise
printf
scheint die furchtbar lange Zeit zu gewinnen.Probieren Sie es online!
quelle
(A..Z)x9
zur Arbeit zu kommen, aber es war einfach zu kurz am Limit! Hatte das nur für 91. :)Python3 + numpy,
124115Dadurch wird ein Array mit entsprechender Größe erstellt, die Indizes für die Flugbahn ermittelt und ihnen das entsprechende Zeichen zugewiesen.
Der komplexeste Teil ist die Generierung der Zeichen AZ, die sich auf eine sehr hackige Zahlenfolge für einen Zeichenfolgentyp stützt.Das zurückgegebene Objekt ist ein Unicode-Array.Bearbeiten : 9 Bytes gespeichert, die den Zahlencode ersetzen, durch den die Zeichen AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
) generiert wurdenmap
, wie hier vorgeschlagen .quelle
Python 3 ,
139136 BytesProbieren Sie es online!
Generiert jede Ebene rekursiv unter Berücksichtigung der Größe und des Versatzes.
-3 Bytes dank Jo King
quelle
~
Betreiber!n and ... or''
umn*' 'and ...
für ein anderes ByteJ ,
7875 BytesProbieren Sie es online!
-3 danke an ngn
quelle
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 Bytes
Probieren Sie es online!
Gibt eine Liste von Zeichenlisten zurück. Primitive Verifikation hier
quelle
Gelee , 35 Bytes
Probieren Sie es online!
quelle
Yabasic , 125 Bytes
Eine grundlegende Lösung, die den Grafikmodus verwendet, um die Zeichen in der richtigen Spalte und Zeile des Bildschirms zu drucken.
Da diese Lösung den Grafikmodus verwendet, kann sie nicht mit TIO ausgeführt werden.
Ausgabe
Unten ist die Ausgabe für die Eingabe
7
quelle
Rubin ,
106103 BytesProbieren Sie es online!
quelle
QBasic 1.1 , 124 Bytes
quelle
Python 3 , 190 Bytes
Probieren Sie es online!
Ich versuchte mein Bestes. Lassen Sie mich wissen, ob Optimierungen möglich sind.
quelle
k4,
7671 BytesEinige Neuanordnungen + Zuweisungen, um 5 Bytes zu sparen
halbstündiger Aufwand mit etwas Aufwand, um ein paar Bytes zu entfernen, aber hier kann wahrscheinlich noch viel mehr getan werden. werde darauf zurückkommen. lustige Herausforderung!
quelle