-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfactorial_noRandom.js
More file actions
33 lines (27 loc) · 1.05 KB
/
factorial_noRandom.js
File metadata and controls
33 lines (27 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
factorial_noRandom = function(factors, repetitions) {
var factorNames = Object.keys(factors);
var factor_combinations = [];
for (var i = 0; i < factors[factorNames[0]].length; i++) {
factor_combinations.push({});
factor_combinations[i][factorNames[0]] = factors[factorNames[0]][i];
}
for (var i = 1; i < factorNames.length; i++) {
var toAdd = factors[factorNames[i]];
var n = factor_combinations.length;
for (var j = 0; j < n; j++) {
var base = factor_combinations[j];
for (var k = 0; k < toAdd.length; k++) {
var newpiece = {};
newpiece[factorNames[i]] = toAdd[k];
factor_combinations.push(Object.assign({}, base, newpiece));
}
}
factor_combinations.splice(0, n);
}
var output_combinations = [];
repetitions = (typeof repetitions === 'undefined') ? 1 : repetitions;
for (var i = 0; i < repetitions; i++){
var output_combinations = output_combinations.concat(factor_combinations)
}
return output_combinations;
}