Wenn eine Eingabezeichenfolge mit einer Länge 2
oder einer Länge, die ausschließlich aus alphabetischen Zeichen besteht, [A-Z]
oder [a-z]
(nach Wahl in Groß- oder Kleinbuchstaben), wird eine fortlaufende Zeichenfolge ausgegeben, die ein doppeltes Rautenmuster bildet.
Die Eingabezeichenfolge beginnt auf der Mittellinie und verläuft diagonal nach unten und rechts, bis das Ende der Eingabezeichenfolge erreicht ist. Dann wird das Muster diagonal nach oben und rechts fortgesetzt, bis Sie so weit über der Mittellinie sind wie die Länge der Eingabezeichenfolge minus 1. Fahren Sie nach unten und rechts zurück zur Mittellinie, und dann nach unten und rechts. links, dann hoch und links ("hinter" dem mittleren Zeichen) und schließlich runter und links zurück zum Startzeichen.
Das ist ein bisschen wortreich und wird anhand einiger Beispiele besser demonstriert:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Sehen Sie, wie der YOU
Vorgang an der Mittellinie beginnt und nach unten und rechts, dann nach oben und rechts usw. abläuft, bis er zum Anfang zurückkehrt. Beachten Sie insbesondere, wie der Y
obere und linke Teil "hinter" O
und daher nicht dargestellt ist.
Einige weitere Beispiele:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- Die Ein- und Ausgabe kann auf jede bequeme Weise erfolgen .
- Die Eingabe ist garantiert mindestens zwei Buchstaben lang (dh, Sie werden niemals
""
als Eingabe empfangen ). - Sie können es an STDOUT drucken oder als Funktionsergebnis zurückgeben.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Beliebig viel fremdes Leerzeichen ist akzeptabel, solange die Zeichen richtig ausgerichtet sind (z. B. können Sie die Zeichen auch als Rechtecke auffüllen).
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Antworten:
Kohle , 17 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Entlang eines Pfades zeichnen.
Zeichne in die Richtungen ↘↗↗↘↙↖↖↙ (die
<
und>
sind Abkürzungen für diese beiden Paare, aber die anderen Paare haben keine Abkürzungen.)Jedes Pfadsegment hat die gleiche Länge, einschließlich der Enden, der Länge der Eingabe.
Verwenden Sie die Eingabe als Text, der entlang des Pfads geschrieben werden soll.
Drucken Sie die ersten beiden Teile des Pfads erneut, damit das mittlere Zeichen korrekt ist.
quelle
05AB1E , 12 Bytes
Probieren Sie es online!
quelle
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157 155154 BytesGibt eine Zeichenmatrix zurück.
Probieren Sie es online!
Wie?
Der auf 0 basierende Index des mittleren Zeichens, der in der Rautenform übersprungen werden muss, lautet:
Kommentiert
quelle
JavaScript (ES6), 136 Byte
Gibt ein zweidimensionales Array zurück. Zeichnet die Zeichenfolge direkt in das Array und berechnet die Zielkoordinaten vom Ende an rückwärts, sodass die mittlere Zelle automatisch überschrieben wird. Erläuterung:
Eingabezeichenfolge.
Abstand zwischen "Bounces", ebenfalls die Hälfte des letzten Zeilenindex und eine unter der Länge.
Letzter Spaltenindex, auch die Hälfte der zu zeichnenden Textlänge.
Array von Räumen.
Countdown von der letzten bis zur ersten Zelle.
Rekursiver Aufruf zur Verarbeitung der verbleibenden Zellen.
Berechnen Sie die Zeile dieser Zelle.
Berechnen Sie die Spalte dieser Zelle und das dazugehörige Zeichen.
Beenden Sie den Vorgang, indem Sie das Array zurückgeben.
Beginnen Sie am Ende des Textes.
quelle
J ,
797775 BytesProbieren Sie es online!
quelle
C (Klappern) ,
201196188 BytesProbieren Sie es online!
-13 @ceilingcat Vorschläge
quelle
Python 2 , 137 Bytes
Probieren Sie es online!
Ein vollständiges Programm, das eine Zeichenfolge als Eingabe verwendet, um die diamantierte Version auszudrucken.
quelle