Eres el dueño de un restaurante. Está abriendo en una nueva área en Cartesia donde solo hay una carretera principal, conocida como el eje y. Desea colocar su restaurante de manera que minimice la distancia total desde su restaurante y cada una de las casas en esa área.
Entrada :
La entrada será
n, the number of houses
house1
house2
house3
...
houseN
donde cada casa es una coordenada en la forma x y
. Cada unidad representa un kilómetro.
Puede tomar la entrada como una cadena o proporcionar una función que tome la entrada, en cualquier formato que elija, como sus argumentos.
Salida : la coordenada y de su restaurante (recuerde, se ubicará en el eje y). En realidad, se ubicará al costado de la carretera, pero la diferencia es insignificante.
Esencialmente, si la enésima casa es h_n
y D
es la función de distancia, entonces desea encontrar k
tal queD(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))
esté minimizada.
Tenga en cuenta que la distancia se calcula como si el cliente viaja en línea recta desde su casa hasta el restaurante. Esa es la distancia desde (x, y)
su restaurante essqrt(x^2 + (y - k)^2)
.
La salida debe tener una precisión de al menos 2 decimales.
La salida puede imprimirse como una cadena o puede devolverse desde la función.
Ejemplo de entrada / salida:
Input:
2
5.7 3.2
8.9 8.1
Output:
5.113013698630137
La distancia total en este ejemplo es de aproximadamente 15.4003
kilómetros.
Este es el código de golf: el código más corto gana.
PD: También estoy interesado en una solución matemática que no sea solo la fuerza bruta. No ganará el código de golf, pero obtendrá algunos votos positivos. Así es como hice el problema de ejemplo:
Deje que el punto A se ubique en A (5.7, 3.2) y B en B (8.9, 8.1). Deje que la solución apunte a (0, k) sea C. Refleje A sobre el eje y para hacer A 'en (-5.7, 3.2). La distancia de A 'a C es igual a la distancia de A a C. Por lo tanto, el problema puede reducirse al punto C de manera que se minimice A'C + CB. Obviamente, este sería el punto C que se encuentra en la línea A'B.
No sé si esto se generalizaría bien a 3 o más puntos.
sqrt(diffX^2 + diffY^2)
? Entonces euclidiano. Sé que no encaja perfectamente en el escenario, pero supongo que el cliente viaja en línea recta de alguna manera desde su casa.
D
? Euclidiana?