Este es un hoyo de mini golf:
El límite exterior es un círculo con radio 10 y centro (0,0). El límite interior es un círculo con radio 3 y centro (0,5). El tee está en (0, -8). Suponga que la pelota es solo un punto con radio 0.
La dinámica de la pelota se rige por las siguientes reglas:
La pelota es golpeada inicialmente con energía 50 y con un ángulo dado.
- El ángulo está en disminución en el sistema de coordenadas cartesianas, por lo que 0 ° significa directamente a la derecha, 90 ° está directamente hacia arriba, y así sucesivamente.
Cuando la pelota golpea el borde del círculo interno o externo, rebota del círculo usando la ley de la reflexión.
La pelota pierde energía a medida que se mueve.
Por cada unidad de tierra que cubre, pierde 1 unidad de energía.
Cada vez que rebota en una pared pierde 5 unidades de energía.
La pelota se detiene cuando se queda sin energía o cuando cae en el hoyo.
Si la pelota golpea una pared con <= 5 unidades de energía, se detiene.
Cae en el hoyo si tiene energía <10 cuando está dentro de la distancia 1 del hoyo; de lo contrario, sigue moviéndose.
Desafío
Dadas las coordenadas xy de un hoyo, devuelve un ángulo en el que puedas golpear la pelota para que la pelota caiga en el hoyo (si existe ese ángulo).
Entrada
Tome como entrada las coordenadas x e y del centro del agujero en cualquier forma conveniente. La entrada puede tomarse de STDIN (o la alternativa más cercana), parámetros de línea de comando o argumentos de función.
Salida
Imprima o regrese un ángulo en grados en el que la pelota pueda ser golpeada desde el tee de manera que la pelota caiga en el hoyo. Si existe tal ángulo, la salida debe estar en el rango [0, 360), de lo contrario, la salida debe ser -1.