Um anagrama (do grego ana = voltar ou repetir + graphein = escrever) é uma espécie de jogo de palavras, resultando do rearranjo das letras de uma palavra ou frase para produzir outras palavras, utilizando todas as letras originais exatamente uma vez. Um exemplo conhecido é o nome da personagem Iracema, claro anagrama de América, no romance de José de Alencar. Implemente a função anagrama(frase1, frase2). Os parâmetros frase1 e frase2 são strings. A função deverá retornar True se forem anagramas e False caso contrário. Despreze acentuação (por exemplo: ã = a e ç = c) e os espaços não devem ser computados para efeitos do anagrama.
Passo 1
Beleza, vamos entender o que a gente precisa fazer aqui. O exercício pede para a gente criar uma função chamada
anagrama
que recebe duas frases como entrada (frase1
e frase2
). A função deve verificar se essas duas frases são anagramas, ou seja, se elas têm as mesmas letras, só que em uma ordem diferente. Por exemplo, “amor” e “Roma” são anagramas. Além disso, temos que ignorar acentuação (como transformar “ã” em “a” e “ç” em “c”) e também não considerar os espaços entre as palavras. Para resolver isso, vamos precisar trabalhar com manipulação de strings e entender como comparar as letras de duas frases.Passo 2
Primeiro, vamos pensar em como tratar as acentuações e os espaços. Precisamos limpar as frases para que todas as letras fiquem sem acentos e sem espaços. Para isso, podemos usar algumas ferramentas de manipulação de strings em Python. Uma maneira de remover acentos é usando a biblioteca
unicodedata
, que nos ajuda a normalizar as letras.Passo 3
Vamos importar a biblioteca
unicodedata
e criar uma função auxiliar para remover os acentos das letras. Essa função vai normalizar a string, separando os caracteres base dos acentos, e depois juntar apenas os caracteres que não são acentos.import unicodedata
def remove_acentos(texto):
texto_normalizado = unicodedata.normalize('NFD', texto)
texto_sem_acentos = ''.join(char for char in texto_normalizado if unicodedata.category(char) != 'Mn')
return texto_sem_acentos
Passo 4
Agora que temos a função para remover os acentos, vamos criar a função principal
anagrama
. Nessa função, vamos seguir alguns passos:- Remover acentos de ambas as frases usando a função que criamos.
- Remover os espaços das frases para que eles não sejam considerados.
- Transformar todas as letras em minúsculas para que a comparação não seja sensível a maiúsculas e minúsculas.
- Contar a frequência de cada letra em ambas as frases.
- Comparar essas contagens para determinar se são anagramas.
Passo 5
Vamos implementar os passos mencionados na função
anagrama
.def anagrama(frase1, frase2):
Passo 6
frase1_sem_acentos = remove_acentos(frase1)
frase2_sem_acentos = remove_acentos(frase2)
frase2_sem_acentos = remove_acentos(frase2)
Passo 7
frase1_sem_espacos = frase1_sem_acentos.replace(’ ‘, ‘’)
frase2_sem_espacos = frase2_sem_acentos.replace(’ ', ‘’)
frase2_sem_espacos = frase2_sem_acentos.replace(’ ', ‘’)
Passo 8
frase1_limpa = frase1_sem_espacos.lower()
frase2_limpa = frase2_sem_espacos.lower()
frase2_limpa = frase2_sem_espacos.lower()
Passo 9
contagem_frase1 = {}
contagem_frase2 = {}
contagem_frase2 = {}
for letra in frase1_limpa:
contagem_frase1[letra] = contagem_frase1.get(letra, 0) + 1
for letra in frase2_limpa:
contagem_frase2[letra] = contagem_frase2.get(letra, 0) + 1
Passo 10
return contagem_frase1 == contagem_frase2
Passo 11
Vamos testar nossa função com alguns exemplos para ver se está funcionando direitinho.
# Exemplo 1
print(anagrama("Iracema", "America")) # Deve retornar True
# Exemplo 2
print(anagrama("amor", "Roma")) # Deve retornar True
# Exemplo 3
print(anagrama("Python", "Java")) # Deve retornar False
Resposta
A função
anagrama
retorna True
se as duas frases forem anagramas e False
caso contrário, considerando as regras de ignorar acentuação e espaços.