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
+
+
+
+
+