Implemente a função anagrama(), que calcula anagramas de determinada palavra. Um anagrama da palavra A é uma palavra B que pode ser formada rearrumando as letras de A. Por exemplo, a palavra “pot” é um anagrama da palavra “top”. Sua função tomará como entrada o nome de um arquivo de palavras e também uma palavra, e exibirá todas as palavras no arquivo que sejam anagramas da palavra informada. Nos próximos exemplos, use o arquivo words.txt como seu arquivo de palavras.
Arquivo: words.txt
Arquivo: https://easyupload.io/bl4w3d
>>> anagrams('words.txt', 'trace')
crate
cater
react
O que eu fiz:
def permutations(lst):
if not lst:
return [[]]
res = []
for e in lst:
temp = lst[:]
temp.remove(e)
res.extend([[e] + r for r in permutations(temp)])
return res
def anagrama(file, palavra):
lista = permutations(list(palavra))
pal =""
anas = []
for i in lista:
for j in i:
pal +=j
anas.append(pal)
pal =""
print(anas)# lista de anagramas
with open(file) as f:
for palavra in f:
#print(palavra)
while palavra in anas:
print(palavra)
anagrama("words.txt", "trace")
Aparentemente, a parte que verifica se alguma palavra no arquivo está na lista de anagramas não funciona:
for palavra in f:
#print(palavra)
while palavra in anas:
print(palavra)
Como corrigir? O que eu fiz de errado?