Angenommen, eine unendliche Aneinanderreihung von Sechsecken, die aus |/\
Zeichen bestehen.
/ \ / \ / \ / \
| | | | |
\ / \ / \ / \ / etc.
| | | |
\ / \ / \ /
Geben Sie bei gegebener Eingabe n > 0
einen dreieckigen Teil der Kachelung aus, wie in den folgenden Beispielen dargestellt und mit einem _
in der Mitte eines Sechsecks verankert :
n=1
\_/
n=2
\/ \/
\_/
n=3
\ | /
\/ \/
\_/
n=4
\/ \ / \/
\ | /
\/ \/
\_/
n=5
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=6
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=7
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=8
\/ \ / \ / \ / \/
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
and so on
Regeln
- Führende / nachfolgende Zeilenumbrüche oder andere Leerzeichen sind optional, sofern die Zeichen richtig ausgerichtet sind.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Die Ausgabe kann auf der Konsole erfolgen, als Bild gespeichert, als Liste von Zeichenfolgen usw. zurückgegeben werden.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Antworten:
Python 2 , 86 Bytes
Probieren Sie es online!
Mit einem von Eriks Tricks konnte ich 3 Bytes Golf spielen! 3 Bytes dank Jonathan Allan gespeichert.
Wie das geht
Zunächst wird dies von STDIN eingegeben und zwei separaten Variablen
i
und zugewiesenk
. Während die Variablei
wahr ist, dekrementieren wir sie und generieren die Zeichenfolgen entsprechend. Dies ist eine Abkürzung für die Schleife von Eingang 1 bis 0.Strings generieren
Ich werde dies in mehrere Teile aufteilen:
Zunächst wird der führende Abstand mit erreicht
" "*(k+~i)
. Dai
durch den Bereich (Eingabe, 0] abgebildet wird , müssen wir ihn von subtrahierenk
(unserer sicher gespeicherten ursprünglichen Eingabe) , dekrementieren und ein Leerzeichen so oft wiederholen.+"\\"
- Fügt den Charakter hinzu"\"
zu den oben stehenden Leerzeichen hinzu.' / |\ '[i%2::2]
- Erzeugt unsere beiden Zeichenfolgen, nämlich"/ \ "
und" | "
in der folgenden Art und Weise:Wenn
i
ungerade ist, i% 2 ist 1 , also[i%2::2]
jeweils 2 Zeichen unserer größeren String zurückgibt, bei Index Start 1 (0-indexiert).Wenn
i
selbst ist, 2i% ist 1 , so dass der Mechanismus über das gleiche tut , außer es bei Index beginnt 0 .+~-i*
- Wiederholt die Zeichenfolge oben erzeugt, entweder"/ \ "
oder" | "
, i-1 - mal, und fügt sie zu den anderen Saiten. Der Vorteil des bitweisen Operators (~
- Bitweises Komplement, äquivalent zu i, subtrahiert von -1 ) besteht darin, dass in diesem Kontext keine Klammern erforderlich sind.[:k-~i]
- Ruft alle Zeichen der oben verketteten Zeichenfolgen ab, bis der Index k- ~ i = k - (-1 - i) = k + 1 + i .+"_/"[i>0:]
- Dies wird nur hinzugefügt,"/"
wenn i ≥ 1 ist , andernfalls wird es angehängt_/
.Vollständiges Beispiel / Ausführungsdetails
Schauen wir uns ein Beispiel an, wie die Eingabe von 4 funktioniert :
quelle
i-=1
an den Anfang der Schleife und verwenden Sie eine etwas andere Formation auf der rechten Seite, um sie auf 87 Byte zu reduzieren .Python 2 , 90 Bytes
Probieren Sie es online!
quelle
05AB1E , 33 Bytes
Probieren Sie es online!
quelle
Mathematica, 131 Bytes
gibt eine Liste von Zeichenketten zurück
Probieren Sie es online!
quelle
Retina ,
129119112 BytesProbieren Sie es online!
quelle
Holzkohle , 26 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes.
quelle
Python 2 ,
1231121101091009896 BytesProbieren Sie es online!
quelle
-1-a
mit~a
(wie ich in meiner Antwort tat).Python 2 , 103 Bytes
Probieren Sie es online!
quelle
APL (Dyalog) ,
9793 BytesProbieren Sie es online!
quelle
SOGL V0.12 ,
2827 BytesProbieren Sie es hier aus!
quelle
Haskell ,
96 bis95 BytesProbieren Sie es online!
0-indiziert und gibt eine Liste von Zeilen zurück.
quelle
Haskell,
101 bis99 BytesGibt eine Liste von Zeilen zurück.
Probieren Sie es online!
Wie es funktioniert:
Edit: @Laikoni hat zwei Bytes gespeichert. Vielen Dank!
quelle
([1,3..n-1]>>)
kann anstelle von verwendet werden([1..div n 2]>>)
.Java (OpenJDK 8) ,
315306 BytesProbieren Sie es online!
quelle
Java (OpenJDK 8) , 198 Byte
Endlich unter 200 Bytes. Werde wahrscheinlich später eine Erklärung posten.
Probieren Sie es online!
quelle
JavaScript (ES6),
89-85ByteDemo
Code-Snippet anzeigen
quelle
CJam, 43
Probieren Sie es online aus
quelle
PHP, 89 + 1 Bytes
Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .quelle
Pyth ,
4644 BytesProbieren Sie es hier aus!
quelle