function explode(s) {
let opens = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === "[") opens++;
else if (s[i] === "]") opens--;
else if (opens >= 5) {
const [x, l, r] = s.slice(i).match(/(\d+),(\d+)/);
const left = s
.slice(0, i - 1)
.replace(/(\d+)(\D+)$/, (m, d, p) => `${+d + +l}${p}`);
const right = s.slice(i + x.length + 1).replace(/(\d+)/, (d) => +d + +r);
return `${left}0${right}`;
}
}
return s;
}