Estou tentando escrever um programa que exiba todos os anagramas de uma dada palavra mas sem usar o módulo itertools
Inicialmente pensei em fazer uma solução recursiva, mas não consegui todos os anagramas:
def anagrams(word):
if len(word) == 1:
return word
elif len(word) == 2:
return word[1:] + word[0], word[0] + word[1:]
else:
return word[0] + str(anagrams(word[1:])), str(anagrams(word[1:])) + word[0]
word = "abc"
print(anagrams(word))
A saída foi:
("a('cb', 'bc')", "('cb', 'bc')a")
Além da saída estar bem "feia", só obtive 4 dos 6 anagramas possíveis:
acb, abc, cba,bca
Alguma ideia de como melhorar o código ou uma solução melhor?