[pyar] Problema interesante: el anti-string
Alejandro Santos
listas en alejolp.com
Dom Ago 8 22:00:44 ART 2010
2010/8/8 Lucio Torre <lucio.torre en gmail.com>:
> 2010/8/5 Anthony Lenton <antoniolenton en gmail.com>:
>> Si podés asumir que hay un string "máximo" (chr(255)*sys.maxint?) sí
>> se hace posible, ya que transformaste los strings en un conjunto
>> cerrado en ambas puntas.
>
> Tambien se puede definir una f' basada en la f anterior tal que la
> imagen de f() no sea los strings sino los strings terminados en T, tal
> que "T" sea siempre mayor que cualquier string. Entonces "" (el string
> menor) se mapea a "T", que es siempre mayor, y f'("a") == f("a") +"
> T", f'("b") == f("b") + "T", y asi un string mas corto esta siempre
> despues que uno mas largo.
>
> Tambien si no queremos extender el dominio podemos usar max_char como
> T y en lugar de limitar por largo limitar por utilizacion de un
> caracter que no usa nadie.
>
La idea es encontrar un f que de vuelta el anti-string, con la
propiedad de que f(f(palabra)) == palabra.
Usando bytes, el T sería chr(255), pero el resultado de f.f habria que
cortarlo en la primer ocurrencia del inverso de T, o sea chr(0).
Y eso estaría bien, porque la ordenacion de strings compara de a pares
de caracteres, cortando en la primer diferencia. Y cuando se comparan
strings de diferente longitud con el mas largo siendo una extension
del otro, el orden de los strings se hace por el primer caracter
despues de la parte en común, que es lo mismo que decis que el string
mas corto tiene un chr(0) al final.
Una implementación sería la de mi mensaje anterior.
--
Alejandro Santos
http://www.alejandrosantos.com.ar
More information about the pyar
mailing list