Apenas para apresentar a resposta de uma dúvida levantada pelo @Thalles Rafael da Silva Correia, a qual transcrevo: Meu gerador turbinado para a palavra "lóiigica" está gerando um numero diferente de palavras do que do instrutor, mas não estou conseguindo encontrar o erro. O numero de palavras geradas pelo código do instrutor é 787396 contra 691744 no meu. Segue meu código:
def insere_letras(fatias):
novas_palavras = []
letras = 'abcdefghijklmnopqrstuvwxyzàáâãèéêìíîòóôõùúûç'
for E, D in fatias:
for letra in letras:
novas_palavras.append(E + letra + D)
return novas_palavras
def deletando_caracteres(fatias):
novas_palavras = []
for E, D in fatias:
novas_palavras.append(E + D[1:])
return novas_palavras
def troca_letra(fatias):
novas_palavras = []
letras = 'abcdefghijklmnopqrstuvwxyzàáâãèéêìíîòóôõùúûç'
for E, D in fatias:
for letra in letras:
novas_palavras.append(E + letra + D[1:])
return novas_palavras
def inverte_letra(fatias):
novas_palavras = []
for E, D in fatias:
if len(D) > 1:
novas_palavras.append(E + D[1] + D[0] + D[2:])
return novas_palavras
def gerador_palavras(palavra):
fatias = []
for i in range(len(palavra)+1):
fatias.append((palavra[:i],palavra[i:]))
palavras_geradas = insere_letras(fatias)
palavras_geradas += deletando_caracteres(fatias)
palavras_geradas += troca_letra(fatias)
palavras_geradas += inverte_letra(fatias)
return palavras_geradas
palavra = "lóiigica"
def gerador_turbinado(palavras_geradas):
novas_palavras = []
for palavra in palavras_geradas:
novas_palavras += gerador_palavras(palavra)
return novas_palavras
palavras_g = gerador_turbinado(gerador_palavras(palavra))
"lógica" in palavras_g
Tal erro acontece porque na variável que contém a lista de letras faltam algumas letras acentuadas, como "ĩ, ẽ, ũ", causando o número reduzido de palavras quando comparado com o código do professor.