# tesh13's solution

## to Space Age in the JavaScript Track

Published at Jul 13 2020 · 0 comments
Instructions
Test suite
Solution

Given an age in seconds, calculate how old someone would be on:

• Mercury: orbital period 0.2408467 Earth years
• Venus: orbital period 0.61519726 Earth years
• Earth: orbital period 1.0 Earth years, 365.25 Earth days, or 31,557,600 seconds
• Mars: orbital period 1.8808158 Earth years
• Jupiter: orbital period 11.862615 Earth years
• Saturn: orbital period 29.447498 Earth years
• Uranus: orbital period 84.016846 Earth years
• Neptune: orbital period 164.79132 Earth years

So if you were told someone were 1,000,000,000 seconds old, you should be able to say that they're 31.69 Earth-years old.

If you're wondering why Pluto didn't make the cut, go watch this youtube video.

## Setup

Go through the setup instructions for Javascript to install the necessary dependencies:

https://exercism.io/tracks/javascript/installation

## Requirements

Please `cd` into exercise directory before running all below commands.

Install assignment dependencies:

``````\$ npm install
``````

## Making the test suite pass

Execute the tests with:

``````\$ npm test
``````

In the test suites all tests but the first have been skipped.

Once you get a test passing, you can enable the next one by changing `xtest` to `test`.

## Submitting Solutions

Once you have a solution ready, you can submit it using:

``````exercism submit space-age.js
``````

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

## Exercise Source Credits

Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. http://pine.fm/LearnToProgram/?Chapter=01

### space-age.spec.js

``````import { age } from './space-age';

describe('Space Age', () => {
test('age on Earth', () => {
expect(age('earth', 1000000000)).toEqual(31.69);
});

xtest('age on Mercury', () => {
expect(age('mercury', 2134835688)).toEqual(280.88);
});

xtest('age on Venus', () => {
expect(age('venus', 189839836)).toEqual(9.78);
});

xtest('age on Mars', () => {
expect(age('mars', 2129871239)).toEqual(35.88);
});

xtest('age on Jupiter', () => {
expect(age('jupiter', 901876382)).toEqual(2.41);
});

xtest('age on Saturn', () => {
expect(age('saturn', 2000000000)).toEqual(2.15);
});

xtest('age on Uranus', () => {
expect(age('uranus', 1210123456)).toEqual(0.46);
});

xtest('age on Neptune', () => {
expect(age('neptune', 1821023456)).toEqual(0.35);
});
});``````
``````export const age = (planet, seconds) => {
let age = secondsToYears(seconds) / EARTH_YEARS[planet];
return Number(age.toFixed(2));
};

const secondsToYears = (seconds) => {
let years = seconds / SECONDS_IN_EARTH_YEAR;
return years
// let minutes = seconds / 60;
// let hours = minutes / 60;
// let days = hours / 24;
// let years = days / 365.25;
// return years;
}

const SECONDS_IN_EARTH_YEAR = 60 * 60 * 24 * 365.25;

const EARTH_YEARS = {
'mercury': 0.2408467,
'venus': 0.61519726,
'earth': 1,
'mars': 1.8808158,
'jupiter': 11.862615,
"saturn": 29.447498,
"uranus": 84.016846,
"neptune": 164.79132,
}``````