【问题标题】:How to find all possible combinations of triplets equaling a given sum in JavaScript? ('Stars and Bars' or 'Balls and Bins' problem)如何在 JavaScript 中找到等于给定总和的三元组的所有可能组合? (“星星和酒吧”或“球和垃圾箱”问题)
【发布时间】:2021-02-21 04:26:15
【问题描述】:

我在 StackOverflow 上发现了一篇类似的帖子,它回答了这个问题,但在 Python 中,我正在寻找 javascript 的解决方案(谷歌表的谷歌脚本编辑器)。

Balls and Bins problem

如何使用 JavaScript 解决这个问题?

【问题讨论】:

  • 欢迎您!我假设您请求Apps Script 答案,不是吗?请分享您是如何尝试解决问题的,以便我们都可以看一下代码。

标签: javascript google-apps-script google-sheets


【解决方案1】:

使用嵌套的 for 循环解决了这个问题。如何按间隔输出等于 sum (numSum) 的所有三元组的数组。

我使用内部的原因是因为我使用更大的数字来计算货币贷款,所以间隔让我可以按 100 美元计算,而不是巨额的每一美元。

     function calcSum(SUM, INTERVAL) {

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var dataSheet = ss.getSheetByName('Data');
          
      var sumNum = SUM/INTERVAL
    
      var a = 0
      var b = 0
      var c = sumNum
    
      var aTicker = 0
      var bTicker = sumNum
      var cTicker = sumNum
    
      //Loop through all triple combinations of sumNum
      for (i = 0; i < sumNum + 1; i++) {

         for (j = aTicker; j < sumNum + 1; j++) {

            var array = [];
        
            array.push(a * INTERVAL, b * INTERVAL, c * INTERVAL);
        
            dataSheet.getRange("A" + rowCounter + ":D" + rowCounter).setValues([array]);

            rowCounter++;

          }
      
         if (b < bTicker) {
           b++;
         } else {
           b = 0;
           bTicker--;
         }
      
         if (c > 0){
           c--;
         } else {
           cTicker--;
           c = cTicker;
         }
      
       }

    a++;
    aTicker++;

  }

}

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多