56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# Space Age
|
|
|
|
Write a program that, given an age in seconds, calculates how old someone is in terms of a given planet's solar years.
|
|
|
|
Given an age in seconds, calculate how old someone would be on:
|
|
|
|
- Earth: orbital period 365.25 Earth days, or 31557600 seconds
|
|
- Mercury: orbital period 0.2408467 Earth years
|
|
- Venus: orbital period 0.61519726 Earth years
|
|
- 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 Earth-years old.
|
|
|
|
If you're wondering why Pluto didn't make the cut, go watch [this
|
|
youtube video](http://www.youtube.com/watch?v=Z_2gbGXzFbs).
|
|
|
|
## Getting Started
|
|
|
|
Make sure you have read the [getting started with C++](http://help.exercism.io/getting-started-with-cpp.html)
|
|
page on the [exercism help site](http://help.exercism.io/). This covers
|
|
the basic information on setting up the development environment expected
|
|
by the exercises.
|
|
|
|
## Passing the Tests
|
|
|
|
Get the first test compiling, linking and passing by following the [three
|
|
rules of test-driven development](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
|
|
Create just enough structure by declaring namespaces, functions, classes,
|
|
etc., to satisfy any compiler errors and get the test to fail. Then write
|
|
just enough code to get the test to pass. Once you've done that,
|
|
uncomment the next test by moving the following line past the next test.
|
|
|
|
```C++
|
|
#if defined(EXERCISM_RUN_ALL_TESTS)
|
|
```
|
|
|
|
This may result in compile errors as new constructs may be invoked that
|
|
you haven't yet declared or defined. Again, fix the compile errors minimally
|
|
to get a failing test, then change the code minimally to pass the test,
|
|
refactor your implementation for readability and expressiveness and then
|
|
go on to the next test.
|
|
|
|
Try to use standard C++11 facilities in preference to writing your own
|
|
low-level algorithms or facilities by hand. [CppReference](http://en.cppreference.com/)
|
|
is a wiki reference to the C++ language and standard library. If you
|
|
are new to C++, but have programmed in C, beware of
|
|
[C traps and pitfalls](http://www.slideshare.net/LegalizeAdulthood/c-traps-and-pitfalls-for-c-programmers).
|
|
|
|
## Source
|
|
|
|
Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. [view source](http://pine.fm/LearnToProgram/?Chapter=01)
|