【问题标题】: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++;
}
}