Last active
July 13, 2018 04:15
-
-
Save NeuTrix/8c2b484519cb6a5e0be061f3c689c082 to your computer and use it in GitHub Desktop.
Solution in JavaScript warning: parseInt() is nutty!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function solution(X, Y, D) { | |
let range = (Y - X); // max distance to go | |
// special cases | |
let hops = D === Y ? 0 : parseInt(range / D); // whole jumps [1] | |
let extra = range % D; // any left over hops required | |
console.log(`===>| X:${X} | Y:${Y} | D:${D} | range:${range} | hops:${hops} | extra:${extra} |`) | |
return extra ? hops + 1 : hops | |
} | |
// [1] parseInt() [at least in Chrome] exhibits wonky behavior when working with small fractions. For example: | |
// parseInt(1e-6) === 0 // true, but | |
// parseInt(1e-7) === 0 // false | |
// Why ? Because JavaScipt : https://stackoverflow.com/questions/27650459/function-parseint-1-10000000-returns-1-why | |
// And the nature of JS numbers and the parsing functions inner workings | |
// Therefore, the special case above make this function work on large number sets (e.g. | |
// X= 99999999, Y= 1000000000, D = 1000000000 where D === Y | |
// ===== Question | |
/* | |
https://app.codility.com/demo/results/trainingXMMT9P-S6D/ | |
`Task description | |
A small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to a position greater than or equal to Y. The small frog always jumps a fixed distance, D. | |
Count the minimal number of jumps that the small frog must perform to reach its target. | |
Write a function: | |
function solution(X, Y, D); | |
that, given three integers X, Y and D, returns the minimal number of jumps from position X to a position equal to or greater than Y. | |
For example, given: | |
X = 10 | |
Y = 85 | |
D = 30 | |
the function should return 3, because the frog will be positioned as follows: | |
after the first jump, at position 10 + 30 = 40 | |
after the second jump, at position 10 + 30 + 30 = 70 | |
after the third jump, at position 10 + 30 + 30 + 30 = 100 | |
Assume that: | |
X, Y and D are integers within the range [1..1,000,000,000]; | |
X ≤ Y. | |
Complexity: | |
expected worst-case time complexity is O(1); | |
expected worst-case space complexity is O(1).` | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment