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
# Donné le 27/01/2015
@ -8,11 +8,11 @@
def partie(nom):
print('\n', nom, '='*len(nom), sep='\n')
print('\n', nom, '=' * len(nom), sep='\n')
def section(nom):
print('\n', nom, '-'*len(nom), sep='\n')
print('\n', nom, '-' * len(nom), sep='\n')
def question(numero):
@ -42,7 +42,8 @@ print(s.split('split'))
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)
@ -192,7 +193,8 @@ def sont_anagrammes1(chaine1, chaine2):
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
if len(chaine1) != len(chaine2):
@ -213,7 +215,8 @@ def sont_anagrammes2(chaine1, chaine2):
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
if len(chaine1) != len(chaine2):
@ -234,7 +237,8 @@ def sont_anagrammes3(chaine1, chaine2):
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
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
"""
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
if len(chaine1) != len(chaine2):
@ -297,7 +302,8 @@ def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
chaine1Cpy = bas_casse_sans_accent(chaine1)
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
@ -412,29 +418,32 @@ section('Comparaison des deux méthodes')
question(1)
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
import time
debut = time.time()
for i in range(30):
for i in range(NB_TESTS):
anagrammes(LEXIQUE[i])
temps1 = time.time() - debut
debut = time.time()
for i in range(30):
for i in range(NB_TESTS):
anagrammes2(LEXIQUE[i])
temps2 = time.time() - debut
print('La première méthode à mis %s secondes, et la deuxième %s secondes' %
(temps1, temps2))
print('La première méthode a duré %s secondes, et la deuxième %s secondes.' % (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
question(1)
def arbre_vers_liste(arbre, precede):
# dict → list
# TODO Docstring