1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| def all_words ( alphabet,nb ):
max = len( alphabet )-1 # max = dernier indice autorisé
res = [0]*nb # tableau d'indices [0,0,0], [1,0,0], [2,0,0], ... [max,0,0], [0,1,0] ... [max,max,max]
yield ''.join( [alphabet[i] for i in res] )
while 1:
for i in range( nb ):
res[i] += 1 # incrémente le + à gauche
if res[i] <= max: # si on n'a pas dépassé max,
break # on peut sortir le resultat
if i == nb-1 : # si on vient de faire un tour complet (le + à droite va repasser à 0)
return # c'est terminé, on a généré toutes les combis
res[i] = 0 # on a dépassé max => on repasse à 0 et on va incrémenter le + à gauche suivant
yield ''.join( [alphabet[i] for i in res] )
for i in all_words( 'abcd',3 ):
print i |
Partager