Normale Klammern ( (), [], <>und {}) sind schön und eindeutig sein , aber jemand dachte , dass es eine gute Idee wäre , nicht Klammerzeichen wie Klammern zu verwenden. Diese Zeichen |und "sind nicht eindeutig. Zum Beispiel tut
""""
entsprechen
(())
oder
()()
Es ist unmöglich zu sagen.
Interessant wird es zum Beispiel, wenn Sie Typen von mehrdeutigen Klammern mischen
"|""||""|"
Könnte eine der folgenden sein
([(([]))]),([()[]()]),([()][()])
Aufgabe
Ihre Aufgabe ist es, eine Zeichenfolge aus mehrdeutigen Zeichen zu erstellen und alle möglichen ausgewogenen Zeichenfolgen auszugeben, die der Autor beabsichtigt haben könnte.
Genauer gesagt, Sie geben alle ausgewogenen Saiten aus, die |durch entweder [oder ]und "durch entweder (oder ersetzt werden können ). Sie sollten keine symmetrische Zeichenfolge zweimal ausgeben.
IO
Als Eingabe sollte ein String aus |und verwendet werden ". Wenn Sie zwei verschiedene Zeichen als |und "als Ersatz auswählen möchten, können Sie dies tun. Sie sollten einen Container mit ausgeglichenen Zeichenfolgen ausgeben. Sie können wählen, ersetzen []und ()in der Ausgabe mit irgendwelchen anderen beiden Bügelpaare ( (), [], <>oder {}) Sie möchten. Ihr Ausgabeformat sollte über mehrere Läufe hinweg konsistent sein.
Wertung
Dies ist Codegolf, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
"" -> ["()"]
"|"| -> []
||| -> []
"""" -> ["(())","()()"]
""|| -> ["()[]"]
"|"||"|" -> ["([([])])"]
"|""||""|" -> ["([(([]))])","([()[]()])","([()][()])"]