L'anno è il 2525 e hai appena intrapreso un viaggio per visitare tutti i pianeti del Sistema Solare (Mercurio, Venere, Terra, Marte, Giove, Saturno, Urano e Nettuno). La prima tappa è Mercurio, dove la dogana richiede che tu compili un modulo (a quanto pare, la burocrazia non è una prerogativa della Terra). Mentre consegni il modulo al doganiere, questi lo esamina con attenzione e aggrotta la fronte. «Ti aspetti davvero che creda che tu abbia solo 50 anni? Devi essere più vicino ai 200!»
Divertito, aspetti che il doganiere inizi a ridere, ma sembra essere serissimo. Ti rendi conto che hai inserito la tua età in anni terrestri, ma il doganiere se l'aspettava in anni mercuriani! Dato che il periodo orbitale di Mercurio intorno al Sole è notevolmente più breve di quello della Terra, in anni mercuriani sei in realtà molto più vecchio. Dopo qualche calcolo veloce, riesci a fornire la tua età in anni mercuriani. Il doganiere sorride, soddisfatto, e ti fa cenno di passare. Ti riprometti di precalcolare la tua età specifica per ogni pianeta prima dei futuri controlli doganali, per evitare simili confusioni.
Se ti stai chiedendo perché Plutone non è stato incluso, guarda questo video su YouTube.
Data un'età in secondi, calcola quanti anni avrebbe una persona su un pianeta del nostro sistema solare.
Un anno terrestre equivale a 365.25 giorni terrestri, ovvero 31,557,600 secondi. Se ti dicessero che qualcuno ha 1,000,000,000 secondi di vita, la sua età sarebbe di 31.69 anni terrestri.
Per gli altri pianeti, devi tenere conto del loro periodo orbitale in anni terrestri:
| Pianeta | Periodo orbitale in anni terrestri |
|---|---|
| Mercury | 0.2408467 |
| Venus | 0.61519726 |
| Earth | 1.0 |
| Mars | 1.8808158 |
| Jupiter | 11.862615 |
| Saturn | 29.447498 |
| Uranus | 84.016846 |
| Neptune | 164.79132 |
La durata effettiva di un'orbita completa della Terra intorno al Sole è più vicina a 365.256 giorni (1 anno siderale). Il calendario gregoriano ha, in media, 365.2425 giorni. Pur non essendo del tutto preciso, 365.25 è il valore usato in questo esercizio. Vedi Anno su Wikipedia per altri modi di misurare un anno.
In questo esercizio ti verrà chiesto di restituire le età usando una grandezza fisica con un'unità personalizzata che rappresenta la durata di un singolo anno su quel pianeta. In Arturo, una quantità è composta da un valore numerico e da una unità di misura associata.
length: 10`m
units length ; `m
scalar length ; 10
10`m * 10`m ; 100 m²
L'unità `yr integrata di Arturo corrisponde a 31556952 secondi. Quindi dovrai definire e usare una tua unità di anno, in termini del numero di secondi a cui si fa riferimento prima nelle istruzioni.
Le quantità possono essere convertite in un'altra unità compatibile.
convert 1`m `ft ; 1250/381 ft
convert 100`m2 `ft2 ; 156250000/145161 ft²
property `m ; length
property `m2 ; area
convert 1`m `m2 ; conversion error results
A causa dei limiti di precisione dei numeri in virgola mobile, a volte Arturo memorizza lo scalare come numero razionale.
La funzione to può essere usata per ottenere invece il valore come numero in virgola mobile approssimativo.
length: convert 1`m `ft ; 1250/381 ft
to :floating length ; 3.280839895013123
Arturo ci permette anche di specificare unità personalizzate per le quantità.
specify 'nauMile 1.151`mi
property `nauMile length
specify 'lea 3.00579`nauMile
property `lea ; length
depth: 20000`lea
convert depth `km ; 111355.7993425152 km
Iscriviti a Exercism per imparare e padroneggiare Arturo con 79 esercizi e il mentoring di persone reali, tutto gratis.