Advertisement
Guest User

balance de parentesis

a guest
Jun 18th, 2010
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.93 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4.  
  5. def parentesis(data):
  6.     stack=[]
  7.     for p in data:
  8.         if p == '(':
  9.             stack.append(p)
  10.         elif p == ')':
  11.             if len(stack) == 0:
  12.                 return False
  13.             stack.pop(-1)
  14.         else:
  15.             raise Exception("simbolo invalido: " + str(p))
  16.     return len(stack) == 0
  17.  
  18. def parentesis2(data):
  19.     stack=[]
  20.     f={'(': (lambda x: stack.append(x)), ')': (lambda x: stack.pop(-1))}
  21.     try:
  22.         map(lambda x: f[x](x), data)
  23.     except IndexError:
  24.         return False
  25.     return len(stack) == 0
  26.  
  27. def parentesis3(data):
  28.     valores = [x == '(' and 1 or -1 for x in data]
  29.     tmp=0
  30.     for x in valores:
  31.         if tmp < 0: return False
  32.         tmp += x
  33.     return tmp==0
  34.  
  35. def parentesis4(data):
  36.     return 0 == reduce(lambda a, b: a < 0 and (-2*len(data)) or a + b, [x == '(' and 1 or -1 for x in data], 0)
  37.  
  38. print parentesis4(sys.argv[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement