This came up while talking to a friend and I thought I\'d ask here since it\'s an interesting problem and would like to see other people\'s solutions.
The task is to
ruby version:
def foo output, open, close, pairs if open == pairs and close == pairs p output else foo(output + '(', open+1, close, pairs) if open < pairs foo(output + ')', open, close+1, pairs) if close < open end end foo('', 0, 0, 3)