function upsideDown(x, y) {
const list = ["0", "1", "6", "8", "9"];
let count = 0;
for (let i = parseInt(x); i <= parseInt(y); i++) {
let curr = i.toString().split("");
let upsideDownCurr = "";
if (
!curr.every(function (x) {
return list.includes(x);
})
)
continue; // Skips if number includes non-upDown num
for (let j = 0; j < curr.length; j++)
if (curr[j] === "6") upsideDownCurr = "9" + upsideDownCurr;
else if (curr[j] === "9") upsideDownCurr = "6" + upsideDownCurr;
else upsideDownCurr = `${curr[j]}` + upsideDownCurr;
if (upsideDownCurr === curr.join("")) count++;
}
return count;
}
Input:
Your function will receive two strings, each comprised of digits representing a positive integer. These two values will represent the upper and lower bounds of a range.
Output:
Your function must return the number of valid upside down numbers within the range of the two input arguments, including both upper and lower bounds.
What is an Upside-Down Number?
An upside down number is an integer that appears the same when rotated 180 degrees, as illustrated below.
This works fine untill
Test.assertEquals(upsideDown('100000','12345678900000000'),718650)
any idea how to optimize the code?