diff --git a/S2/TP2/tp2.py b/S2/TP2/tp2.py index c126614..3a5fa20 100644 --- a/S2/TP2/tp2.py +++ b/S2/TP2/tp2.py @@ -48,7 +48,7 @@ question(3) question(4) -section('Méthode sort') +section('Méthode sort')http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html question(1) @@ -64,10 +64,62 @@ partie('Anagrammes') # Jean-loup question(1) +def sont_anagrammes1(chaine1, chaine2): + """ Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon + str, str -> bool + CU: chaine1 et chaine2 sont des str + """ + + assert(type(chaine1)==str and type(chaine2)==str) + + if len(chaine1) != len(chaine2): # Si la longueur est différente ca ne peut pas être des anagrammes + return False + + l1 = list(chaine1) + l2 = list(chaine2) + + l1.sort() + l2.sort() + + return l1 == l2 + question(2) +def sont_anagrammes2(chaine1, chaine2): + """ Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon + str, str -> bool + CU: chaine1 et chaine2 sont des str + """ + + assert(type(chaine1)==str and type(chaine2)==str) + + if len(chaine1) != len(chaine2): # Si la longueur est différente ca ne peut pas être des anagrammes + return False + + occu1 = dict((i,chaine1.count(i)) for i in chaine1) + occu2 = dict((i,chaine2.count(i)) for i in chaine2) + + return occu1 == occu2 + question(3) +def sont_anagrammes2(chaine1, chaine2): + """ Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon + str, str -> bool + CU: chaine1 et chaine2 sont des str + """ + + assert(type(chaine1)==str and type(chaine2)==str) + + if len(chaine1) != len(chaine2): # Si la longueur est différente ca ne peut pas être des anagrammes + return False + + for i in chaine1: + if chaine1.count(i) != chaine2.count(i): + return False + + return True + section('Casse et accentuation')