[pyar] Problema interesante: el anti-string
Pablo Ziliani
pablo en kultroom.com
Mie Ago 4 17:13:12 ART 2010
Roberto Alsina wrote:
> On Wednesday 04 August 2010 16:48:36 Pablo Ziliani wrote:
>
>> Roberto Alsina wrote:
>>
>>> On Wednesday 04 August 2010 16:41:27 Pablo Ziliani wrote:
>>>
>>>
>>>
>>>> >>> S1 = [u'papa', u'foo', u'pepe', u'bar', u'python']
>>>> >>> chars = sorted(set(''.join(S1)))
>>>> >>> antichars = dict(zip(chars, reversed(chars)))
>>>> >>> S = [(word, u''.join(antichars[char] for char in word)) for word in
>>>>
>>>> S1] >>> sorted(S, key=lambda x:x[0])
>>>> [(u'bar', u'tye'), (u'foo', u'phh'), (u'papa', u'fyfy'), (u'pepe',
>>>> u'frfr'), (u'python', u'fabohn')]
>>>>
>>>> >>> sorted(S, key=lambda x:x[1])
>>>>
>>>> [(u'python', u'fabohn'), (u'pepe', u'frfr'), (u'papa', u'fyfy'),
>>>> (u'foo', u'phh'), (u'bar', u'tye')]
>>>>
>>>>
>>>>
>>>>
>>> Interesante :-)
>>>
>>> Pero si quiero agregar un nuevo string tengo que regenerar antichars, no?
>>>
>> a no ser que te generes antes un the_worldst_biggest_mega_antichars :)
>>
>
> Con 16MB tengo el mas grande posible, no? ;-)
Con una tabla de 16Mb*, es casi seguro que más de una palabra va a
llevar caracteres no-imprimibles o que no son letras. Si aceptás que eso
es así, este algoritmo es demasiado ineficiente. Quizás llegues a una
solución intermedia implementando anticollates® :)
* si te referís a alguna en particular, no entendí
More information about the pyar
mailing list