Tracks
/
Unison
Unison
/
Exercises
/
Matching Brackets
Matching Brackets

Matching Brackets

Hard

Introduction

You're given the opportunity to write software for the Bracketeer™, an ancient but powerful mainframe. The software that runs on it is written in a proprietary language. Much of its syntax is familiar, but you notice lots of brackets, braces and parentheses. Despite the Bracketeer™ being powerful, it lacks flexibility. If the source code has any unbalanced brackets, braces or parentheses, the Bracketeer™ crashes and must be rebooted. To avoid such a scenario, you start writing code that can verify that brackets, braces, and parentheses are balanced before attempting to run it on the Bracketeer™.

Instructions

Given a string containing brackets [], braces {}, parentheses (), or any combination thereof, verify that any and all pairs are matched and nested correctly. Any other characters should be ignored. For example, "{what is (42)}?" is balanced and "[text}" is not.

Implementation

There are many ways to accomplish this exercise, but we've provided some additional stubs for folks who'd like to practice writing their own ability handlers.

The signature for the checkBalance helper function given for this exercise makes use of an ability requirement, {Stack}. The ability Stack is defined for you, but the handler, Stack.run is not! If you chose, you can implement the Stack.run, checkBalance, and isPaired function. The tests will run even if you choose not to implement this exercise with abilities.


Source

Ginna Baker
Edit via GitHub The link opens in a new window or tab
Unison Exercism

Ready to start Matching Brackets?

Sign up to Exercism to learn and master Unison with 53 exercises, and real human mentoring, all for free.