Back to SDS/2 Parametric Scripts
# Posted
on http://www.thescripts.com/forum/forum152.html
# Returns a list
(Python 2.3) or set (Python 2.4) with all
# possible
letter combinations of the argument string
# Python 2.3
def anagrams(s):
if s ==
"":
return [s]
else:
ans
= []
for an in
anagrams(s[1:]):
for pos in
range(len(an)+1):
ans.append(an[:pos]+s[0]+an[pos:])
u={}
for i in ans:
u[i]=1
return u.keys()
# Python 2.4
def anagrams(s):
if s ==
"":
return [s]
else:
ans
= set()
for an in
anagrams(s[1:]):
for pos in
range(len(an)+1):
ans.add(an[:pos]+s[0]+an[pos:])
return ans
“””
>>> anagrams('tor')
['tro', 'tor', 'rto',
'otr', 'rot', 'ort']
>>> anagrams('oot')
['oot',
'too', 'oto']
>>> anagrams('ebre')
['bere', 'eebr', 'rebe', 'ereb', 'eerb', 'eber', 'beer', 'erbe', 'rbee', 'reeb', 'bree', 'ebre']
>>>