Geben Sie ein ASCII-Hexagon als Eingabe aus, dessen Seiten alle eine Einheit länger sind.
_____
____ / \
/ \ / \
/ \ / \
\ \ => \ \
\ / \ /
\____/ \ /
\_____/
Die Eingabesechsecke haben eine 180-Grad-Symmetrie, ansonsten können die Seiten unterschiedlich lang sein. Oben werden die Seitenlängen (2, 4, 3) auf (3, 5, 4) vergrößert. Die Seitenlängen sind ungleich Null.
Die Sechsecke bestehen aus Unterstrichen _
, Schrägstrichen /
und umgekehrten Schrägstrichen \
. Beachten Sie, dass sich die Oberkante der horizontalen Kanten (mit Unterstrichen) in einer eigenen Linie befindet, die Unterkante jedoch nicht.
I / O
Ich werde ein Stickler sein und hier eine ASCII- Formatierung erfordern : Die Eingabe und Ausgabe sollte eine Zeichenfolge mit Zeilenumbrüchen sein, die das Bild darstellen, nicht eine Liste von Zeilen. Natürlich kann Ihr Code jede Zeile der Reihe nach drucken, um das Bild zu erzeugen, oder STDIN eine Zeile pro Eingabezeit lesen, wenn Ihre Sprache dies kann.
Einzelheiten
Die Eingabe kann optional einen nachgestellten Zeilenumbruch enthalten, ansonsten jedoch keine Leerzeilen. Sie können entweder festlegen, dass die Eingabe keine nachgestellten Leerzeichen enthält, oder dass jede Zeile auf dieselbe Länge (die der längsten Zeile) aufgefüllt wird.
Die Ausgabe sollte wie die Eingabe bündig mit dem linken Bildschirmrand abschließen. Es können zusätzliche Zeilenumbrüche über und unter sowie Leerzeichen am Ende vorhanden sein.
Testfälle
Eingabe gefolgt von Ausgabe.
_
/ \
\_/
__
/ \
/ \
\ /
\__/
____
/ \
/ \
\ \
\ /
\____/
_____
/ \
/ \
/ \
\ \
\ /
\ /
\_____/
_
/ \
/ /
/ /
/ /
/ /
\_/
__
/ \
/ \
/ /
/ /
/ /
/ /
\ /
\__/
Bestenliste
<iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=185760" width="100%" height="100%" style="border: none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
IEnumerable
Zeichen zurückgeben?Antworten:
Stax , 28 Bytes
Führen Sie es aus und debuggen Sie es
Scheint, als gäbe es eine Möglichkeit, dies hauptsächlich mit Regex zu tun, aber ich suche immer noch ...
quelle
Retina 0.8.2 , 84 Bytes
Probieren Sie es online! Arbeitet mit unregelmäßigen Sechsecken. I / O ist nicht gepolstert. Erläuterung:
Erweitern Sie das Innere des Sechsecks.
Befestigen Sie die Oberseite.
Befestigen Sie den Boden.
quelle
JavaScript (ES6),
159 156 153150 ByteProbieren Sie es online!
Kommentiert
NB: Nachfolgend werden alternative Zeichen für die Regex-Trennzeichen verwendet, um zu verhindern, dass der SE-Syntax-Textmarker wütend wird.
quelle
Kohle , 48 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie alle Zeilen außer der ersten ein und verketten Sie sie. (Die Eingabe im JSON-Format würde das meiste bei einer Einsparung von 11 Bytes überflüssig machen.)
Zählen Sie die Anzahl von
/
s,/
s und_
s in der Zeichenfolge und verwenden Sie diese, um die neuen Seitenlängen zu berechnen (im Fall von_
s als Zeichenfolge von_
s dieser Länge).Zeichne das vergrößerte Sechseck.
Alternative Lösung, auch 48 Bytes:
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie alle Zeilen ein. (Eine Eingabe im JSON-Format würde dies bei einer Einsparung von 17 Byte überflüssig machen.)
Zeichnen Sie die oberen rechten und unteren linken Abschnitte des Sechsecks getrennt.
Zählen Sie die Anzahl von
/
s,/
s und_
s in der Zeichenfolge und berechnen Sie daraus die neuen Seitenlängen.Geben Sie oben oder unten aus und bewegen Sie sich eine Zeile nach unten, wenn dies die oberste Zeile war.
Zeichnen Sie die rechte oder linke Seite.
quelle
APL (Dyalog Unicode) ,
75 bis74 Byte SBCSProbieren Sie es online!
'.+'⎕s'&'
Eingabe in Zeilen aufteilen↑⍵
Linien in eine Matrix mischen⍺⍳
ersetzen' /\_'
mit0 1 2 3
(0,0,⍨⍉)⍣3⍉
Oben und unten mit einer 0-Schicht und links und rechts mit zwei 0-Schichten umgeben{⊃0~⍨1⌷⍵,⍨⍉⍵}⌺3 3
Wählen Sie für jede Zelle die erste Nicht-0 aus: oben, unten, links, rechts aus der darauf zentrierten 3x3-Nachbarschaft2⌈/
maximal paarweise horizontala×1=(+⍀×a)⌊⊖+⍀⊖×a←
Behalten Sie nur die äußere Grenze von Nicht-Nullen bei⍺[
]
ersetzen0 1 2 3
mit' /\_'
quelle
PowerShell , 126 Byte
Probieren Sie es online!
quelle
Perl 5 ,
177156145 BytesKönnte kürzer sein? Weiß noch nicht wie. Mit Kommentaren und hinzugefügten Zeilenumbrüchen sowie Kopf- und Fußzeile:
Probieren Sie es online!
Zeile 1 teilt eine mehrzeilige Eingabezeichenfolge in das @ l-Array auf.
Zeile 2 dupliziert die zweite und letzte Zeile ohne die Zeichen _.
Zeile 3 fügt Leerzeichen in Zeile 2 bis zum vorletzten hinzu.
Zeile 4 erweitert die beiden ___ Seiten mit einem _ und gibt das @ l-Array von Zeilen als eine mehrzeilige Zeichenfolge zurück.
quelle