Revoir le chapitre traitement de données en tablesdu programme de première en cas de difficultés (et aussi l'utilisation des dictionnaires)
Exercice 2
1 2 3 4 5 6 7 8 91011121314151617
deftrouver_intrus(tab,g,d):''' Renvoie la valeur de l'intrus situé entre les indices g et d dans la liste tab où tab vérifie les conditions de l'exercice, g et d sont des multiples de 3. '''ifg==d:returntab[g]#(1)else:nombre_de_triplets=(d-g)//3indice=g+3*(nombre_de_triplets//2)iftab[indice]==tab[indice+1]:#(2)returntrouver_intrus(tab,indice+3,d)#(3)else:returntrouver_intrus(tab,g,indice)
La zone de recherche se limite à un élément : l'intrus. On peut mettre indifféremment tab[g] ou tab[d], ils sont égaux puisque g=d ici.
On suit l'algorithme proposé dans l'énoncé et on compare l'élément du milieu à son voisin de droite
Attention à la légère différence de traitement dans un cas ou passe à indice+3 car les éléments sont situés strictement avant l'intrus
Attention
Sujet sans doute difficile et qui présente un algorithme nouveau (bien que semblable à une recherche par dichotomie)
Commentaires
Revoir le chapitre traitement de données en tablesdu programme de première en cas de difficultés (et aussi l'utilisation des dictionnaires)