[pyar] [OT] - Checkeando parentesis balanceados.
Roberto Alsina
ralsina en netmanagers.com.ar
Vie Jun 18 13:53:45 ART 2010
On Friday 18 June 2010 13:24:11 Mariano Garcia Berrotarán wrote:
> a alguien se le ocurre alguna forma de hacerlo usando list comprehension ?
>
> alguna forma chiflada de hacerlo?
No sé si chiflada, pero...
Lo primero es poner los parentesis en forma numérica:
>>> s="()"
>>> t="()()"
>>> [(-1)**s.find(c) for c in t]
[1, -1, 1, -1]
Lo siguiente es decidir cuando falla:
1) Cuando la suma no es 0
2) Cuando la suma incremental se vuelve negativa en algún momento
O sea, balanceado sería algo como
def balanceado(t):
t1=[(-1)**s.find(c) for c in t]
if any (map (lambda x: x<0, [sum (t1[:i]) for i in range(len(t1))])) or
t1[-1]:
return False
return True
No lo probé mucho pero debería andar....
More information about the pyar
mailing list