Breve explicación del problema
Escriba un programa para encontrar la distancia mínima entre dos puntos que viajan solo en rayos que emanan del origen y círculos centrados en el origen.
Explicación de la premisa
Ahora imaginemos que estamos en un avión, y en este avión solo se nos permite viajar de maneras especiales. Se nos permite viajar en cualquier rayo que provenga del origen.
También podemos viajar en cualquier círculo centrado en un círculo
Ahora nuestro objetivo es viajar de un punto de este avión a otro. Sin embargo, no podemos simplemente viajar en un sendero euclidiano simple, solo podemos hacer esto si los puntos caen en un rayo que emana del centro.
Podemos viajar en este porque cae en uno de nuestros rayos.
También podemos viajar en círculos centrados en el origen.
Ejemplos
Ahora aquí está el desafío:
Tenemos que ir de un punto a otro en el camino más corto; a menudo es una combinación de viajar en círculos y rayos.
Esto, sin embargo, también podría estar viajando en dos rayos.
A veces existen dos caminos que recorren la distancia mínima.
Problema
Su desafío es escribir un programa que cuando se le den dos puntos nos dará la distancia mínima entre ellos si seguimos estas reglas. Las entradas se pueden dar en forma rectangular o polar y la salida debe ser un número, la distancia entre ellos.
Casos de prueba
(con entrada rectangular)
(1,1) (1,-1) -> ~ 2.22144
(0,0) (1, 1) -> ~ 1.41421
(1,0) (-0.4161 , 0.90929) -> ~ 2
(1,1) (1, 0) -> ~ 1.19961
(1,2) (3, 4) -> ~ 3.16609