Imagínese viajar a un punto que se encuentra A millas de distancia horizontalmente y B millas de distancia verticalmente de su posición actual. O en otras palabras, viajar de (0, 0)
un punto a otro (a, b)
. ¿Qué tan lejos necesitarías para terminar viajando? Esto parece una pregunta directa, pero la respuesta depende de a quién le pregunte. Si eres un cuervo, y se puede viajar en línea recta , la distancia recorrida es sólo la distancia euclídea al (a, b)
. Esto es
sqrt(a^2 + b^2)
Pero si solo eres un humano aburrido, realmente no quieres caminar tan lejos, así que tendrás que tomar un taxi. La mayoría de los taxis no conducirán en línea recta hacia su destino porque generalmente intentan permanecer en las carreteras. Entonces, la distancia real que terminarás viajando es la suma de la distancia vertical y la distancia horizontal. O la fórmula es:
abs(a) + abs(b)
Esto se llama la distancia del taxi . Esta imagen demuestra muy bien la diferencia entre los dos:
Para viajar (6, 6)
, un cuervo puede volar en la línea verde, y esto le da una distancia de 6 * sqrt(2)
aproximadamente 8.49. Un taxi puede tomar los caminos rojo, azul o amarillo, pero todos tomarán 12.
Esto lleva a la verdadera pregunta que estoy haciendo. Si un cuervo y un taxi salen de un punto (0, 0)
y viajan a un punto (a, b)
, ¿cuánto más dura el camino del taxi? O, en más jerga matemática,
Dado un vector bidimensional, determine la diferencia entre el norm2 del vector y la norma1 del vector.
Debe escribir el programa o función más breve posible para responder a esta pregunta. Puede elegir tomar 'a' y 'b' como dos entradas separadas, o como una tupla de dos elementos. Puede tomar entrada y salida en cualquier formato razonable. Si la diferencia no es un entero, debe tener una precisión de al menos dos decimales.
Siempre puede suponer que 'a' y 'b' serán enteros, y que ambos no serán 0. (aunque es posible que cualquiera de ellos sea cero)
Como de costumbre, se aplican las lagunas estándar e intenta hacer que su programa sea lo más corto posible, contado en bytes.
Votaré cualquier respuesta que publique una explicación de cómo funciona el código y demuestre los trucos geniales utilizados para guardar bytes.
Aquí hay algunos ejemplos para que pruebe su código:
#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
Diviértete jugando al golf! :)
10,10
debe ser 5.86, ya que aparece 5.85786...
y redondeaste el que está debajo.