Skip to content

Instantly share code, notes, and snippets.

@NeuTrix
Last active July 13, 2018 04:15
Show Gist options
  • Save NeuTrix/8c2b484519cb6a5e0be061f3c689c082 to your computer and use it in GitHub Desktop.
Save NeuTrix/8c2b484519cb6a5e0be061f3c689c082 to your computer and use it in GitHub Desktop.
Solution in JavaScript warning: parseInt() is nutty!
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