-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTortoiseRacing.js
More file actions
26 lines (18 loc) · 1.09 KB
/
TortoiseRacing.js
File metadata and controls
26 lines (18 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
Description:
Two tortoises named A and B must run a race. A starts with an average speed of 720 feet per hour. Young B knows she runs faster than A and furthermore has not finished her cabbage.
When she starts, at last, she can see that A has a 70 feet lead but B speed is 850 feet per hour. How long will it take B to catch A?
More generally: given two speeds v1 (A speed, integer > 0) and v2 (B speed, integer > 0) and a lead g (integer > 0) how long will it take B to catch A?
The result will be an array [h, mn, s] where h, mn, s is the time needed in hours, minutes and seconds (don't worry for fractions of second). If v1 >= v2 then return nil, nothing, null, None or {-1, -1, -1} for C++, C, Go.
Examples:
race(720, 850, 70) => [0, 32, 18]
race(80, 91, 37) => [3, 21, 49]
*/
function race(v1, v2, g) {
if (v1 >= v2) return null
let speedDiff = v2-v1
, hr = Math.floor(g / speedDiff)
, min = Math.floor((g % speedDiff) * 60 / speedDiff)
, sec = Math.floor((((g % speedDiff) * 60) % speedDiff) * 60 / speedDiff) // crazy stuff!
return [hr, min, sec]
}