O ano é 2525 e você acaba de embarcar em uma jornada para visitar todos os planetas do Sistema Solar (Mercúrio, Vênus, Terra, Marte, Júpiter, Saturno, Urano e Netuno). A primeira parada é Mercúrio, onde a alfândega exige que você preencha um formulário (aparentemente a burocracia não é exclusividade da Terra). Quando você entrega o formulário ao fiscal da alfândega, ele o examina com atenção e franze a testa. "Você realmente espera que eu acredite que tem apenas 50 anos? Você deve estar mais perto dos 200 anos!"
Você acha que é brincadeira e espera que o fiscal comece a rir, mas ele parece estar falando completamente sério. Você percebe que informou sua idade em anos terrestres, mas o fiscal esperava anos mercurianos! Como o período orbital de Mercúrio ao redor do Sol é bem mais curto que o da Terra, você na verdade é bem mais velho em anos mercurianos. Depois de alguns cálculos rápidos, você consegue informar sua idade em anos mercurianos. O fiscal sorri, satisfeito, e faz sinal para você passar. Você anota mentalmente para calcular de antemão sua idade em cada planeta antes das próximas verificações alfandegárias, para evitar confusões assim.
Se você está se perguntando por que Plutão ficou de fora, assista a este vídeo do YouTube.
Dada uma idade em segundos, calcule quantos anos alguém teria em um planeta do nosso Sistema Solar.
Um ano terrestre equivale a 365.25 dias terrestres, ou 31,557,600 segundos. Se você soubesse que alguém tem 1,000,000,000 segundos de idade, essa idade seria 31.69 anos terrestres.
Para os outros planetas, você precisa levar em conta o período orbital deles em anos terrestres:
| Planeta | Período orbital em anos terrestres |
|---|---|
| Mercury | 0.2408467 |
| Venus | 0.61519726 |
| Earth | 1.0 |
| Mars | 1.8808158 |
| Jupiter | 11.862615 |
| Saturn | 29.447498 |
| Uranus | 84.016846 |
| Neptune | 164.79132 |
A duração real de uma órbita completa da Terra ao redor do Sol é mais próxima de 365.256 dias (1 ano sideral). O calendário gregoriano tem, em média, 365.2425 dias. Embora não seja totalmente preciso, 365.25 é o valor usado neste exercício. Veja Ano na Wikipédia para conhecer outras formas de medir um ano.
Neste exercício, espera-se que você retorne as idades usando uma [quantidade física] com uma unidade personalizada que representa a duração de um ano naquele planeta. No Arturo, uma quantidade é formada por um valor numérico e uma unidade de medida associada.
length: 10`m
units length ; `m
scalar length ; 10
10`m * 10`m ; 100 m²
A unidade `yr nativa do Arturo é convertida para 31556952 segundos. Por isso, você vai precisar definir e usar a sua própria unidade de ano em termos do número de segundos citado antes nas instruções.
Quantidades podem ser convertidas para outra unidade compatível.
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
Por causa das limitações de precisão dos números de ponto flutuante, às vezes o Arturo armazena o escalar como um número racional.
A função to pode ser usada para recuperar o valor como um número de ponto flutuante aproximado.
length: convert 1`m `ft ; 1250/381 ft
to :floating length ; 3.280839895013123
O Arturo também permite especificar nossas próprias unidades para as quantidades.
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
Crie sua conta no Exercism para aprender e dominar Arturo com 79 exercícios e mentoria humana de verdade, tudo de graça.