[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