Section anagramme, questions 1,2 et 3

This commit is contained in:
jeanloup 2015-01-27 11:02:24 +01:00
parent c62ebd6832
commit bb5783c9e2

View file

@ -48,7 +48,7 @@ question(3)
question(4) question(4)
section('Méthode sort') section('Méthode sort')http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp2_dictionnaires.html
question(1) question(1)
@ -64,10 +64,62 @@ partie('Anagrammes') # Jean-loup
question(1) 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) 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) 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') section('Casse et accentuation')