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
"" -> ["()"]
"|"| -> []
||| -> []
"""" -> ["(())","()()"]
""|| -> ["()[]"]
"|"||"|" -> ["([([])])"]
"|""||""|" -> ["([(([]))])","([()[]()])","([()][()])"]