Imaginez voyager jusqu'à un point situé A miles de distance horizontalement et B miles à la verticale de votre position actuelle. Ou en d'autres termes, voyager de (0, 0)
point à point (a, b)
. Jusqu'où auriez-vous besoin de finir par voyager? Cela semble être une question simple, mais la réponse dépend de qui vous demandez. Si vous êtes un corbeau, et vous pouvez voyager à vol d'oiseau , la distance parcourue est juste la distance euclidienne à (a, b)
. C'est
sqrt(a^2 + b^2)
Mais si vous êtes juste un humain ennuyeux, vous ne voulez pas vraiment marcher aussi loin, alors vous devrez prendre un taxi. La plupart des taxis ne conduisent pas en ligne droite vers votre destination car ils essaient généralement de rester sur les routes. Ainsi, la distance réelle à parcourir est la somme de la distance verticale et de la distance horizontale. Ou la formule est:
abs(a) + abs(b)
Ceci s'appelle la distance de taxi . Cette image montre bien la différence entre les deux:
Pour voyager (6, 6)
, un corbeau peut simplement voler sur la ligne verte, ce qui donne une distance d' 6 * sqrt(2)
environ 8,49. Un taxi peut emprunter les sentiers rouge, bleu ou jaune, mais ils emprunteront tous 12 km.
Cela conduit à la vraie question que je pose. Si un corbeau et un taxi partent tous deux d'un point (0, 0)
à l'autre (a, b)
, combien de temps leur chemin est-il long? Ou, dans plus de jargon mathématique,
À partir d’un vecteur bidimensionnel, déterminez la différence entre la norme norm2 du vecteur et la norm1 du vecteur.
Vous devez écrire le programme ou la fonction le plus court possible pour répondre à cette question. Vous pouvez choisir de prendre "a" et "b" comme deux entrées séparées ou comme un tuple à deux éléments. Vous pouvez entrer et sortir dans n'importe quel format raisonnable. Si la différence n'est pas un entier, vous devez être précis à au moins deux décimales.
Vous pouvez toujours supposer que 'a' et 'b' seront des entiers et qu'ils ne seront pas tous les deux égaux à 0. (Bien qu'il soit possible que l'un ou l'autre soit égal à zéro)
Comme d'habitude, des failles standard s'appliquent et tentent de rendre votre programme aussi court que possible, compté en octets.
Je vais upvoter toute réponse qui affiche une explication de la façon dont le code fonctionne, et montre toutes les astuces intéressantes utilisées pour économiser des octets.
Voici quelques exemples pour vous permettre de tester votre code sur:
#input #output
3, 4 2
-3, 4 2
-3, -4 2
6, 6 3.51
42, 0 0
10, 10 5.86
3, 3 1.76
Amusez-vous à jouer au golf! :)
10,10
doit être 5.86, car il vient 5.85786...
et vous avez arrondi le test en dessous.