Menu


1NSI

Les exercices python à connaître

premiers pas en Python
E1 boucles
E2 boucles
E3 boucles
E4 variables
E5 structure conditionnelle
E6 boucles
Un peu de binaire
E1 Nombre de bits
E2 Décalage binaire
E3 string
fonctions, str et listes
E1 Un compteur
E2 liste de nombres aléatoires
E3 moyenne d'une liste
E4 maximum d'une liste
E5 indices ou valeurs ?
Algorithmique partie 2
E1 Recherche séquentielle
E2 Recherche dichotomique
E3 Recherche dichotomique
E4 Nombre de 1
Les algorithmes de tri
E1 Est trié ?
E2 Tableau de 0 et de 1
E3 Inversion dans un tableau
tuples et dictionnaires
E1 Tuple
E2 Police, police
E3 Durées
E4 Anniversaires
E5 Message secret
E6 dictionnaire des occurences
E7 casser un digicode
Algorithmes gloutons
E1 Rendu de monnaie
E2 Livraisons à Manhattan

Livraisons à Manhattan

Un livreur new-yorkais organise sa tournée. Le quartier dans lequel il évolue est un quadrillage : toutes les rues suivent l'axe Nord ↔ Sud ou l'axe Est ↔ Ouest.
Les adresses de ses livraisons sont donc des couples de coordonnées, (2, 3) par exemple. La première coordonnée est l'abscisse du point, la seconde son ordonnée.
Ces adresses de livraison sont données dans une liste python. Par exemple :
livraisons = [(2, 0), (0, 1), (3, 3), (2, 3)]

Ce qui correspond à la carte ci-dessous :

livraisons.png

Afin de déterminer son itinéraire, il décide de toujours livrer en priorité l'adresse la plus « proche » de sa position actuelle. Se déplaçant le long des rues, il mesure la distance \(AB\) entre deux points de coordonnées \( \left(x_A; y_A \right)\) et \( \left(x_B; y_B \right)\) en faisant :

\( AB=\vert x_B-x_A\vert + \vert y_B-y_A\vert \)

  • Pour calculer la valeur absolue on pourra utiliser la syntaxe python abs(x).

On se propose dans cet exercice d'aider le livreur à déterminer son trajet en écrivant les deux fonctions décrites ci-dessous.

  • La fonction distance qui prend en paramètres les coordonnées de deux points A et B donnés chacun sous la forme d'un tuple de deux entiers et qui calcule la distance entre ces deux points.
    >>> A = (0, 1)
    >>> B = (2, 3)
    >>> C = (1, 6)
    >>> distance(A, B)
    4
    >>> distance(B, A)
    4
    >>> distance(A, C)
    6
    >>> distance(B, C)
    4
  • la fonction prochaine_livraison qui prend en paramètres la liste des adresses de livraison et la position actuelle du livreur et renvoie les coordonnées du prochain point à livrer.
    Si deux points sont à la même distance de la position actuelle du livreur on renverra les coordonnées du premier point rencontré dans la liste.
    >>> A = (0, 1)
    >>> B = (2, 3)
    >>> distance(A, B)
    4
    >>> livraisons_1 = [(2, 0), (0, 1), (3, 3), (2, 3)]
    >>> prochaine_livraison(livraisons_1, (0, 0))
    (0, 1)
    >>> livraisons_2 = [(2, 0), (3, 3), (2, 3)]
    >>> prochaine_livraison(livraisons_2, (0, 1))
    (2, 0)
    >>> livraisons_3 = [(3, 3), (2, 3)]
    >>> prochaine_livraison(livraisons_3, (2, 0))
    (2, 3)
    >>> livraisons_4 = [(3, 3)]
    >>> prochaine_livraison(livraisons_4, (2, 3))
    (3, 3)
    >>> livraisons_5 = [(1, 0), (0, 1)]
    >>> prochaine_livraison(livraisons_5, (0, 0))
    (1, 0)

source : https://codex.forge.apps.education.fr