用于创建数学减法方程的简单JavaScript算法

Simple JavaScript algorithm for creating math subtraction equation

本文关键字:简单 JavaScript 算法 方程 创建 用于      更新时间:2023-09-26

我正在尝试编写一个算法,该算法将生成一个基本的减法问题。类似于 18-10-4=4。该算法应接受以下参数:

操作数最小值、操作数最大值、

结果最小值、结果最大值、操作数数

它应该为每个操作数在 oMin 和 oMax 之间选取多个随机数,并为结果选择一个介于 rMin 和 rMax 之间的随机数。所以像这样:

var generateSubtractionProblem = function (oMin, oMax, rMin, rMax, oQuantity) {
    var result,
        operands = []
        maxDiff = oMax - (oMin * (oQuantity - 1)),
        minDiff = oMin - (oMax * (oQuantity - 1)),;
    // Pick result
    // Generate operands within range that when subtracted produce result
    if (rMax < minDiff || rMin > maxDiff) {
      console.log('Cannot produce result');
      return {
        result: 2,
        operands: [4, 2]
      };
    }
    if (maxDiff < rMax) {
      console.log('Max difference is ' + maxDiff);
      rMax = maxDiff;
    }
    result = this.randomInRange(rMin, rMax, rPrecision);
    for (var i = 0; i < oQuantity; i += 1) {
      switch (i) {
        case 0:
          operands[i] = this.randomInRange((oMin * (oQuantity - 1)) + result, oMax, oPrecision);
          break;
        case 1:
          operands[i] = operands[i - 1] - result;
          break;
        default:
          operands[i] = this.randomInRange(oMin, (oMin * (oQuantity - i)), oPrecision);
          break;
      }
    }
    return {
        result: result,
        operands: operands
    }
}
generateSubtractionProblem(5, 20, 0, 5, 3);
// { result: 4, operands: [18, 10, 4] }... 18-10-4=4

任何语言的示例都会有所帮助。

首先生成所需的结果。

接下来生成第一个操作数。它的最小值必须至少为"结果 + 操作数最小值 *(操作数 - 1)。

生成剩余的操作数。它们的范围必须在

(firstOperand - sum(otherOperands)) - (numberOfOperands - numberOfGeneratedOperands) * OperandMax

(firstOperand - sum(otherOperands)) - (numberOfOperands - numberOfGeneratedOperands) * OperandMin .