[pyar] [OT] - Checkeando parentesis balanceados.

Tordek kedrot en gmail.com
Vie Jun 18 16:20:45 ART 2010


>
> def balance(s):
>    cont = 0
>    for x in s:
>        if cont<0:
>            return False
>        else:
>            cont = cont-1 if x == ')' else cont+1
>    return True if cont == 0 else False
>


Pasa los tests, pero solo para el lenguaje de paréntesis balanceados; no
toma en cuenta que adentro del string hayan otros caracteres.

Yo tenía la misma solución que matigro:

def is_balanced(s):
    count = 0

    for c in s:
       if c == '(':
           count += 1
       elif c == ')':
           count -= 1
           if count < 0:
               return false

    return count == 0


Si no, simil a Roberto, pero en haskell, dije:

import Data.List

heads = reverse . map reverse . tails . reverse

count = sum . map transform

transform '(' = 1
transform ')' = -1
transform _   = 0

balancedParentheses x = (count x == 0) && (all (>= 0) . map count . heads $
x)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100618/15737768/attachment.html>


More information about the pyar mailing list