Każdy programista wie, że nawiasy []{}()<>
są naprawdę zabawne. Aby zaostrzyć tę zabawę, grupy przeplatanych nawiasów można przekształcić w urocze i rozmyte diagramy.
Powiedzmy, że masz ciąg znaków, który zawiera zrównoważone nawiasy kwadratowe [{][<(]})>(())
. Pierwszym krokiem jest obrócenie sznurka o 45 stopni w prawo. (W Mathematica można to prawie zrobić Rotate[ur_string,-pi/4]
). Oto wynik pierwszego kroku:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Następnie dodaj po przekątnej odstęp między znakami.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Następnie zacznij od lewego skrajnego nawiasu i narysuj kwadrat między nim a partnerem w zbrodni.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Powtórz ten proces z każdą parą nawiasów, w +
razie potrzeby zastępując poprzednie znaki s.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Kontynuuj, aż wszystko sprawi, że wszystko będzie ładne i proste.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Wkład
Wejście będzie pojedynczą linią nawiasów symetrycznych i żadnych innych znaków, przy czym każdy nawias będzie jednym []{}()<>
. Każdy rodzaj nawiasów jest wyważany indywidualnie, chociaż różne typy mogą się nakładać (to sprawia, że kwadraty wyglądają interesująco). Końcowy znak nowej linii jest opcjonalny.
Wydajność
Wyjściowy będzie blokujący wzorzec kwadratowy wygenerowany z ciągu wspornika. Końcowe spacje i końcowy znak nowej linii są opcjonalne, ale nie może być wiodących białych znaków.
Cel
To jest golf golfowy, wygrywa najmniej bajtów.
[[]]
czy możemy wyprowadzić dwa kwadraty zachodzące na siebie lub czy musimy wyprowadzać jeden kwadrat w drugim?