Baseado em ESTE questão.
Dada uma sequência, substitua cada suporte ()[]{}<>
por um suporte do tipo apropriado para que os colchetes correspondam e os colchetes aninhados alternem da seguinte maneira:
- Os ultraperiféricos são
()
- Diretamente dentro de
()
deve ser[]
- Diretamente dentro de
[]
deve ser{}
- Diretamente dentro de
{}
deve ser<>
- Diretamente dentro de
<>
será()
novamente (ciclos)
Todos os caracteres sem colchetes devem permanecer exatamente como estão. Os colchetes abertos só podem ser substituídos por colchetes abertos de algum tipo e os colchetes fechados por colchetes fechados.
A entrada sempre tornará isso possível. Isso significa que seus colchetes corresponderam corretamente se seu tipo for ignorado. Então, {ab<)c]
é uma entrada válida, mas ab)(cd
ou ab((cd
não são.
Exemplos:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
O uso da transformação nativa de entrada dessa maneira (sintaxe automática do idioma) não é permitido.
Como sempre: o código mais curto vence.