Você tem a oportunidade de escrever software para o Bracketeer™, um mainframe antigo, mas poderoso. O software que roda nele é escrito em uma linguagem proprietária. Grande parte da sintaxe é familiar, mas você percebe muitos colchetes, chaves e parênteses. Apesar de o Bracketeer™ ser poderoso, ele não tem flexibilidade. Se o código-fonte tiver qualquer colchete, chave ou parêntese desbalanceado, o Bracketeer™ trava e precisa ser reiniciado. Para evitar esse cenário, você começa a escrever um código capaz de verificar se colchetes, chaves e parênteses estão balanceados antes de tentar rodá-lo no Bracketeer™.
Dada uma string que contém colchetes [], chaves {}, parênteses () ou qualquer combinação deles, verifique se todos os pares estão corretamente pareados e aninhados.
Quaisquer outros caracteres devem ser ignorados.
Por exemplo, "{what is (42)}?" está balanceada e "[text}" não está.
Existem muitas formas de fazer este exercício, mas preparamos alguns stubs adicionais para quem quiser praticar a escrita dos próprios manipuladores de habilidades.
A assinatura da função auxiliar checkBalance fornecida para este exercício usa um requisito de habilidade, {Stack}.
A habilidade Stack já está definida para você, mas o manipulador, Stack.run, não!
Se você quiser, pode implementar as funções Stack.run, checkBalance e isPaired.
Os testes vão rodar mesmo se você optar por não implementar este exercício com habilidades.
Crie sua conta no Exercism para aprender e dominar Unison com 53 exercícios e mentoria humana de verdade, tudo de graça.