def variations(str, char_variations):
result = []
for i in range(0,len(str)):
tmp_result = []
c = str[i]
vars = char_variations.get(c)
if vars is None:
vars = []
vars = vars + [c]
if len(result) > 0:
for partial_r in result:
for v in vars:
tmp_result.append(partial_r + v)
else:
for v in vars:
tmp_result.append(v)
result = tmp_result
return result
char_variations = { 'a': ['0','o'] , 'l': ['1' , 'I'] }
print variations ('allo' , char_variations)
An here is a recursive version that has been implemented and tested
def variations(str,char_variations):
if len(str) == 0:
return []
c = str[0]
vars = char_variations.get(c)
if len(str) == 1:
if vars:
return vars
else:
return [c]
if vars is None:
vars = []
vars = vars + [c]
subL = variations (str, char_variations)
L = []
for l in subL:
for v in vars:
L += [ v + l ]
return L
char_variations = { 'a': ['0','o'] , 'l': ['1' , 'I'] }
print map ( str , variations (list ('allo') , char_variations) )
Aucun commentaire:
Enregistrer un commentaire