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)(cdou ab((cdnã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.