Data la latitudine / longitudine di due punti sulla Luna (lat1, lon1)e (lat2, lon2), calcola la distanza tra i due punti in chilometri, usando qualsiasi formula che dia lo stesso risultato della formula haversine.
Ingresso
- Quattro valori interi
lat1, lon1, lat2, lon2in gradi (angolo) o - quattro valori decimali
ϕ1, λ1, ϕ2, λ2in radianti.
Produzione
Distanza in chilometri tra i due punti (decimale con precisione o numero intero arrotondato).
Formula di Haversine
dove
rè il raggio della sfera (supponiamo che il raggio della Luna sia di 1737 km),ϕ1latitudine del punto 1 in radiantiϕ2latitudine del punto 2 in radiantiλ1longitudine del punto 1 in radiantiλ2longitudine del punto 2 in radiantidè la distanza circolare tra i due punti
(fonte: https://en.wikipedia.org/wiki/Haversine_formula )
Altre possibili formule
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))formula di @miles .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))Formula di @Neil .
Esempio in cui gli input sono gradi e output come numero intero arrotondato
42, 9, 50, 2 --> 284
50, 2, 42, 9 --> 284
4, -2, -2, 1 --> 203
77, 8, 77, 8 --> 0
10, 2, 88, 9 --> 2365
Regole
- L'input e l'output possono essere forniti in qualsiasi formato conveniente .
- Specificare nella risposta se gli ingressi sono in gradi o radianti .
- Non è necessario gestire valori di latitudine / longitudine non validi
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Se possibile, includi un collegamento a un ambiente di test online in modo che altre persone possano provare il tuo codice!
- Sono vietate le scappatoie standard .
- Si tratta di code-golf, quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )dover = 1737

