Aller au contenu

Ep 04

le document

l'algorithme

Issue de : 23-NSI-06⚓

EXERCICE 1⚓

Programmer la fonction recherche, prenant en paramÚtre un tableau non vide tab (type list) d'entiers et un entier n, et qui renvoie l'indice de la derniÚre occurrence de l'élément cherché.

Si l'élément n'est pas présent, la fonction renvoie None.

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def recherche(tab, n):bksl-nl indicepy-undsolution = Nonebksl-nl for i in range(len(tab)):bksl-nl if tab[i] == n:bksl-nl indicepy-undsolution = ibksl-nl return indicepy-undsolutionbksl-nlbksl-nl# Testez votre algorithmebksl-nltry:bksl-nl assert recherche([5, 3],1) == Nonebksl-nl assert recherche([2,4],2) == 0bksl-nl assert recherche([2,3,5,2,4],2) == 3bksl-nl print('Tout semble correct 👍')bksl-nl bksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

On souhaite programmer une fonction donnant la distance la plus courte entre un point de départ et une liste de points. Les points sont tous à coordonnées entiÚres.

Les points sont donnés sous la forme d'un tuple de deux entiers.

La liste des points Ă  traiter est donc un tableau de tuples.

On rappelle que la distance entre deux points du plan de coordonnées \((x;y)\) et \((x';y')\) est donnée par la formule :

\[d^2=(x-x')^2+(y-y')^2\]

ComplĂ©ter le code des fonctions distance_carre et point_le_plus_proche fournies ci-dessous pour qu’elles rĂ©pondent Ă  leurs spĂ©cifications.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def distance_carre(point1, point2):
    """ Calcule et renvoie la distance au carre entre 
    deux points."""
    return (...)**2 + (...)**2 

def point_le_plus_proche(depart, tab):
    """ Renvoie les coordonnées du premier point du tableau tab se 
    trouvant Ă  la plus courte distance du point depart."""
    min_point = tab[0]
    min_dist = ... 
    for i in range(1, len(tab)):
        if distance_carre(tab[i], depart) < ...: 
            min_point = ... 
            min_dist = ... 
    return min_point
RĂ©ponse

Complétez le code ci-dessous

###
def distancepy-undcarre(point1, point2):bksl-nl """ Calcule et renvoie la distance au carre entre bksl-nl deux points."""bksl-nl return (...)py-strpy-str2 + (...)py-strpy-str2 bksl-nlbksl-nldef pointpy-undlepy-undpluspy-undproche(depart, tab):bksl-nl """ Renvoie les coordonnées du premier point du tableau tab se bksl-nl trouvant à la plus courte distance du point depart."""bksl-nl minpy-undpoint = tab[0]bksl-nl minpy-unddist = ... bksl-nl for i in range(1, len(tab)):bksl-nl if distancepy-undcarre(tab[i], depart) < ...: bksl-nl minpy-undpoint = ... bksl-nl minpy-unddist = ... bksl-nl return minpy-undpointbksl-nlbksl-nl



Solution

###
def distancepy-undcarre(point1, point2):bksl-nl """ Calcule et renvoie la distance au carre entre bksl-nl deux points."""bksl-nl return (point1[0] - point2[0])py-strpy-str2 + ((point1[1] - point2[1]))py-strpy-str2bksl-nlbksl-nldef pointpy-undlepy-undpluspy-undproche(depart, tab):bksl-nl """ Renvoie les coordonnĂ©es du premier point du tableau tab se bksl-nl trouvant Ă  la plus courte distance du point depart."""bksl-nl minpy-undpoint = tab[0]bksl-nl minpy-unddist = distancepy-undcarre(depart, tab[0])bksl-nl for i in range(1, len(tab)):bksl-nl if distancepy-undcarre(tab[i], depart) < minpy-unddist: bksl-nl minpy-undpoint = tab[i] bksl-nl minpy-unddist = distancepy-undcarre(tab[i], depart)bksl-nl return minpy-undpointbksl-nlbksl-nltry:bksl-nl assert distancepy-undcarre((1, 0), (5, 3)) == 25bksl-nl assert distancepy-undcarre((1, 0), (0, 1)) == 2bksl-nl assert pointpy-undlepy-undpluspy-undproche((0, 0), [(7, 9), (2, 5), (5, 2)]) == (2, 5)bksl-nl assert pointpy-undlepy-undpluspy-undproche((5, 2), [(7, 9), (2, 5), (5, 2)]) == (5, 2)bksl-nl print('Tout semble correct 👍')bksl-nl bksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl