diff --git a/tp1.py b/tp1.py
index db2df373790317974382612b74ed2cc7de9a6b14..5a7f536fc1f35f3ff70410a729e85fc0d31f04cf 100644
--- a/tp1.py
+++ b/tp1.py
@@ -1,130 +1,163 @@
-#nom:gantchou koffi
-#mi13
-# anagrammes
-# 16/01
-#METHODE SPLIT
-
-
-#2 la methode split supprime l'element pris en parametre dans la chaine
-# >>> s= "la méthode split est parfois bien utile"
-# >>> s.split(' ')
-# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile']
-# >>> s.split('e')
-# ['la méthod', ' split ', 'st parfois bi', 'n util', '']
-# >>> s.split('é')
-# ['la m', 'thode split est parfois bien utile']
-# >>> s.split()
-# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile']
-# >>> s.split('')
-# Traceback (most recent call last):
-# File "<stdin>", line 1, in <module>
-# ValueError: empty separator
-# >>> s.split('split')
-# ['la méthode ', ' est parfois bien utile']
-
-#3 la methode split ne modifie pas la chaine a laquelle elle s'applique
-
-#METHODE JOIN
-# la methode join ne modifiie pas la chaine a laquelle elle s'applique
-
-
-#la methode sort ne s'applique que sur des listes
-# de meme que join
-
-def join(carac:str,l:list[str])->str:
- """ à_remplacer_par_ce_que_fait_la_fonction
-
- Précondition :
- Exemple(s) :
- $$$ join('.', ['raymond', 'calbuth', 'ronchin', 'fr'])
- 'raymond.calbuth.ronchin.fr'
-
- """
- res=''
- for i in range(len(l)-1):
- res+=l[i]+carac
- res=res+l[len(l)-1]
-
- return res
-
-def sort(s: str) -> str:
- """
- Renvoie une chaîne de caractères contenant les caractères de `s` triés dans l'ordre croissant.
-
- Précondition: aucune
-
- Exemples:
-
- $$$ sort('timoleon')
- 'eilmnoot'
- """
- l=list(s)
- l.sort()
- v="".join(l)
- return v
-
-def sont_anagrammes(s1: str, s2: str) -> bool:
- """
- Renvoie True si s1 et s2 sont anagrammatiques, False sinon.
-
- Précondition: aucune
-
- Exemples:
-
- $$$ sont_anagrammes('orange', 'organe')
- True
- $$$ sont_anagrammes('orange','Organe')
- False
- """
- anag1=sort(s1)
- anag2=sort(s2)
- return anag1==anag2
-
-def sont_anagrammes2(s1:str,s2:str)->bool:
- """ à_remplacer_par_ce_que_fait_la_fonction
-
- Précondition :
- Exemple(s) :
- $$$ sont_anagrammes2('orange', 'organe')
- True
- $$$ sont_anagrammes2('orange','Organe')
- False
-
- """
- dict1={}
- dict2={}
- for elt in s1:
- if elt in dict1:
- dict1[elt]=dict1[elt]+1
- else:
- dict1[elt]=1
-
- for elm in s2:
- if elm in dict2:
- dict2[elm]=dict2[elm]+1
- else:
- dict2[elm]=1
- return dict1==dict2
-
-def sont_anagrammes3(s1:str,s2:str)->bool:
- """ à_remplacer_par_ce_que_fait_la_fonction
-
- Précondition :
- Exemple(s) :
- $$$ sont_anagrammes3('orange', 'organe')
- True
- $$$ sont_anagrammes3('orange','Organe')
- True
- $$$ sont_anagrammes3('hezf','ehzu')
- False
- """
- for elt in set(s1):
- if s1.count(elt)==s2.count(elt):
- return True
- return False
-
-
-
-
-
-
+#nom:gantchou koffi
+#mi13
+# anagrammes
+# 16/01
+#METHODE SPLIT
+
+
+#2 la methode split supprime l'element pris en parametre dans la chaine
+# >>> s= "la méthode split est parfois bien utile"
+# >>> s.split(' ')
+# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile']
+# >>> s.split('e')
+# ['la méthod', ' split ', 'st parfois bi', 'n util', '']
+# >>> s.split('é')
+# ['la m', 'thode split est parfois bien utile']
+# >>> s.split()
+# ['la', 'méthode', 'split', 'est', 'parfois', 'bien', 'utile']
+# >>> s.split('')
+# Traceback (most recent call last):
+# File "<stdin>", line 1, in <module>
+# ValueError: empty separator
+# >>> s.split('split')
+# ['la méthode ', ' est parfois bien utile']
+
+#3 la methode split ne modifie pas la chaine a laquelle elle s'applique
+
+#METHODE JOIN
+# la methode join ne modifiie pas la chaine a laquelle elle s'applique
+
+
+#la methode sort ne s'applique que sur des listes
+# de meme que join
+
+def join(carac:str,l:list[str])->str:
+ """ à_remplacer_par_ce_que_fait_la_fonction
+
+ Précondition :
+ Exemple(s) :
+ $$$ join('.', ['raymond', 'calbuth', 'ronchin', 'fr'])
+ 'raymond.calbuth.ronchin.fr'
+
+ """
+ res=''
+ for i in range(len(l)-1):
+ res+=l[i]+carac
+ res=res+l[len(l)-1]
+
+ return res
+
+def sort(s: str) -> str:
+ """
+ Renvoie une chaîne de caractères contenant les caractères de `s` triés dans l'ordre croissant.
+
+ Précondition: aucune
+
+ Exemples:
+
+ $$$ sort('timoleon')
+ 'eilmnoot'
+ """
+ l=list(s)
+ l.sort()
+ v="".join(l)
+ return v
+
+def sont_anagrammes(s1: str, s2: str) -> bool:
+ """
+ Renvoie True si s1 et s2 sont anagrammatiques, False sinon.
+
+ Précondition: aucune
+
+ Exemples:
+
+ $$$ sont_anagrammes('orange', 'organe')
+ True
+ $$$ sont_anagrammes('orange','Organe')
+ False
+ """
+ anag1=sort(s1)
+ anag2=sort(s2)
+ return anag1==anag2
+
+def sont_anagrammes2(s1:str,s2:str)->bool:
+ """ à_remplacer_par_ce_que_fait_la_fonction
+
+ Précondition :
+ Exemple(s) :
+ $$$ sont_anagrammes2('orange', 'organe')
+ True
+ $$$ sont_anagrammes2('orange','Organe')
+ False
+
+ """
+ dict1={}
+ dict2={}
+ for elt in s1:
+ if elt in dict1:
+ dict1[elt]=dict1[elt]+1
+ else:
+ dict1[elt]=1
+
+ for elm in s2:
+ if elm in dict2:
+ dict2[elm]=dict2[elm]+1
+ else:
+ dict2[elm]=1
+ return dict1==dict2
+
+def sont_anagrammes3(s1:str,s2:str)->bool:
+ """ à_remplacer_par_ce_que_fait_la_fonction
+
+ Précondition :
+ Exemple(s) :
+ $$$ sont_anagrammes3('orange', 'organe')
+ True
+ $$$ sont_anagrammes3('orange','Organe')
+ False
+ $$$ sont_anagrammes3('hezf','ehzu')
+ False
+ """
+ for elt in s1:
+ if s1.count(elt)!=s2.count(elt):
+ return False
+ return True
+
+EQUIV_NON_ACCENTUE = {'é':'e','ê':'e','è':'e','à':'a','û':'u','â':'a','ï':'i'}
+def bas_casse_sans_accent (chaine:str)->str:
+ """ à_remplacer_par_ce_que_fait_la_fonction
+
+ Précondition :
+ Exemple(s) :
+ $$$ bas_casse_sans_accent('Orangé')
+ 'orange'
+ $$$ bas_casse_sans_accent('ghsêéè')
+ 'ghseee'
+ """
+ res=''
+ for elt in chaine:
+ for accentue in EQUIV_NON_ACCENTUE:
+ if elt==accentue:
+ elt=EQUIV_NON_ACCENTUE[accentue]
+ res+=elt
+ return res.lower()
+
+def sont_anagrammes4(s1:str,s2:str)->bool:
+ """ à_remplacer_par_ce_que_fait_la_fonction
+
+ Précondition :
+ Exemple(s) :
+ $$$ sont_anagrammes4('Orangé', 'organE')
+ True
+
+ """
+ a=bas_casse_sans_accent(s1)
+ b=bas_casse_sans_accent(s2)
+ if sort(a)!=sort(b):
+ return False
+ return True
+
+
+
+
+