[pyar] Challenge at owasp

Pablo Ziliani pablo en kultroom.com
Jue Jun 24 08:56:00 ART 2010


Juanjo Conti wrote:
> Hay que formar la mayor cantidad de palabras en ingles usando las 
> letras de 'omegapoint' (una empresa).

¿las letras en las mismas cantidades? (dos letras "o", una letra cada 
una del resto)

> Mi idea es generar todas las combinaciones que pueda e ir chequeando 
> contra aspell. Que les parece? O algun diccionario?

Dependiendo de los requisitos, si conseguís un diccionario es probable 
que sea más fácil validar cada una de sus claves del diccionario que 
generar todas las posibilidades primero y validar después.

Exactamente lo contrario de lo que acabo de decir sería algo como:

 >>> from itertools import ifilter, chain, permutations
 >>> def xbox(dictionary, word='omegapoint', min_letters=1, 
max_letters=None):
...     if max_letters is None:
...        max_letters = len(word)
...
...     return set(dictionary).intersection(
...         chain(*[[''.join(thing) for thing in permutations(word, n)] 
for n in range(min_letters, max_letters+1)])
...     )
...
 >>> xbox(set(['omega', 'point', 'perro', 'gato']))
set(['gato', 'omega', 'point'])


Suerte!



More information about the pyar mailing list