diff --git a/tp1.py b/tp1.py
index 5a7f536fc1f35f3ff70410a729e85fc0d31f04cf..96798db8d6df8110eff17eeb17de553e09f16491 100644
--- a/tp1.py
+++ b/tp1.py
@@ -157,7 +157,114 @@ def sont_anagrammes4(s1:str,s2:str)->bool:
         return False
     return True
 
+# il y'a 139719 mots dans  ce lexique
+# non ce lexique ne contient pas de doublons car len(LEXIQUE)==len(set(LEXIQUE))
+
+from lexique import LEXIQUE
+def anagrammes(mot: str) -> list[str]:
+    """
+    Renvoie la liste des mots figurant dans le LEXIQUE qui sont des anagrammes de mot.
+
+    Précondition: aucune
+
+    Exemples:
+
+    $$$ anagrammes('orange')
+    ['onagre', 'orange', 'orangé', 'organe', 'rongea']
+    $$$ anagrammes('info')
+    ['foin']
+    $$$ anagrammes('Calbuth')
+    []
+    """
+    res=[]
+    for elt in LEXIQUE:
+        
+        if len(mot) == len(elt) and sont_anagrammes4(elt,mot):
+            res.append(elt)
+    return res
+
+#2 liste des anagrammes du mot chien
+# ['chien', 'chiné', 'niche', 'niché']
+
+
+# ANAGRAMMES D'UN MOT:seconde methode
+#1 il n'est pas raisonnable de prendre les mots du lexique pour clés car plusieurs clés ne peuvent pas designer la meme valeur
+# en effet ces mots du lexiques en representant les clés auront tous la meme valeur qui est le mot dont on cherche ces anagrammes
+
+
+def cle(chaine:str)->str:
+    """ à_remplacer_par_ce_que_fait_la_fonction
+
+    Précondition :
+    Exemple(s) :
+    $$$ cle('Orangé')
+    'aegnor'
+
+    """
+    a=bas_casse_sans_accent(chaine)
+    b=sort(a)
+    return b
+
+
+
+
+ANAGRAMMES={}
+for mot in LEXIQUE:
+    if not(mot in ANAGRAMMES):
+        mot_anagrammes = anagrammes(mot)
+        for elt in mot_anagrammes:
+             ANAGRAMMES[elt] = mot_anagrammes
+    
+
+
+def anagrammes2(mot:str)->list[str]:
+    """ à_remplacer_par_ce_que_fait_la_fonction
+
+    Précondition :
+    Exemple(s) :
+    $$$
+    """
+    return ANAGRAMMES.get(mot,[mot])
+
+
+
+#c'est la methode avec le dictionnaire la plus rapide
+i=0
+ANAGRAMMES2={}
+for mote in LEXIQUE:
+    i+=1
+    if not(mote in ANAGRAMMES2):
+        mot_anagrammes2 = anagrammes(mote)
+        for elm in mot_anagrammes2:
+            ANAGRAMMES2[elm] = mot_anagrammes2
+            if i==30:
+                break
 
 
+def anagrammes3(mot:str)->list[str]:
+    """ à_remplacer_par_ce_que_fait_la_fonction
+
+    Précondition :
+    Exemple(s) :
+    $$$ anagrammes3('chien')
+    ['chien', 'chiné', 'niche', 'niché']
+    """
+    return ANAGRAMMES2.get(mot,[mot])
+
 
+def anagrammes_phrase(phrase:str)->list[str]:
+    """ à_remplacer_par_ce_que_fait_la_fonction
+
+    Précondition :
+    Exemple(s) :
+    $$$
+    """
+    res=[]
+    mot=[]
+    liste=phrase.split(' ')
+    for elt in liste:
+        mot.append(anagrammes(elt))
+        " ".join()
+    res+=mot
+    return res