oldPower = {
let level = (serial, x, y, size) => {
if (size === 1) {
const id = x + 10
let power = id * y
power += serial
power = power * id
const digits = String(power)
if (digits.length >=3)
power = +digits[digits.length-3]
else
power = 0
return power - 5
} else {
const half = Math.floor(size / 2)
let sum = level(serial, x, y, half) +
level(serial, x + half, y, half) +
level(serial, x, y + half, half) +
level(serial, x + half, y + half, half)
if (size % 2 === 1) {
for (let dx = 0; dx < size; dx++)
sum += level(serial, x + dx, y + size - 1, 1)
for (let dy = 0; dy < size - 1; dy++)
sum += level(serial, x + size - 1, y + dy, 1)
}
return sum
}
}
level = _.memoize(level, (serial, x, y, size) => String([serial,x,y,size]))
return level
}