var punishmentNumber = function (n) {
let check = (n, sq, sum, p) => {
if (sum === n && !sq.length) {
return true
}
if (p === sq.length) {
return false
}
if (!sq.length) {
return false
}
let res = false
for (let i = 1; i <= sq.length; i++) {
res = res || check(n, sq.slice(i), sum + Number(sq.slice(0, i)), 0)
}
return res
}
let start = 1
let res = []
while (start <= n) {
let sq = start ** 2
if (check(start, String(sq), 0, 0)) {
res.push(sq)
}
start++
}
return res.reduce((acc, curr) => acc + curr, 0)
}
console.log(punishmentNumber(10))