TP2 Maniaquerie section Comparaison

This commit is contained in:
Geoffrey Frogeye 2015-02-09 18:40:01 +01:00
parent 7b516365fc
commit 026d32fe43

View file

@ -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