Rutas
/
Cairo
Cairo
/
Ejercicios
/
Era espacial
Era espacial

Era espacial

Fácil

Introducción

Es el año 2525 y acabas de embarcarte en un viaje para visitar todos los planetas del sistema solar (Mercurio, Venus, la Tierra, Marte, Júpiter, Saturno, Urano y Neptuno). La primera parada es Mercurio, donde las aduanas exigen que rellenes un formulario (por lo visto, la burocracia no es exclusiva de la Tierra). Cuando entregas el formulario al agente de aduanas, este lo examina con atención y frunce el ceño. «¿De verdad esperas que me crea que solo tienes 50 años? ¡Debes de andar cerca de los 200!»

Te hace gracia y esperas a que el agente de aduanas se eche a reír, pero parece hablar totalmente en serio. Entonces te das cuenta de que has puesto tu edad en años terrestres, pero el agente la esperaba en años mercurianos. Como el periodo orbital de Mercurio alrededor del Sol es bastante más corto que el de la Tierra, en años mercurianos eres en realidad mucho mayor. Tras unos cálculos rápidos, consigues dar tu edad en años mercurianos. El agente de aduanas sonríe, satisfecho, y te hace un gesto para que pases. Te apuntas mentalmente que debes calcular de antemano tu edad en cada planeta antes de futuros controles de aduanas, para evitar este tipo de confusiones.

Note

Si te preguntas por qué Plutón no entró en la lista, ve a ver este vídeo de YouTube.

Instrucciones

Dada una edad en segundos, calcula cuántos años tendría alguien en un planeta de nuestro sistema solar.

Un año terrestre equivale a 365,25 días terrestres, o 31.557.600 segundos. Si te dijeran que alguien tiene 1.000.000.000 de segundos, su edad sería 31,69 años terrestres.

Para los demás planetas, tienes que tener en cuenta su periodo orbital en años terrestres:

Planeta Periodo orbital en años terrestres
Mercurio 0,2408467
Venus 0,61519726
Tierra 1,0
Marte 1,8808158
Júpiter 11,862615
Saturno 29,447498
Urano 84,016846
Neptuno 164,79132
Note

La duración real de una órbita completa de la Tierra alrededor del Sol se acerca más a 365,256 días (1 año sidéreo). El calendario gregoriano tiene, de media, 365,2425 días. Aunque no es del todo exacto, 365,25 es el valor que se usa en este ejercicio. Consulta Año en Wikipedia para conocer más formas de medir un año.

Implementación

En Cairo, donde no hay soporte nativo para los números de coma flotante, representamos los valores fraccionarios mediante números enteros.

Este enfoque es esencial en el desarrollo de blockchain para mantener la precisión en los cálculos.

En este ejercicio, usamos aritmética de coma fija convirtiendo los periodos orbitales a microsegundos.

Por ejemplo, el periodo orbital de Mercurio, de 0.2408467 años terrestres, se convierte en 240,846,700 microsegundos al multiplicarlo por 1,000,000.

Para tener en cuenta la precisión decimal, los casos de prueba asumen que la edad resultante tiene dos decimales, representados como números enteros.

Esto significa que una edad de 31.69 años se almacena como 3169 en el código.

Para lograrlo, multiplicamos por 100 antes de hacer la división.

Aquí tienes un ejemplo:

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

Al usar este método, te aseguras de que los valores fraccionarios se representen con exactitud como números enteros y de mantener la precisión de dos decimales requerida, algo crucial para que las pruebas se aprueben.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Cairo Exercism

¿Listo para empezar Era espacial?

Regístrate en Exercism para aprender y dominar Cairo con 25 conceptos68 ejercicios y mentoría humana real, todo gratis.