diff --git a/Tp6/associations/dicotrie.py b/Tp6/associations/dicotrie.py
index b863fbbe9ed5fb6a7a277ad1cb226cf0794cfdc5..1dddbd4964db3625efeefe8feb50e9e36ac8f726 100755
--- a/Tp6/associations/dicotrie.py
+++ b/Tp6/associations/dicotrie.py
@@ -34,7 +34,7 @@ class DicoTrie:
         $$$ repr(DicoTrie([Association('c', 3), Association('a', 2), Association('b', 1)]))
         "DicoTrie([Association('a', 2), Association('b', 1), Association('c', 3)])"
         """
-        ...
+        return f"DicoTrie({self.liste_assos}"
 
     def __eq__(self, autre) -> bool:
         """
@@ -48,7 +48,12 @@ class DicoTrie:
         $$$ d1 == {"a": 1, "b": 2}
         False
         """
-        ...
+        if len(self.liste_assos)==len(autre.liste_assos)or type (self)==type(autre):
+            for elt in self.liste_assos:
+                for elem in autre.liste_assos:
+                    return True
+        else:
+            return False
 
     def __setitem__(self, cle: C, valeur: V) -> NoneType:
         """
@@ -57,7 +62,7 @@ class DicoTrie:
         $$$ d1
         DicoTrie([Association("a", 1), Association("b", 2), Association("c", 3)])
         """
-        ...
+        self.liste_assos[cle]=valeur
 
     def __getitem__(self, cle: C) -> V:
         """
@@ -69,7 +74,7 @@ class DicoTrie:
         $$e d1['c']
         KeyError
         """
-        ...
+        return self.liste_assos[cle]
 
     def __delitem__(self, cle: C) -> NoneType:
         """ 
@@ -80,8 +85,11 @@ class DicoTrie:
         $$e del d1['c'] 
         KeyError 
         """
-        ...
-
+        if isinstance(cle,str):
+            self.supprime(cle)
+        else:
+            return KeyError
+ 
     def __contains__(self, cle: C) -> bool:
         """ 
         $$$ d1 = DicoTrie([Association("a", 1), Association("b", 2)]) 
@@ -90,7 +98,9 @@ class DicoTrie:
         $$$ 'c' in d1
         False
         """
-        ...
+        if isinstance(cle,str):
+            return self.contains(cle)
+        return False
 
 if __name__ == '__main__':
     import apl1test
diff --git a/Tp6/associations/recherches.py b/Tp6/associations/recherches.py
index fa01a60edb5f127fa4c6fc39cec77b295811ac45..cf4a50e64c65d65e29ee0a253e377bccfd69e84e 100755
--- a/Tp6/associations/recherches.py
+++ b/Tp6/associations/recherches.py
@@ -50,35 +50,53 @@ def indice_seq(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
             i=index
             
     return trouve,i
-# 
-# def indice_dicho(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
-#                                     -> tuple[bool, int]:
-#     """Renvoie un couple (trouve, i) tel que:
-#         - si elem est un élément de liste,
-#              * trouve = True
-#              * i est l'indice de première occurence de elem dans liste
-#         - si elem n'est pas un élément de la liste :
-#              * trouve = False
-#              * pour tout j < i, liste[j] < liste[i]
-#              * pour tout j > i, liste[j] > liste[i]
-# 
-#     Précondition : comp est une fonction de comparaison et liste est triée pour comp
-# 
-#     $$$ def compare(x, y): return 0 if x == y else 1 if x > y else -1
-#     $$$ indice_dicho(0, [1, 3, 5], compare)
-#     (False, 0)
-#     $$$ indice_dicho(3, [1, 3, 5], compare)
-#     (True, 1)
-#     $$$ indice_dicho(4, [1, 3, 5], compare)
-#     (False, 2)
-#     $$$ indice_dicho(5, [1, 3, 5], compare)
-#     (True, 2)
-#     $$$ indice_dicho(6, [1, 3, 5], compare)
-#     (False, 3)
-#     $$$ indice_dicho(42, [], compare)
-#     (False, 0)
-#     """
-#    
+
+def indice_dicho(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
+                                    -> tuple[bool, int]:
+    """Renvoie un couple (trouve, i) tel que:
+        - si elem est un élément de liste,
+             * trouve = True
+             * i est l'indice de première occurence de elem dans liste
+        - si elem n'est pas un élément de la liste :
+             * trouve = False
+             * pour tout j < i, liste[j] < liste[i]
+             * pour tout j > i, liste[j] > liste[i]
+
+    Précondition : comp est une fonction de comparaison et liste est triée pour comp
+
+    $$$ def compare(x, y): return 0 if x == y else 1 if x > y else -1
+    $$$ indice_dicho(0, [1, 3, 5], compare)
+    (False, 0)
+    $$$ indice_dicho(3, [1, 3, 5], compare)
+    (True, 1)
+    $$$ indice_dicho(4, [1, 3, 5], compare)
+    (False, 2)
+    $$$ indice_dicho(5, [1, 3, 5], compare)
+    (True, 2)
+    $$$ indice_dicho(6, [1, 3, 5], compare)
+    (False, 3)
+    $$$ indice_dicho(42, [], compare)
+    (False, 0)
+    """
+    debut=0
+    i=len(liste)
+    trouvr=False
+    fin=len(liste)-1
+    while debut<= fin:
+        
+        
+        milieu=(debut+fin)//2
+        if comp (elem,liste[milieu])==0:
+            
+            trouve=True
+            i=milieu
+        elif comp(elem,liste[milieu])<0:
+            fin=milieu-1
+        else:
+            debut=milieu+1
+    return trouve,i
+    
+