Tienes la oportunidad de escribir software para Bracketeer™, un mainframe antiguo pero potente. El software que se ejecuta en él está escrito en un lenguaje propietario. Gran parte de su sintaxis te resulta familiar, pero notas muchísimos corchetes, llaves y paréntesis. A pesar de que Bracketeer™ es potente, carece de flexibilidad. Si el código fuente tiene algún corchete, llave o paréntesis desbalanceado, Bracketeer™ se bloquea y hay que reiniciarlo. Para evitar ese escenario, empiezas a escribir código que pueda verificar que los corchetes, las llaves y los paréntesis están balanceados antes de intentar ejecutarlo en Bracketeer™.
Dado un string que contiene corchetes [], llaves {}, paréntesis () o cualquier combinación de estos, verifica que todos los pares estén emparejados y anidados correctamente.
Cualquier otro carácter debe ignorarse.
Por ejemplo, "{what is (42)}?" está balanceado y "[text}" no.
Hay muchas formas de resolver este ejercicio, pero incluimos algunos stubs adicionales para quienes quieran practicar cómo escribir sus propios ability handlers.
La firma de la función auxiliar checkBalance que se da para este ejercicio hace uso de un requisito de ability, {Stack}.
La ability Stack está definida para ti, pero el handler, Stack.run, no lo está.
Si quieres, puedes implementar las funciones Stack.run, checkBalance e isPaired.
Los tests se ejecutarán igual aunque decidas no implementar este ejercicio con abilities.
Regístrate en Exercism para aprender y dominar Unison con 53 ejercicios y mentoría humana real, todo gratis.