TP2 Maniaquerie Section Anagrammes

This commit is contained in:
Geoffrey Frogeye 2015-02-09 17:29:39 +01:00
parent a678814ad0
commit 6e1e73eee0
2 changed files with 37 additions and 31 deletions

View file

@ -4,4 +4,4 @@ lexique.py:
rm -rf lexique.zip rm -rf lexique.zip
clean: clean:
rm -rf lexique* rm -rf lexique* anagrammes*

View file

@ -186,14 +186,15 @@ question(1)
def sont_anagrammes1(chaine1, chaine2): def sont_anagrammes1(chaine1, chaine2):
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon """
str, str -> bool Indique si chaine1 et chaine2 sont anagrammes
str, str bool
CU : chaine1 et chaine2 sont des str CU : chaine1 et chaine2 sont des str
""" """
assert(type(chaine1) == str and type(chaine2) == str) assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
# Si la longueur est différente ca ne peut pas être des anagrammes # Si la longueur est différente, ça ne peut pas être des anagrammes
if len(chaine1) != len(chaine2): if len(chaine1) != len(chaine2):
return False return False
@ -206,14 +207,15 @@ question(2)
def sont_anagrammes2(chaine1, chaine2): def sont_anagrammes2(chaine1, chaine2):
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon """
str, str -> bool Indique si chaine1 et chaine2 sont anagrammes
str, str bool
CU : chaine1 et chaine2 sont des str CU : chaine1 et chaine2 sont des str
""" """
assert(type(chaine1) == str and type(chaine2) == str) assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
# Si la longueur est différente ca ne peut pas être des anagrammes # Si la longueur est différente, ça ne peut pas être des anagrammes
if len(chaine1) != len(chaine2): if len(chaine1) != len(chaine2):
return False return False
@ -226,14 +228,15 @@ question(3)
def sont_anagrammes3(chaine1, chaine2): def sont_anagrammes3(chaine1, chaine2):
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon """
str, str -> bool Indique si chaine1 et chaine2 sont anagrammes
str, str bool
CU : chaine1 et chaine2 sont des str CU : chaine1 et chaine2 sont des str
""" """
assert(type(chaine1) == str and type(chaine2) == str) assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
# Si la longueur est différente ca ne peut pas être des anagrammes # Si la longueur est différente, ça ne peut pas être des anagrammes
if len(chaine1) != len(chaine2): if len(chaine1) != len(chaine2):
return False return False
@ -255,11 +258,13 @@ question(2)
def bas_casse_sans_accent(chaine): def bas_casse_sans_accent(chaine):
""" str -> str, renvoie une chaine qui est l'équivalent non accentuée et minuscule de la chaine passée en paramètre """
Renvoie l'équivalent minuscule non accentuée de la chaîne passée en paramètre
str str
CU : chaine est un str CU : chaine est un str
""" """
assert(type(chaine) == str) assert(type(chaine) == str), 'chaine doit être un str'
chaineCpy = chaine.lower() chaineCpy = chaine.lower()
@ -277,21 +282,22 @@ question(3)
def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2): def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon, ne tient pas compte de la casse ou des accents """
str, str -> bool Indique si chaine1 et chaine2 sont anagrammes sans de tenir compte de la casse ni des accents
str, str bool
CU : chaine1 et chaine2 sont des str CU : chaine1 et chaine2 sont des str
""" """
assert(type(chaine1) == str and type(chaine2) == str) assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
# Si la longueur est différente ca ne peut pas être des anagrammes # Si la longueur est différente, ça ne peut pas être des anagrammes
if len(chaine1) != len(chaine2): if len(chaine1) != len(chaine2):
return False return False
chaine1Cpy = bas_casse_sans_accent(chaine1) chaine1Cpy = bas_casse_sans_accent(chaine1)
chaine2Cpy = bas_casse_sans_accent(chaine2) chaine2Cpy = bas_casse_sans_accent(chaine2)
return sont_anagrammes2(chaine1Cpy, chaine2Cpy) return sont_anagrammes2(chaine1Cpy, chaine2Cpy) # TODO Voir quelle est la meilleure méthode
partie('Recherche d\'anagrammes') # Jean-loup partie('Recherche d\'anagrammes') # Jean-loup
@ -323,7 +329,7 @@ question(1)
def anagrammes(mot): def anagrammes(mot):
""" str -> list de str, parcourt tout le lexique et recherche les anagrammes de mot """ str list de str, parcourt tout le lexique et recherche les anagrammes de mot
CU : mot est un str CU : mot est un str
""" """
@ -355,7 +361,7 @@ question(2)
def cle(mot): def cle(mot):
""" str -> str , renvoie la version triée des lettres de mot, sans accent et en bas de casse. """ str str , renvoie la version triée des lettres de mot, sans accent et en bas de casse.
CU : mot est un str CU : mot est un str
""" """
@ -384,7 +390,7 @@ question(4)
def anagrammes2(mot): def anagrammes2(mot):
""" str -> list de str, utilise le dictionnaire ANAGRAMMES pour trouver la liste des anagrammes de mot """ str list de str, utilise le dictionnaire ANAGRAMMES pour trouver la liste des anagrammes de mot
CU : mot est un str CU : mot est un str
""" """