diff --git a/S2/TP2/tp2.py b/S2/TP2/tp2.py index 00eff3d..05a00d1 100644 --- a/S2/TP2/tp2.py +++ b/S2/TP2/tp2.py @@ -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