CODE PUZZLE

def recherche_dichotomique(liste, valeur): # La liste doit être triée pour que la recherche dichotomique fonctionne correctement liste = sorted(liste) # Initialisation des indices de début et de fin pour la recherche debut = 0 fin = len(liste) - 1 # Boucle tant que la partie de la liste à examiner n'est pas réduite à zéro while debut <= fin: # Calcul de l'indice du milieu pour diviser la liste en deux milieu = (debut + fin) // 2 # Vérifie si la valeur au milieu est celle que l'on recherche if liste[milieu] == valeur: # Si c'est le cas, retourne True car la valeur a été trouvée return True # Si la valeur recherchée est plus grande que l'élément au milieu elif liste[milieu] < valeur: # Met à jour le début pour ignorer la première moitié de la liste debut = milieu + 1 # Si la valeur recherchée est plus petite que l'élément au milieu else: # Met à jour la fin pour ignorer la seconde moitié de la liste fin = milieu - 1 # Si la boucle se termine sans trouver la valeur, retourne False return False def test_recherche_dichotomique(): # Cas 1 : Liste vide assert recherche_dichotomique([], 5) == False, "Échec: Liste vide, valeur absente" # Cas 2 : Liste avec un seul élément, valeur présente assert recherche_dichotomique([5], 5) == True, "Échec: Liste avec un seul élément, valeur présente" # Cas 3 : Liste avec un seul élément, valeur absente assert recherche_dichotomique([3], 5) == False, "Échec: Liste avec un seul élément, valeur absente" # Cas 4 : Liste triée, valeur présente au début assert recherche_dichotomique([1, 3, 5, 7, 9], 1) == True, "Échec: Liste triée, valeur présente au début" # Cas 5 : Liste triée, valeur présente au milieu assert recherche_dichotomique([1, 3, 5, 7, 9], 5) == True, "Échec: Liste triée, valeur présente au milieu" # Cas 6 : Liste triée, valeur présente à la fin assert recherche_dichotomique([1, 3, 5, 7, 9], 9) == True, "Échec: Liste triée, valeur présente à la fin" # Cas 7 : Liste triée, valeur absente assert recherche_dichotomique([1, 3, 5, 7, 9], 4) == False, "Échec: Liste triée, valeur absente" # Cas 8 : Liste non triée, valeur présente (la fonction trie automatiquement) assert recherche_dichotomique([7, 1, 9, 3, 5], 3) == True, "Échec: Liste non triée, valeur présente" # Cas 9 : Liste non triée, valeur absente assert recherche_dichotomique([7, 1, 9, 3, 5], 8) == False, "Échec: Liste non triée, valeur absente" # Cas 10 : Liste avec des éléments répétitifs, valeur présente assert recherche_dichotomique([1, 3, 3, 3, 5, 7, 9], 3) == True, "Échec: Liste avec répétitions, valeur présente" # Cas 11 : Liste avec des éléments répétitifs, valeur absente assert recherche_dichotomique([1, 3, 3, 3, 5, 7, 9], 4) == False, "Échec: Liste avec répétitions, valeur absente" print("Tous les tests sont passés avec succès !") # Exécuter le jeu de tests test_recherche_dichotomique()
console