Merge branch 'master' of githubu:GeoffreyFrogeye/tp-info
This commit is contained in:
commit
1b83f8c9a9
|
@ -185,23 +185,118 @@ def sort(chaine):
|
||||||
print('>>> sort(\'timoleon\')')
|
print('>>> sort(\'timoleon\')')
|
||||||
print(sort('timoleon'))
|
print(sort('timoleon'))
|
||||||
|
|
||||||
|
|
||||||
partie('Anagrammes') # Jean-loup
|
partie('Anagrammes') # Jean-loup
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
def sont_anagrammes3(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
|
||||||
|
"""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')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
EQUIV_NON_ACCENTUE = {'é':'e', 'è':'e', 'à':'a', 'ç':'c', 'ï':'i', 'î':'i', 'ô':'o', 'ë':'e', 'ê':'e', 'â':'a', 'û':'u'}
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
|
def bas_casse_sans_accent(chaine):
|
||||||
|
""" str -> str, renvoie une chaine qui est l'équivalent non accentuée et minuscule de la chaine passée en paramètre
|
||||||
|
CU: chaine est un str
|
||||||
|
"""
|
||||||
|
|
||||||
|
assert(type(chaine)==str)
|
||||||
|
|
||||||
|
chaineCpy=chaine.lower()
|
||||||
|
|
||||||
|
ret = ""
|
||||||
|
|
||||||
|
for i in chaineCpy:
|
||||||
|
if i in EQUIV_NON_ACCENTUE:
|
||||||
|
ret += EQUIV_NON_ACCENTUE[i]
|
||||||
|
else:
|
||||||
|
ret += i
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
||||||
|
""" Prédicat, renvoie True si chaine1 et chaine2 sont des anagrammes, False sinon, ne tient pas compte de la casse ou des accents
|
||||||
|
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
|
||||||
|
|
||||||
|
chaine1Cpy = bas_casse_sans_accent(chaine1)
|
||||||
|
chaine2Cpy = bas_casse_sans_accent(chaine2)
|
||||||
|
|
||||||
|
return sont_anagrammes2(chaine1Cpy, chaine2Cpy)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
partie('Recherche d\'anagrammes') # Jean-loup
|
partie('Recherche d\'anagrammes') # Jean-loup
|
||||||
|
|
||||||
|
|
Reference in a new issue