Anagram¶
But de l'éxercice¶
Le but de l'exercice est d'ecrire une fonction is_anagram, dans un fichier is_anagram.py dont le but est de déterminer si deux textes sont des anagrammes.
Et voila le script de tests unitaires: test_is_anagram.py
Qu'est-ce qu'une Anagramme¶
Une Anagramme "est une construction fondée sur une figure de style qui inverse ou permute les lettres d'un mot ou d'un groupe de mots pour en extraire un sens ou un mot nouveau." (Extrait de Wikipedia)
Exercice de base¶
Ecrire une fonction is_anagram qui prend deux textes et qui retourne vrai si ceux-ci sont des anagrammes:
>>> is_anagram("titi", "toto")
False
>>> is_anagram("ironique", "onirique")
True
>>> is_anagram("baignade", "badinage")
True
>>> is_anagram("police", "picole")
True
Ne pas oublier de gérer les majuscules comme il faut:
>>> is_anagram("Parisien", "Aspirine")
True
>>> is_anagram("Parisien", "Parisiens")
False
Avant de regarder les bonus, j'aimerai que vous cherchiez au moins deux façons de résoudre cet exercice (ou plus si vous voulez).
Bonus numéro 1¶
Faire en sorte que les anagrammes de plusieurs mots soient bien détectées (ignorer les espaces):
>>> is_anagram("Tom Elvis Jedusor", "Je suis Voldemort")
True
>>> is_anagram("Laurent Fabius", "Naturel abusif")
True
>>> is_anagram("un deux trois", "trois deux un zero")
False
Bonus numéro 2¶
Faire en sorte que la fonction ignore la ponctuation:
>>> is_anagram("Jean-Paul Sartre?", "Satan le parjure!")
True
>>> is_anagram("Michel Onfray.", "Lyncher ma foi!!!")
True
>>> is_anagram("Oui?", "Non?")
False
Bonus numéro 3¶
Petit défi: si vous avez déjà résolut cet exercice, et que vous en voulez encore, alors faites donc en sorte que la fonction accepte les charactères accentués mais ignore les accents:
>>> is_anagram("Centrale nucléaire", "Le cancer et la ruine")
True
>>> is_anagram("Le réchauffement climatique", "Ce fuel qui tache le firmament")
True
>>> is_anagram("Matière à contredire?", "Rédaction téméraire!")
True
>>> is_anagram("Le commandant Cousteau", "Tout commença dans l'eau")
True
Aide¶
Si vraiment vous êtes bloqué.e.s, vous pouvez regarder ces articles:
- Counting the number of times each letter occurs
- Setting the default value of a key in a dictionary
- A variety of different ways to count the number of times each word is seen
- A different way to solve the base problem
- Comparing strings case-insensitively
- Ignoring spaces during comparisons
- Removing punctuation characters from strings
- Removing accents from characters