2018-10-04 13:37:37 +00:00
---
title: Balanced brackets
id: 594dc6c729e5700999302b45
challengeType: 5
---
## Description
< section id = 'description' >
< p > Determine whether a generated string of brackets is balanced; that is, whether it consists entirely of pairs of opening/closing brackets (in that order), none of which mis-nest.< / p >
Examples:
< p class = 'rosetta__paragraph' > (empty) true< / p >
< p class = 'rosetta__paragraph' > < code > []< / code > true< / p >
< p class = 'rosetta__paragraph' > < code > ][< / code > false< / p >
< p class = 'rosetta__paragraph' > < code > [][]< / code > true< / p >
< p class = 'rosetta__paragraph' > < code > ][][< / code > false< / p >
< p class = 'rosetta__paragraph' > < code > []][[]< / code > false< / p >
< p class = 'rosetta__paragraph' > < code > [[[[]]]]< / code > true< / p >
< / section >
## Instructions
< section id = 'instructions' >
< / section >
## Tests
< section id = 'tests' >
```yml
tests:
- text: < code > isBalanced</ code > is a function.
2018-10-08 00:01:53 +00:00
testString: 'assert(typeof isBalanced === "function", "< code > isBalanced< / code > is a function.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(isBalanced(testCases[0]), "< code > isBalanced("[]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("]][[[][][][]][")</ code > should return false.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[1]), "< code > isBalanced("]][[[][][][]][")< / code > should return false.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[][[[[][][[[]]]]]]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(isBalanced(testCases[2]), "< code > isBalanced("[][[[[][][[[]]]]]]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[3]), "< code > isBalanced("][")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[[]]]][[]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[4]), "< code > isBalanced("[[[]]]][[]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][[]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[5]), "< code > isBalanced("][[]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][[][]][[[]]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[6]), "< code > isBalanced("][[][]][[[]]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[][]]][")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[7]), "< code > isBalanced("[[][]]][")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[[]]][[]]]][][[")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[8]), "< code > isBalanced("[[[]]][[]]]][][[")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[]][[]]][[[[][]]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[9]), "< code > isBalanced("[]][[]]][[[[][]]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][]][[][")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[10]), "< code > isBalanced("][]][[][")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[]][[][]]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(isBalanced(testCases[11]), "< code > isBalanced("[[]][[][]]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[]]")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(isBalanced(testCases[12]), "< code > isBalanced("[[]]")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("]][]][[]][[[")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[13]), "< code > isBalanced("]][]][[]][[[")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][]][][[")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[14]), "< code > isBalanced("][]][][[")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("][][")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[15]), "< code > isBalanced("][][")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: '< code > isBalanced("[[]]][][][[]][")</ code > should return true.'
2018-10-08 00:01:53 +00:00
testString: 'assert(!isBalanced(testCases[16]), "< code > isBalanced("[[]]][][][[]][")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
- text: < code > isBalanced("")</ code > should return true.
2018-10-08 00:01:53 +00:00
testString: 'assert(isBalanced(testCases[17]), "< code > isBalanced("")< / code > should return true.");'
2018-10-04 13:37:37 +00:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'js-seed' >
```js
function isBalanced (str) {
// Good luck!
return true;
}
```
< / div >
### After Test
< div id = 'js-teardown' >
```js
console.info('after the test');
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
function isBalanced (str) {
2018-10-08 00:01:53 +00:00
if (str === ") return true;
2018-10-04 13:37:37 +00:00
let a = str;
let b;
do {
b = a;
2018-10-08 00:01:53 +00:00
a = a.replace(/\[\]/g, ");
2018-10-04 13:37:37 +00:00
} while (a !== b);
return !a;
}
```
< / section >