Différentes distances
Il existe en mathématiques et en informatique de nombreuses façons de calculer la distance entre deux points, cet exercice en étudie trois particulières.
Dans chaque question on étudie une distance différente. On demande à chaque fois d'écrire une fonction prenant en paramètres quatre nombres x_A, y_A, x_B et x_B correspondant aux coordonnées de deux points. Cette fonction renvoie la distance décrite.
assert ?
Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.
Ainsi, l'instruction assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.
Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.
La vidéo ne s'affiche pas... ?
Il peut arriver que les vidéos ne s'affichent pas sur des navigateurs basés sur Chrome, ou si un ad-blocker est activé sur le navaigateur. Essayer avec un autre navigateur si vous êtes dans ce cas (FireFox, typiquement), ou désactivez l'ad-blocker.
1. Distance de Manhattan
C'est la distance parcourue « en suivant les rues » dans le quartier de Manhattan. Elle vaut \(12\) dans la figure ci-dessous, quel que soit le chemin suivi :
On la définit comme la somme des « écarts » entre chaque paires de coordonnées des points :
Valeur absolue ?
Avec Python, on calcule la valeur absolue de \(a\) en faisant abs(a).
Exemples
En prenant \(A(2\,;\,-5)\) et \(B(-3\,;\,1)\) :
>>> xA, yA = 2, -5
>>> xB, yB = -3, 1
>>> manhattan(xA, yA, xB, yB)
11
En prenant \(A(2\,;\,2)\) et \(B(2\,;\,2)\) :
>>> xA, yA = 2, 2
>>> xB, yB = 2, 2
>>> manhattan(xA, yA, xB, yB)
0
2. Distance euclidienne
C'est la distance classique du cours de mathématiques (dans le cas où les axes sont perpendiculaires et de même échelle).
On la calcule à l'aide du théorème de Pythagore :
Afin de simplifier les calculs, on utilisera ici le carré de la distance euclidienne :
Carré ?
Avec Python, on calcule le carré de \(a\) en faisant a**2.
Exemples
En prenant \(A(2\,;\,-5)\) et \(B(-3\,;\,1)\) :
>>> xA, yA = 2, -5
>>> xB, yB = -3, 1
>>> euclidienne_carre(xA, yA, xB, yB)
61
En prenant \(A(2\,;\,2)\) et \(B(2\,;\,2)\) :
>>> xA, yA = 2, 2
>>> xB, yB = 2, 2
>>> euclidienne_carre(xA, yA, xB, yB)
0
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
3. Distance de Tchebytchev
Aux échecs, le roi peut se déplacer d'une case à la fois dans toutes les directions.
Combien de coups lui faut-il pour atteindre une case donnée ? La réponse est donnée par la distance de Tchebytchev.
Sur la figure ci-dessous, les cases marquées sont toutes accessibles en \(2\) coups.
Cette distance est égale à l'« écart » maximal entre les coordonnées de chaque point :
Maximum ?
Avec Python, on calcule le maximum de deux nombres a et b en faisant max(a, b).
Exemples
En prenant \(A(2\,;\,-5)\) et \(B(-3\,;\,1)\) :
>>> xA, yA = 2, -5
>>> xB, yB = -3, 1
>>> tchebychev(xA, yA, xB, yB)
6
En prenant \(A(2\,;\,2)\) et \(B(2\,;\,2)\) :
>>> xA, yA = 2, 2
>>> xB, yB = 2, 2
>>> tchebychev(xA, yA, xB, yB)
0
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)