Wenn Sie eine Zeichenfolge haben, deren Länge durch 4 teilbar ist, bilden Sie ein Dreieck, wie unten gezeigt.
Wenn der String ist abcdefghijkl
, dann wäre das Dreieck:
a
b l
c k
defghij
Wenn der String ist iamastringwithalengthdivisiblebyfour
, dann wäre das Dreieck:
i
a r
m u
a o
s f
t y
r b
i e
n l
gwithalengthdivisib
Wenn der String ist thisrepresentationisnotatriangle
, dann wäre das Dreieck:
t
h e
i l
s g
r n
e a
p i
r r
esentationisnotat
Anmerkungen
- Die Zeichenfolge besteht nur aus Zeichen von
a
bisz
. - Führende / nachfolgende Leerzeichen und Zeilenumbrüche sind zulässig, solange die Form nicht unterbrochen wird.
- Eine Liste von Zeichenfolgen als Ausgabe ist zulässig.
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .
✂
s?GH↙→→↖⊕÷Lθ⁴θ
wird funktionieren, wenn ich das nächste Mal Charcoal drücke05AB1E , 23 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6),
119117108105 ByteFormatiert und kommentiert
Testfälle
Code-Snippet anzeigen
quelle
C # 260 Bytes
Wollte eigentlich nutzen
SetCursorPosition
.Ungolfed:
quelle
Mathematica, 164 Bytes
Eingang
quelle
[[1]]
das durch ersetzt werden kann#&@@
.@(...)
, tu es einfach[...]
stattdessen. Und ich habe es nicht getestet, aber Sie können wahrscheinlich ein weiteres Byte speichern, indem SieColumn
einen Namen angeben (oder sogarColumn[#,Alignment->Center]&
vermeidenq
) und dann alle verbleibenden Variablen in das erste Argument des äußeren setzenColumn
(um die umgebenden Klammern zu speichern).Python 3 , 120 Bytes
Das erste Mal, dachte ich, könnte ich auf dem Weg auch etwas Python lernen.
Probieren Sie es online!
Erläuterung:
Das erste Zeichen wird danach von selbst gedruckt
len(a)//4
Leerzeichen Anschließend werden das erste und das letztei
Zeichen ab dem zweiten Zeichen durch2*i - 1
Leerzeichen getrennt gedruckt .Zuletzt wird der verbleibende Teilstring gedruckt.
quelle
p=print
und dann einfachp
für die dreiprint
s zu verwenden, die Sie verwenden.//
(Bodenteilung) durch ersetzt werden/
.GNU sed ,
178158132 + 1 = 133 Bytes+1 Byte für
-r
Flag.Probieren Sie es online!
Erläuterung
In früheren Überarbeitungen habe ich viele Bytes verwendet, die sich mit Mathematik, Sonderfällen und Bereinigung befassten, obwohl ich intuitiv sicher war, dass sie vermieden werden konnten. Ich habe es seitdem meistens geschafft.
Angenommen, wir haben den Input
abcdEFGHIJKLMnop
. Die BuchstabenEFGHIJKLM
werden am unteren Rand des Dreiecks angezeigt, daher habe ich sie als visuelle Hilfe großgeschrieben.Zuerst bereiten wir die Eingabe vor, indem wir das erste Zeichen in eine eigene Zeile setzen (mit vorangestelltem Leerzeichen) und einen Cursor (
;
) vor dem letzten Zeichen einfügen :Jetzt haben wir:
In einer Schleife machen wir jetzt ein paar Dinge in der letzten Zeile: 1. Kopieren Sie die Leerzeichen aus der vorherigen Zeile und fügen Sie sie nach dem ersten Zeichen plus zwei ein. 2. Bewegen Sie das letzte Zeichen nach den Leerzeichen nach rechts, gefolgt von einer neuen Zeile. und 3. Bewegen Sie den Cursor drei Zeichen nach links.
Hier ist das Ergebnis jeder Iteration:
Sie können sehen, wie die Pyramide Gestalt annimmt. Sie können auch sehen, wozu der Cursor diente: Bei jeder Iteration wurden drei Zeichen nach links verschoben, und wenn keine weiteren drei Zeichen mehr vorhanden sind, wird die Schleife unterbrochen. der Pyramide.
Jetzt machen wir eine ähnliche Operation, aber in umgekehrter Reihenfolge. In einer Schleife kopieren wir die Leerzeichen vom Zeilenanfang mit dem Cursor zum Zeilenanfang plus eins, wobei wir den Cursor auf diese Zeile bewegen.
Hier sind ein paar Iterationen und das Endergebnis:
Bis auf einige zusätzliche Zeichen sind wir alle fertig: A
;
und zusätzliches Leerzeichen in der ersten Zeile und zwei Leerzeichen in der "Mitte" der Pyramide in den nächsten drei Zeilen. Eine einfache Ersetzung beseitigt sie:Alles erledigt!
quelle
Rubin , 106 Bytes
Probieren Sie es online!
quelle
Python 2 ,
100 9796 BytesProbieren Sie es online!
Erläuterung:
Eine clevere Sache, die ich hier gemacht habe, ist, die Eingabe mit einem Leerzeichen am Ende aufzufüllen, so dass das erste Zeichen damit gepaart wird und dies in die Schleife geschoben werden kann (und da nachfolgende Leerzeichen erlaubt sind).
Die Anzahl der zu verfolgenden Schleifen wird zugeordnet
len(word)//4
. Im letzten Schritt wird die gesamte verbleibende Zeichenfolge gedruckt (dies bildet die Basis des Dreiecks). Die Räume folgen einem einfachen Muster; Die erste Menge von Leerzeichen nimmt um 1 ab, während die zweite Menge von Leerzeichen um 2 zunimmt.quelle
a
wird immer ein Vielfaches von 4.//
->/
C 225 Bytes
erklärt
quelle
C # 172 Bytes
Probieren Sie es online!
quelle
Oktave, 87 Bytes
* In einem Windows-Computer erzeugt der obige Code das richtige Ergebnis, aber in tio habe ich etwas Code hinzugefügt, um es zu korrigieren.
Erläuterung:
Probieren Sie es online!
quelle
Haskell , 136 Bytes
Probieren Sie es online!
quelle
PHP> = 7.1, 122 Bytes
PHP Sandbox Online
PHP> = 7.1, 124 Bytes
PHP Sandbox Online
quelle
AWK , 129 Bytes
Probieren Sie es online!
Ich sollte denken, dass dies ein bisschen mehr golfen werden könnte, nur nicht sehen.
quelle
Netzhaut , 99 Bytes
Probieren Sie es online! Erläuterung: In den ersten beiden Schritten werden die ersten beiden Zeilen generiert, danach ist jedoch keine spezielle Groß- / Kleinschreibung erforderlich, und jede nachfolgende Zeile kann automatisch generiert werden:
quelle
Java 8, 213 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
Perl 5 , 76 Bytes
74 Bytes Code +2 für
-F
Probieren Sie es online!
quelle