Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
brackit solution in Clear category for Brackets by tagadajones
def checkio(expression):
BRACKET_DICT = {'(': ')', '{': '}', '[': ']'}
OPEN_BRACKETS = BRACKET_DICT.keys()
CLOSED_BRACKETS = BRACKET_DICT.values()
brackets = [e for e in expression if e in OPEN_BRACKETS or e in CLOSED_BRACKETS]
if len(brackets) % 2 != 0:
return False
i = 0
while len(brackets):
if brackets[i] in OPEN_BRACKETS:
i += 1
else:
bracket_open = brackets[i-1]
bracket_closed = brackets[i]
if BRACKET_DICT[bracket_open] != bracket_closed:
return False
brackets = brackets[:i-1] + brackets[i+1:]
i -= 1
return True
# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio("((5+3)*2+1)") is True, "Simple"
assert checkio("(3+{1-1)}") is False, ") is alone inside {}"
assert checkio("[1+1]+(2*2)-{3/3}") is True, "Different operators"
assert checkio("(({[(((1)-2)+3)-3]/3}-3)") is False, "One is redundant"
assert checkio("2+3") is True, "No brackets, no problem"
May 9, 2019