setExpression(expressionText) { const { error, expression } = parse(expressionText); if (error) { this.setState({ expressionText, rnpExpression: [], steps: [], error, value: null }); return; } const rnpExpression = convert.toRpn(expression); const newHistory = this.state.historyList.filter((item) => item.expressionText !== expressionText); const value = solve(rnpExpression); newHistory.unshift({ expressionText, timestamp: new Date().toLocaleTimeString() }); this.setState({ expressionText, rnpExpression, steps: steps(rnpExpression), error: '', value, historyList: newHistory }); }
setRandom() { const { maximum, minimum, complexity } = this.state; let value = maximum + 1; let expression = ''; while (minimum > value || value > maximum) { expression = generate(complexity).join(''); value = solve(convert.toRpn(parse(expression).expression)); } this.setExpression(expression); }