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.
[[]]
können wir zwei Quadrate überlappend ausgeben oder müssen wir ein Quadrat in das andere ausgeben?