Questa è una mini buca da golf:
Il confine esterno è un cerchio con raggio 10 e centro (0,0). Il confine interno è un cerchio con raggio 3 e centro (0,5). Il tee è a (0, -8). Supponiamo che la palla sia solo un punto con raggio 0.
Le dinamiche della palla sono regolate dalle seguenti regole:
Inizialmente la palla viene colpita con energia 50 e con un angolo dato.
- L'angolo è in declino nel sistema di coordinate cartesiane, quindi 0 ° significa direttamente a destra, 90 ° è direttamente in alto e così via.
Quando la palla colpisce il bordo del cerchio interno o esterno, rimbalza sul cerchio usando la legge della riflessione.
La palla perde energia mentre si muove.
Per ogni unità di terreno coperta, perde 1 unità di energia.
Ogni volta che rimbalza da un muro perde 5 unità di energia.
La palla si ferma quando si esaurisce l'energia o quando cade nella buca.
Se la palla colpisce un muro con <= 5 unità di energia, si ferma.
Cade nel buco se ha energia <10 quando è entro la distanza 1 del buco, altrimenti continua a muoversi.
Sfida
Date le coordinate xy di una buca, restituisci un angolo in cui puoi colpire la palla per farla cadere nella buca (se esiste un tale angolo).
Ingresso
Prendi come input le coordinate x e y del centro del foro in qualsiasi forma conveniente. L'input può essere preso da STDIN (o alternativa più vicina), parametri della riga di comando o argomenti di funzione.
Produzione
Stampa o restituisci un angolo in gradi in cui la palla può essere colpita dal tee in modo tale che la palla cada nella buca. Se esiste un tale angolo, l'uscita dovrebbe essere compresa nell'intervallo [0, 360), altrimenti l'uscita dovrebbe essere -1.