TP2 Maniaquerie Section Anagrammes
This commit is contained in:
parent
a678814ad0
commit
6e1e73eee0
|
@ -4,4 +4,4 @@ lexique.py:
|
||||||
rm -rf lexique.zip
|
rm -rf lexique.zip
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf lexique*
|
rm -rf lexique* anagrammes*
|
||||||
|
|
|
@ -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
|
||||||
CU: chaine1 et chaine2 sont des str
|
str, str → bool
|
||||||
|
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
|
||||||
CU: chaine1 et chaine2 sont des str
|
str, str → bool
|
||||||
|
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
|
||||||
CU: chaine1 et chaine2 sont des str
|
str, str → bool
|
||||||
|
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
|
"""
|
||||||
CU: chaine est un str
|
Renvoie l'équivalent minuscule non accentuée de la chaîne passée en paramètre
|
||||||
|
str → 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
|
||||||
CU: chaine1 et chaine2 sont des str
|
str, str → bool
|
||||||
|
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,8 +329,8 @@ 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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(mot) == str)
|
assert(type(mot) == str)
|
||||||
|
@ -355,8 +361,8 @@ 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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(mot) == str)
|
assert(type(mot) == str)
|
||||||
|
@ -384,8 +390,8 @@ 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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
k = cle(mot)
|
k = cle(mot)
|
||||||
|
|
Reference in a new issue