Codesignal Solution: alienShip
Immortal aliens from another galaxy invented new spaceship. This spaceship can travel nearly same of speed of light but never exceed it. Some of them travel in that spaceship to find another planet for them.
When they return to home planet, they aged y
years.
Suppose they left home planet in 2017
, your goal is to find out in which year they will return to home planet.
Speed of spaceship is some fraction of speed of light (v
).
Use precision of 10
digits after decimal.
Example
For v = 0.2
and y = 10
, the output should bealienShip(v, y) = 2027
.
Aliens travel for 10
years in spaceship with 20%
speed of light hence, so they will return to home planet in year 2027
.
Input/Output
- [time limit] 4000ms (js)
-
[input] float v
v · <speed of light>
is velocity of the spaceship.Guaranteed constraints:
0.01 ≤ v < 1
. -
[input] integer y
Alien aged when they reach home planet.
Guaranteed constraints:
1 ≤ y ≤ 100
. -
[output] integer
Year when they return to home planet.
Solution
From the Special Theory of Relativity we know that traveling with speed \(s\) relates to the time passed \(y\) with
\[y = y_0\sqrt{1-\frac{s^2}{c^2}}\]
It follows that
\[ \begin{array}{rrl} & y_0 =& \frac{y}{\sqrt{1-\frac{s^2}{c^2}}}\\ & = & \frac{y}{\sqrt{1-\frac{(v c)^2}{c^2}}}\\ & = & \frac{y}{\sqrt{1-v^2}}\\ \end{array}\]
When we add 2017 as the start date, we find the solution:
alienShip = (v, y) => 2017 + y / (1 - v * v)**.5 | 0