In this kata your task is to create bit calculator. Function arguments are two bit representation of numbers ("101","1","10"...), and you must return their sum in decimal representation.
Test.expect(calculate("10","10") == 4);
Test.expect(calculate("10","0") == 2);
Test.expect(calculate("101","10") == 7);
parseInt and some Math functions are disabled.
Those Math functions are enabled: pow,round,random
We have a function that takes in an integer n, and returns a number x.
Lets call this function findX(n)/find_x(n) (depending on your language):
function findX(n) {
let x = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < 2*n; j++)
x += i + j;
}
return x;
}
The functions loops throught the number n and at every iteration, performs a nested loop on 2*n, at each iteration of this nested loop it increments x with the (nested loop index + parents loop index).
This works well when the numbers are reasonably small.
findX(2) //=> 16
findX(3) //=> 63
findX(5) //=> 325
But may be slow for numbers > 103
So your task is to optimize the function findX/find_x, so it works well for large numbers.
Input Range
1 <= n <= 106 (105 in JS)
Note: This problem is more about logical reasoning than it is about finding a mathematicial formula, infact there are no complex math formula involved