[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