Basado en esta pregunta.
Dada una cadena, reemplace cada corchete ()[]{}<>
con un corchete del tipo apropiado para que los corchetes coincidan, y los corchetes anidados se ciclan de la siguiente manera:
- Los más externos son
()
- Directamente dentro de
()
debe ser[]
- Directamente dentro de
[]
debe ser{}
- Directamente dentro de
{}
debe ser<>
- Directamente dentro de
<>
será()
nuevamente (ciclos)
Todos los caracteres sin corchetes deben permanecer exactamente como están. Los corchetes abiertos solo pueden reemplazarse con corchetes abiertos de algún tipo, y los corchetes cerrados con corchetes cerrados.
La entrada siempre lo hará posible. Esto significa que sus corchetes coinciden correctamente si se ignora su tipo. Entonces, {ab<)c]
es una entrada válida, pero ab)(cd
o ab((cd
no lo son.
Ejemplos:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
El uso de la transformación nativa de entrada de esta manera (sintaxis automática del lenguaje) no está permitido.
Como siempre: el código más corto gana.