Esempio n. 1
0
File: view.js Progetto: autioch/math
  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
    });
  }
Esempio n. 2
0
File: view.js Progetto: autioch/math
  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);
  }