Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@
]
},
{
"slug": "bracket-push",
"slug": "matching-brackets",
"uuid": "4d456646-3a9b-4393-9558-6b30e5c1039c",
"core": false,
"unlocked_by": "pangram",
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Bracket Push
# Matching Brackets

Given a string containing brackets `[]`, braces `{}`, parentheses `()`,
or any combination thereof, verify that any and all pairs are matched
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const bracketPush = (input) => {
export const matchingBrackets = (input) => {
if (input.length === 0) {
return true;
}
Expand Down Expand Up @@ -27,7 +27,7 @@ export const bracketPush = (input) => {
if (typeof bracketArray[topNumber + 1] !== 'undefined') {
if (bracketArray[topNumber + 1] === closeArray[k]) {
bracketArray.splice(topNumber, 2);
return bracketPush(bracketArray);
return matchingBrackets(bracketArray);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
import { bracketPush } from './bracket-push';
import { matchingBrackets } from './matching-brackets';

describe('bracket push', () => {
test('checks for appropriate bracketing in a set of brackets', () => {
expect(bracketPush('{}')).toEqual(true);
expect(matchingBrackets('{}')).toEqual(true);
});

xtest('returns false for unclosed brackets', () => {
expect(bracketPush('{{')).toEqual(false);
expect(matchingBrackets('{{')).toEqual(false);
});

xtest('returns false if brackets are out of order', () => {
expect(bracketPush('}{')).toEqual(false);
expect(matchingBrackets('}{')).toEqual(false);
});

xtest('checks bracketing in more than one pair of brackets', () => {
expect(bracketPush('{}[]')).toEqual(true);
expect(matchingBrackets('{}[]')).toEqual(true);
});

xtest('checks bracketing in nested brackets', () => {
expect(bracketPush('{[]}')).toEqual(true);
expect(matchingBrackets('{[]}')).toEqual(true);
});

xtest('rejects brackets that are properly balanced but improperly nested', () => {
expect(bracketPush('{[}]')).toEqual(false);
expect(matchingBrackets('{[}]')).toEqual(false);
});

xtest('checks bracket closure with deeper nesting', () => {
expect(bracketPush('{[)][]}')).toEqual(false);
expect(matchingBrackets('{[)][]}')).toEqual(false);
});

xtest('checks bracket closure in a long string of brackets', () => {
expect(bracketPush('{[]([()])}')).toEqual(true);
expect(matchingBrackets('{[]([()])}')).toEqual(true);
});
});