Normalne wsporniki ( ()
, []
, <>
i {}
) są ładne i jednoznaczne, jednak ktoś myślał, że będzie to dobry pomysł, aby wykorzystać znaki spoza Wspornik nawiasach. Te znaki, |
i "
są niejednoznaczne. Na przykład robi
""""
odpowiada
(())
lub
()()
Nie da się powiedzieć.
Na przykład zaczyna się robić ciekawie, gdy zmieszamy typy niejednoznacznych nawiasów kwadratowych
"|""||""|"
Może to być dowolny z poniższych
([(([]))]),([()[]()]),([()][()])
Zadanie
Twoim zadaniem jest pobranie ciągu złożonego z niejednoznacznych znaków i wygenerowanie wszystkich możliwych zrównoważonych ciągów, które autor mógł zamienić.
Mówiąc dokładniej, wyprowadzasz wszystkie zbalansowane ciągi, które można wykonać zamieniając na |
jeden [
lub na ]
i na "
jeden (
lub )
. Nie powinieneś wyprowadzać żadnego zbalansowanego ciągu dwa razy.
IO
Jako dane wejściowe powinieneś wziąć ciąg składający się z |
i "
. Jeśli chcesz wybrać dwa różne znaki inne niż |
i "
służyć jako zamienniki, możesz to zrobić. Powinieneś wyprowadzić kontener zrównoważonych ciągów. Możesz wybrać, aby zastąpić []
i ()
na wyjściu z dwoma innymi parami wspornik ( ()
, []
, <>
lub {}
) chcesz. Twój format wyjściowy powinien być spójny między przebiegami.
Punktacja
To jest golf golfowy, więc odpowiedzi będą liczone w bajtach, przy czym mniej bajtów będzie lepszych.
Przypadki testowe
"" -> ["()"]
"|"| -> []
||| -> []
"""" -> ["(())","()()"]
""|| -> ["()[]"]
"|"||"|" -> ["([([])])"]
"|""||""|" -> ["([(([]))])","([()[]()])","([()][()])"]