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.
źródło
[[]]
czy możemy wyprowadzić dwa kwadraty zachodzące na siebie lub czy musimy wyprowadzać jeden kwadrat w drugim?Odpowiedzi:
JavaScript (ES6),
269 274 278 296261 bajtówEdytuj Zapisane 4 bajty xx @ Neil
TEST
źródło
[...r].map
?[...r].map(c=>c||' ')
.r.map
ponieważ r jest rzadką tablicą, a mapa pomija brakujące elementy. Teraz używam g, który jest wypełniony (a na wyjściu jest tyle wierszy, ile kolumn)r.map
, powiedziałem[...r].map
, i[...r]
NIE jest to rzadka tablica, jak wspomniałeś w codegolf.stackexchange.com/a/61505 komentarz 5.Python 3, 226
Przykład . Wyjaśnienie:
źródło
pb - 449 bajtów
Byłem podekscytowany, kiedy to przeczytałem, ponieważ mam język, który drukuje bezpośrednio na pozycji! Wyzwanie dotyczące pozycjonowania wyników powinno być łatwe i krótkie!
Wtedy przypomniałem sobie, że pb i tak ma długi wiatr.
Z komentarzami:
źródło
CJam, 117 bajtów
Wypróbuj tutaj.
źródło
Ruby, 268
nie wziął udziału w programie testowym
źródło