## My solution to the second Colossal Cue Adventure puzzle

A little bit of lunchtime coding.

```def closeBracket(openbracket):
if openbracket == '{':
return '}'
elif openbracket == '(':
return ')'
elif openbracket == '[':
return ']'

if __name__ == "__main__":
testcase = ('{{[{{{{}}{{}}}[]}[][{}][({[(({{[][()()]}}{[{{{}}}]}))][()]{[[{((()))({}(())[][])}][]()]}{()[()]}]})][]]}{{}[]}}')
teststack = []
position = 0

for c in testcase:
if c == '{' or c == '(' or c == '[':
#push the open character on the stack
teststack.append(c)

if c == '}' or c == ')' or c == ']':
#check first to see if the stack is empty and
#if it is report the position
if not teststack:
print "Failed at position %d" % position
break
#it's not empty, so pop the last appended character off
f = teststack.pop()
#if this character is the respective close character
#of the character that got popped off, we're good
if closeBracket(f) == c:
print "All good at position %d" % position
#if the popped character isn't the respective close
#character, then fail and report position
elif closeBracket(f) != c:
print "Failed at position %d" % position
position = position + 1

```

Oof, the source code formatting in WordPress is so bad. I guess my interspersed comments aren’t helping readability. Here’s a Gist: https://gist.github.com/4595437

I used Python because it has .append() and .pop() for lists ready to go. Every open bracket in the string in testcase gets pushed onto the stack (appended onto the list), and when a close bracket is encountered I pop the last pushed open bracket off the stack. This popped off open bracket is sent to closeBracket(), and closeBracket() returns the respective close bracket. So, if the encountered close bracket matches the respective close bracket of the popped of open bracket, we’re all good. If it doesn’t (or if the list is empty) it fails and reports the position.

A ham-fisted explanation for a ham-fisted program.

Had I not already been familiar with the notion of a stack I’d have been super lost on puzzle #2. I worry that there is a new trick to the third puzzle, so this might take me a bit longer to figure out.

I think that this whole puzzle set is part of Cueup’s job application process. I hope they eventually post some of the interesting solutions their applicants submit. Nice of them to make it public – it’s rather enjoyable (so far!).

This entry was posted in Hobbies, Programming. Bookmark the permalink.

### 3 Responses to My solution to the second Colossal Cue Adventure puzzle

1. R Koneri says:

Hey, I’m stuck with the below replies since a day and a half.
“Near you is a rabbit using a computer, reading JIRA tickets.”
“I think I saw something in the ticket about newlines not counting as characters.”