Supports normaux ( ()
, []
, <>
et {}
) sont agréables et sans ambiguïté, mais quelqu'un a pensé que ce serait une bonne idée d'utiliser des caractères non support comme supports. Ces caractères |
et "
sont ambigus. Par exemple,
""""
correspondre à
(())
ou
()()
C'est impossible à dire.
Les choses commencent à devenir intéressantes lorsque vous mélangez des types de parenthèses ambiguës, par exemple
"|""||""|"
Pourrait être l'un des suivants
([(([]))]),([()[]()]),([()][()])
Tâche
Votre tâche consiste à prendre une chaîne composée de caractères ambigus et à afficher toutes les chaînes équilibrées possibles que l'auteur aurait pu imaginer.
Plus concrètement, vous sortez toutes les cordes équilibrées qui peuvent être remplacées |
par ou [
ou ]
et "
par (
ou )
. Vous ne devez pas sortir deux fois une chaîne équilibrée.
IO
En entrée, vous devez prendre une chaîne composée de |
et "
. Si vous souhaitez sélectionner deux caractères distincts autres que |
et "
pour servir de remplaçants, vous pouvez le faire. Vous devez sortir un conteneur de chaînes équilibrées. Vous pouvez choisir de remplacer []
et ()
dans la sortie avec les deux autres paires de support ( ()
, []
, <>
ou {}
) que vous souhaitez. Votre format de sortie doit être cohérent d'une exécution à l'autre.
Notation
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets mieux.
Cas de test
"" -> ["()"]
"|"| -> []
||| -> []
"""" -> ["(())","()()"]
""|| -> ["()[]"]
"|"||"|" -> ["([([])])"]
"|""||""|" -> ["([(([]))])","([()[]()])","([()][()])"]