function math(strings, ...values) {
let parser = mathjs.parser()
let text = ""
for (let [i,x] of values.entries()) {
parser.set("_value" + i, x)
text += strings[i] + "_value" + i
}
text += strings[strings.length - 1]
const ans = parser.evaluate(text)
let variables = parser.getAll()
let originalNames = Object.keys(variables).filter(x => x.indexOf("_value") !== 0)
if (originalNames.length == 0) {
return ans
} else {
const lastName = originalNames[originalNames.length - 1]
const lastAnswer = ans.entries[ans.entries.length - 1]
if (variables[lastName] !== lastAnswer) {
return lastAnswer
} else {
return originalNames.reduce((r,x) => { r[x] = variables[x]; return r }, {})
}
}
}