Parcours
/
Unison
Unison
/
Exercices
/
Parenthèses équilibrées
Parenthèses équilibrées

Parenthèses équilibrées

Difficile

Introduction

Tu as l'occasion d'écrire un logiciel pour le Bracketeer™, un mainframe ancien mais puissant. Le logiciel qui tourne dessus est écrit dans un langage propriétaire. Sa syntaxe est en grande partie familière, mais tu remarques beaucoup de crochets, d'accolades et de parenthèses. Bien que le Bracketeer™ soit puissant, il manque de flexibilité. Si le code source contient des crochets, des accolades ou des parenthèses qui ne sont pas équilibrés, le Bracketeer™ plante et doit être redémarré. Pour éviter un tel scénario, tu commences à écrire du code capable de vérifier que les crochets, les accolades et les parenthèses sont équilibrés avant d'essayer de l'exécuter sur le Bracketeer™.

Instructions

Étant donné une string contenant des crochets ([]), des accolades ({}), des parenthèses (()), ou n'importe quelle combinaison de ceux-ci, vérifie que toutes les paires sont correctement appariées et imbriquées. Tous les autres caractères doivent être ignorés. Par exemple, "{what is (42)}?" est équilibré et "[text}" ne l'est pas.

Implémentation

Il y a de nombreuses façons de faire cet exercice, mais on a prévu quelques stubs supplémentaires pour celles et ceux qui aimeraient s'entraîner à écrire leurs propres ability handlers.

La signature de la fonction utilitaire checkBalance fournie pour cet exercice utilise une exigence d'ability, {Stack}. L'ability Stack est définie pour toi, mais le handler, Stack.run, ne l'est pas ! Si tu le souhaites, tu peux implémenter les fonctions Stack.run, checkBalance et isPaired. Les tests s'exécuteront même si tu choisis de ne pas faire cet exercice avec les abilities.


Source

Ginna Baker
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Unison Exercism

Prêt à commencer Parenthèses équilibrées ?

Inscris-toi sur Exercism pour apprendre et maîtriser Unison avec 53 exercices, et un vrai mentorat humain, le tout gratuitement.