diff --git a/S2/TP4/tp4.py b/S2/TP4/tp4.py index 7a36a6b..5586a3a 100644 --- a/S2/TP4/tp4.py +++ b/S2/TP4/tp4.py @@ -66,9 +66,14 @@ def seqTrie(l, a, b, x): # Jean-loup def dicho(l, a, b, x): # Geoffrey """ list, int, int, a → (bool, int) - Renvoie la position d'un élément x dans la liste l - aux bornes a et b par dichotomie. + Renvoie un tuple contenant un booléen indiquant si l'élément x est dans la liste l entre les + bornes [a, b[, ainsi que sa position le cas échéant, -1 sinon, par dichotomie. + CU : l une liste, a et b des ints tels que 0 ≤ a < b ≤ len(l) """ + assert(type(l) == list), "l doit être une liste" + assert(type(a) == type(b) == int), "a et b doivent être des ints" + assert(0 <= a < b <= len(l)), "Il faut que 0 ≤ a < b ≤ len(l)" + a = d f = b - 1 while d < f: @@ -77,7 +82,8 @@ def dicho(l, a, b, x): # Geoffrey d = m+1 else: f = m - return x == l[d] + est_dedans = x == l[d] + return (est_dedans, d if x == l[d] else -1) question(2) # Utiliser LEXIQUE @@ -85,6 +91,18 @@ from lexique import * squestion('a') # Vérifier que LEXIQUE est triée +def est_trie(l): + """ + list → bool + Indique si la liste l est triée dans l'ordre croissant + """ + for i in range(len(l)-1): + if not l[i] < l[i+1]: + return False + return True + +print("Le test indiquant si LEXIQUE est trié retourne %s" % est_trie(LEXIQUE)) + squestion('b') # Effectuer de nombreuses recherches de LEXIQUE # et comparer les temps d'éxécution selon les # algorithmes utilisés \ No newline at end of file