TP2 Maniaquerie section Comparaison
This commit is contained in:
parent
7b516365fc
commit
026d32fe43
|
@ -1,4 +1,4 @@
|
||||||
# PREUD'HOMME Geoffrey
|
# PREUD'HOMME Geoffrey
|
||||||
# BEAUSSART Jean-loup
|
# BEAUSSART Jean-loup
|
||||||
# Donné le 27/01/2015
|
# Donné le 27/01/2015
|
||||||
|
|
||||||
|
@ -8,11 +8,11 @@
|
||||||
|
|
||||||
|
|
||||||
def partie(nom):
|
def partie(nom):
|
||||||
print('\n', nom, '='*len(nom), sep='\n')
|
print('\n', nom, '=' * len(nom), sep='\n')
|
||||||
|
|
||||||
|
|
||||||
def section(nom):
|
def section(nom):
|
||||||
print('\n', nom, '-'*len(nom), sep='\n')
|
print('\n', nom, '-' * len(nom), sep='\n')
|
||||||
|
|
||||||
|
|
||||||
def question(numero):
|
def question(numero):
|
||||||
|
@ -42,7 +42,8 @@ print(s.split('split'))
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
print('La méthode `split` renvoie la liste des chaînes de la découpe de la chaîne sur laquelle est appliquée la fonction par la chaîne passée en argument (ou à défaut le caractères d\'espacement')
|
print(
|
||||||
|
'La méthode `split` renvoie la liste des chaînes de la découpe de la chaîne sur laquelle est appliquée la fonction par la chaîne passée en argument (ou à défaut le caractères d\'espacement')
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
@ -192,7 +193,8 @@ def sont_anagrammes1(chaine1, chaine2):
|
||||||
CU : chaine1 et chaine2 sont des str
|
CU : chaine1 et chaine2 sont des str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
|
assert(type(chaine1) == type(chaine2) ==
|
||||||
|
str), 'chaine1 et chaine2 doivent être des str'
|
||||||
|
|
||||||
# Si la longueur est différente, ça 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):
|
||||||
|
@ -213,7 +215,8 @@ def sont_anagrammes2(chaine1, chaine2):
|
||||||
CU : chaine1 et chaine2 sont des str
|
CU : chaine1 et chaine2 sont des str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
|
assert(type(chaine1) == type(chaine2) ==
|
||||||
|
str), 'chaine1 et chaine2 doivent être des str'
|
||||||
|
|
||||||
# Si la longueur est différente, ça 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):
|
||||||
|
@ -234,7 +237,8 @@ def sont_anagrammes3(chaine1, chaine2):
|
||||||
CU : chaine1 et chaine2 sont des str
|
CU : chaine1 et chaine2 sont des str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
|
assert(type(chaine1) == type(chaine2) ==
|
||||||
|
str), 'chaine1 et chaine2 doivent être des str'
|
||||||
|
|
||||||
# Si la longueur est différente, ça 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):
|
||||||
|
@ -288,7 +292,8 @@ def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
||||||
CU : chaine1 et chaine2 sont des str
|
CU : chaine1 et chaine2 sont des str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(type(chaine1) == type(chaine2) == str), 'chaine1 et chaine2 doivent être des str'
|
assert(type(chaine1) == type(chaine2) ==
|
||||||
|
str), 'chaine1 et chaine2 doivent être des str'
|
||||||
|
|
||||||
# Si la longueur est différente, ça 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):
|
||||||
|
@ -297,7 +302,8 @@ def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
||||||
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) # TODO Voir quelle est la meilleure méthode
|
# TODO Voir quelle est la meilleure méthode
|
||||||
|
return sont_anagrammes2(chaine1Cpy, chaine2Cpy)
|
||||||
|
|
||||||
|
|
||||||
partie('Recherche d\'anagrammes') # Jean-loup
|
partie('Recherche d\'anagrammes') # Jean-loup
|
||||||
|
@ -412,29 +418,32 @@ section('Comparaison des deux méthodes')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
debut = time.time()
|
debut = time.time()
|
||||||
|
for i in range(NB_TESTS):
|
||||||
for i in range(30):
|
|
||||||
anagrammes(LEXIQUE[i])
|
anagrammes(LEXIQUE[i])
|
||||||
|
|
||||||
temps1 = time.time() - debut
|
temps1 = time.time() - debut
|
||||||
|
|
||||||
debut = time.time()
|
debut = time.time()
|
||||||
|
for i in range(NB_TESTS):
|
||||||
for i in range(30):
|
|
||||||
anagrammes2(LEXIQUE[i])
|
anagrammes2(LEXIQUE[i])
|
||||||
|
|
||||||
temps2 = time.time() - debut
|
temps2 = time.time() - debut
|
||||||
|
|
||||||
print('La première méthode à mis %s secondes, et la deuxième %s secondes' %
|
print('La première méthode a duré %s secondes, et la deuxième %s secondes.' % (temps1, temps2),
|
||||||
(temps1, temps2))
|
'La deuxième méthode est %0.2f fois plus efficace que la première.' % (temps1 / temps2),
|
||||||
|
'En effet, la première vérifie %d combinaisons d\'anagrammes, alors que la deuxième ne \
|
||||||
|
réalise qu\'un accès à un dictionnaire. Notons que la construction dudit dictionnaire a lui aussi \
|
||||||
|
pris un certain temps, mais reste négligeable par rapport à la première méthode.' % len(LEXIQUE),
|
||||||
|
sep='\n')
|
||||||
|
|
||||||
partie('Phrases d\'anagrammes') # Geoffrey
|
partie('Phrases d\'anagrammes') # Geoffrey
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
|
||||||
def arbre_vers_liste(arbre, precede):
|
def arbre_vers_liste(arbre, precede):
|
||||||
# dict → list
|
# dict → list
|
||||||
# TODO Docstring
|
# TODO Docstring
|
||||||
|
|
Reference in a new issue