0

基本的な減算問題を生成するアルゴリズムを作成しようとしています。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

どの言語の例も役に立ちます。

4

1 に答える 1