function solve(expr, charPtr = 0) {
let value = 0,
op = '+';
while (charPtr < expr.length && expr[charPtr] !== ')') {
const char = expr[charPtr];
if (isDigit(char)) {
value = apply(value, parseInt(char), op);
} else if (char === '+' || char === '*') {
op = char;
} else if (char === '(') {
const [parenValue, endOfParenPtr] = solve(expr, charPtr + 1);
value = apply(value, parenValue, op);
charPtr = endOfParenPtr;
}
charPtr++;
}
return [value, charPtr];
}