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, fornecemos a definição do
tipo de dados algébrico
chamado Planet.
Você precisa implementar a função ageOn, que calcula quantos
anos alguém teria em um Planet, dada uma idade em segundos.
Você pode usar a assinatura fornecida se estiver na dúvida sobre os tipos, mas não deixe que ela restrinja sua criatividade:
ageOn :: Planet -> Float -> Float
Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.