Jeder Programmierer weiß, dass Klammern []{}()<>
wirklich Spaß machen. Um diesen Spaß zu verschärfen, können Gruppen von verwobenen Klammern in niedliche und unscharfe Diagramme umgewandelt werden.
Angenommen, Sie haben eine Zeichenfolge mit ausgeglichenen Klammern, wie z [{][<(]})>(())
. Schritt eins ist, die Saite um 45 Grad im Uhrzeigersinn zu drehen. (In Mathematica ist dies fast erledigt Rotate[ur_string,-pi/4]
). Hier ist das Ergebnis des ersten Schritts:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Fügen Sie als Nächstes einen diagonalen Abstand zwischen den einzelnen Zeichen ein.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Beginnen Sie als Nächstes mit der am weitesten links stehenden Klammer und ziehen Sie ein Quadrat zwischen sich und seinem Partner im Bereich Kriminalität.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Wiederholen Sie diesen Vorgang mit jedem Klammerpaar und überschreiben Sie +
gegebenenfalls die vorherigen Zeichen mit s.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Fahren Sie fort, bis Sie alles schön und quadratisch gemacht haben.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Eingang
Die Eingabe erfolgt in einer Zeile mit ausgeglichenen Klammern und ohne weitere Zeichen, wobei jede Klammer eines von ihnen ist []{}()<>
. Jede Art von Klammer ist individuell ausgeglichen, obwohl verschiedene Arten überlappen können (das ist , was macht die Quadrate interessant aussehen). Ein abschließender Zeilenumbruch ist optional.
Ausgabe
Die Ausgabe erfolgt als ineinandergreifendes quadratisches Muster, das aus der Klammerzeichenfolge generiert wird. Nachgestellte Leerzeichen und nachgestellte Zeilenumbrüche sind optional, dürfen jedoch keine führenden Leerzeichen enthalten.
Tor
Das ist Code-Golf, die wenigsten Bytes gewinnen.
quelle
[[]]
können wir zwei Quadrate überlappend ausgeben oder müssen wir ein Quadrat in das andere ausgeben?Antworten:
JavaScript (ES6),
269 274 278 296261 ByteBearbeite gespeicherte 4 Bytes dank @Neil
PRÜFUNG
quelle
[...r].map
?[...r].map(c=>c||' ')
.r.map
weil r ein spärliches Array ist und fehlende Elemente übersprungen werden. Also benutze ich jetzt g, das ist gefüllt (und es gibt so viele Zeilen wie Spalten in der Ausgabe)r.map
, sagte ich[...r].map
, und es[...r]
ist kein spärliches Array, wie Sie selbst in codegolf.stackexchange.com/a/61505 Kommentar 5 erwähnt haben.Python 3, 226
Beispiel . Erläuterung:
quelle
pb - 449 Bytes
Ich war ganz aufgeregt, als ich das las, weil ich eine Sprache habe, die direkt auf eine Position druckt! Diese Herausforderung beim Positionieren von Ausgängen sollte einfach und kurz sein!
Dann erinnerte ich mich, dass pb sowieso langwierig ist.
Mit Kommentaren:
quelle
CJam, 117 Bytes
Probieren Sie es hier aus.
quelle
Rubin, 268
im Testprogramm ungolfed
quelle