1
var superpalindromesInRange = function (left, right) {2
let ans = 9 >= left && 9 <= right ? 1 : 0;4
const isPal = (str) => {5
for (let i = 0, j = str.length - 1; i < j; i++, j--)6
if (str.charAt(i) !== str.charAt(j)) return false;10
for (let dig = 1; dig < 10; dig++) {11
let isOdd = dig % 2 && dig !== 1,12
innerLen = (dig >> 1) - 1,13
innerLim = Math.max(1, 2 ** innerLen),15
midLim = isOdd ? 3 : 1;16
for (let edge = 1; edge < 3; edge++) {17
let pal = new Uint8Array(dig);18
(pal[0] = edge), (pal[dig - 1] = edge);19
if (edge === 2) (innerLim = 1), (midLim = Math.min(midLim, 2));20
for (let inner = 0; inner < innerLim; inner++) {22
let innerStr = inner.toString(2).padStart(innerLen, "0");23
for (let i = 0; i < innerLen; i++)24
(pal[1 + i] = innerStr[i]), (pal[dig - 2 - i] = innerStr[i]);26
for (let mid = 0; mid < midLim; mid++) {27
if (isOdd) pal[midPos] = mid;28
let palin = ~~pal.join(""),29
square = BigInt(palin) * BigInt(palin);30
if (square > right) return ans;31
if (square >= left && isPal(square.toString())) ans++;