[pyar] Problema interesante: el anti-string

Claudio Freire klaussfreire en gmail.com
Jue Ago 5 11:48:09 ART 2010


2010/8/5 John Rowland Lenton <john.lenton en canonical.com>

> On Wed, Aug 04, 2010 at 04:03:02PM -0300, Roberto Alsina wrote:
> >
> > Forma más fácil del problema:
> >
> > Dado un string S, crear una funcion f tal que  S1>S2 => f(S1) < f(S2)
> >
> > Ahí creo que es más claro :-)
>
> creo que ya tenés una solución, pero tengo otra (o será la misma? :)
>
> y ambas usan el hecho de que python no ordena por colación (que
> depende del locale) sino por el ord() del unicode.
>


Digo... ¿no es más fácil crear un wrapper del str original que compare al
revés y chau?

>>> from antistr import antistr
>>> l = map(antistr,map(str,range(10)))
>>> l
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> l.sort()
>>> l
['9', '8', '7', '6', '5', '4', '3', '2', '1', '0']
>>>

Antistr:

class antistr(object):
    __slots__ = ['s']
    def __init__(self, s):
        self.s = s
    def __cmp__(self, o):
        return -cmp(self.s, str(o))
    def __lt__(self, o):
        return self.s > str(o)
    def __le__(self, o):
        return self.s >= str(o)
    def __gt__(self, o):
        return self.s < str(o)
    def __ge__(self, o):
        return self.s <= str(o)
    def __eq__(self, o):
        return self.s == str(o)
    def __ne__(self, o):
        return self.s != str(o)
    def __str__(self):
        return self.s
    def __repr__(self):
        return repr(self.s)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100805/82f8aa84/attachment.html>


More information about the pyar mailing list