Skip to content
Snippets Groups Projects
Commit 6747828a authored by Angy Wallot's avatar Angy Wallot
Browse files

tp.6

parent 530700c1
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,8 @@ class Association:
$$$ asso1.valeur
1
"""
...
self.cle = cle
self.valeur = valeur
def __repr__(self) -> str:
"""
......@@ -42,10 +43,8 @@ class Association:
"Association('a', 1)"
$$$ repr(Association((1, True), [1, 2, 3]))
'Association((1, True), [1, 2, 3])'
$$$ repr(Association(1+1 == 2, "Vrai"))
"Association(True, 'Vrai')"
"""
...
return f"Association({repr(self.cle)}, {repr(self.valeur)})"
def __eq__(self, autre) -> bool:
"""
......@@ -55,10 +54,15 @@ class Association:
False
$$$ Association('a', 1) == Association(1, 'a')
False
$$$ Association('a', 1) == ('a', 1)
$$$ AssertionError('a', 1) == ('a', 1)
False
"""
...
if self.cle == autre.cle and self.valeur == autre.valeur:
return True
else:
return False
repr(Association('a', 1))
@count
def comp_asso(a1: Association, a2: Association) -> int:
......@@ -75,7 +79,12 @@ def comp_asso(a1: Association, a2: Association) -> int:
$$$ comp_asso(Association(1, 'd'), Association(0, 'c'))
1
"""
...
if a1.cle == a2.cle:
return 0
elif a1.cle < a2.cle:
return -1
else:
return 1
if __name__ == '__main__':
import apl1test
......
......@@ -41,7 +41,13 @@ def indice_seq(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
$$$ indice_seq(42, [], compare)
(False, 0)
"""
...
trouve = False
i = len(liste)
for x, y in enumerate(liste):
if comp(elem, y) == 0:
trouve = True
i = x
return trouve, i
def indice_dicho(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
-> tuple[bool, int]:
......@@ -70,7 +76,24 @@ def indice_dicho(elem: C, liste: list[C], comp: Callable[[C, C], int]) \
$$$ indice_dicho(42, [], compare)
(False, 0)
"""
...
res = (False, 0)
m = (len(liste)-1)//2
while comp(liste[m], elem) != 0 and m <= len(liste)-1:
if comp(liste[m], elem) > 0:
m = m//2
elif comp(liste[m], elem) < 0:
if m + 1 == len(liste):
res = (False, m+1)
else:
m = m + 1
break
if comp(liste[m], elem) == 0:
res = (True, m)
return res
def compare(x, y): return 0 if x == y else 1 if x > y else -1
indice_dicho(5, [1, 3, 5], compare)
indice_dicho(6, [1, 3, 5], compare)
def inserer(indice: int, elem: C, liste: list[C]) -> NoneType:
"""Insère l'élément elem à l'indice indice de la liste liste.
......@@ -92,7 +115,14 @@ def inserer(indice: int, elem: C, liste: list[C]) -> NoneType:
$$$ vide
[42]
"""
...
if indice == len(liste):
liste.append(elem)
else:
liste.append(None)
for i in range(len(liste)-1, indice, -1):
liste[i] = liste[i-1]
liste[indice] = elem
if __name__ == '__main__':
import apl1test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment