Tens a oportunidade de escrever software para o Bracketeer™, um mainframe antigo mas poderoso. O software que nele corre está escrito numa linguagem proprietária. Grande parte da sua sintaxe é familiar, mas reparas que há imensos parênteses retos, chavetas e parênteses. Apesar de o Bracketeer™ ser poderoso, falta-lhe flexibilidade. Se o código-fonte tiver parênteses retos, chavetas ou parênteses desequilibrados, o Bracketeer™ avaria e tem de ser reiniciado. Para evitar esse cenário, começas a escrever código capaz de verificar se os parênteses retos, as chavetas e os parênteses estão equilibrados antes de tentares executá-lo no Bracketeer™.
Dada uma string que contém parênteses retos [], chavetas {}, parênteses (), ou qualquer combinação destes, verifica se todos os pares estão corretamente emparelhados e aninhados.
Quaisquer outros carateres devem ser ignorados.
Por exemplo, "{what is (42)}?" está equilibrado e "[text}" não está.
Há muitas formas de realizar este exercício, mas fornecemos alguns stubs adicionais para quem quiser praticar a escrita dos seus 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 está definida para ti, mas o manipulador, Stack.run, não está!
Se quiseres, podes implementar as funções Stack.run, checkBalance e isPaired.
Os testes vão correr mesmo que escolhas não implementar este exercício com habilidades.
Inscreve-te no Exercism para aprenderes e dominares Unison com 53 exercícios, e mentoria humana real, tudo grátis.