Staffe normali ( ()
, []
, <>
e {}
) sono belle e non ambigua, ma qualcuno ha pensato che sarebbe stata una buona idea quella di utilizzare i caratteri non staffa come parentesi. Questi personaggi |
e "
sono ambigui. Ad esempio
""""
corrisponde a
(())
o
()()
È impossibile dirlo.
Le cose iniziano a diventare interessanti quando mescoli tipi di parentesi ambigue, per esempio
"|""||""|"
Potrebbe essere uno dei seguenti
([(([]))]),([()[]()]),([()][()])
Compito
Il tuo compito è quello di prendere una stringa fatta di caratteri ambigui e produrre tutte le possibili stringhe bilanciate che l'autore avrebbe potuto intendere.
Più concretamente si uscita tutte le stringhe bilanciate che possono essere fatte sostituzione |
sia con [
o ]
e "
sia con (
o )
. Non dovresti generare due stringhe bilanciate due volte.
IO
Come input dovresti prendere una stringa composta da |
e "
. Se desideri selezionare due caratteri distinti oltre a |
e "
fungere da rimpiazzo, puoi farlo. Dovresti generare un contenitore di stringhe bilanciate. Si può scegliere di sostituire []
e ()
in uscita con altre due coppie di parentesi ( ()
, []
, <>
o {}
) che si desidera. Il formato di output deve essere coerente su tutte le esecuzioni.
punteggio
Si tratta di code-golf, quindi le risposte verranno classificate in byte con un numero inferiore di byte migliori.
Casi test
"" -> ["()"]
"|"| -> []
||| -> []
"""" -> ["(())","()()"]
""|| -> ["()[]"]
"|"||"|" -> ["([([])])"]
"|""||""|" -> ["([(([]))])","([()[]()])","([()][()])"]