Trilhas
/
Cairo
Cairo
/
Exercícios
/
Era espacial
Era espacial

Era espacial

Fácil

Introdução

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.

Note

Se você está se perguntando por que Plutão ficou de fora, assista a este vídeo do YouTube.

Instruções

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
Note

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.

Implementação

Em Cairo, onde não há suporte nativo a números de ponto flutuante, representamos valores fracionários usando inteiros.

Essa abordagem é essencial no desenvolvimento de blockchain para manter a precisão nos cálculos.

Neste exercício, usamos aritmética de ponto fixo, convertendo os períodos orbitais em microssegundos.

Por exemplo, o período orbital de Mercúrio, de 0.2408467 anos terrestres, se torna 240,846,700 microssegundos ao multiplicar por 1,000,000.

Para levar em conta a precisão decimal, os casos de teste assumem que a idade resultante tem duas casas decimais, representadas como inteiros.

Isso significa que uma idade de 31.69 anos é armazenada como 3169 no código.

Para isso, multiplicamos por 100 antes de fazer a divisão.

Veja um exemplo:

let mercury_orbital_period = 240_846_700; // in microseconds
let age_microseconds = age_seconds * 1_000_000;
// multiplying with 100 to retain 2 decimal places
age_microseconds * 100 / mercury_orbital_period

Usando esse método, você garante que os valores fracionários sejam representados com precisão como inteiros, mantendo a precisão de duas casas decimais exigida, o que é crucial para que os testes passem.

Editar via GitHub O link abre em uma nova janela ou aba
Cairo Exercism

Tudo pronto para começar Era espacial?

Crie sua conta no Exercism para aprender e dominar Cairo com 25 conceitos68 exercícios e mentoria humana de verdade, tudo de graça.