我已经看到了一些生成器,但是它们都构成一个平方矩阵。例如,您给它一个包含三个项目的列表,并假定长度的输出也是三个。但是,我想指定项目和长度。
听起来像是一个简单的问题,无法相信没有可用的库。如果那里有经过测试的库,希望避免自己编写。任何建议都很好。
我发现的例子
var list = 'abc';
perms = permutations(list);
//you cannot define the length
例
var list = 'abc';
var length = 3;
perms = permutations(list,length);
console.log(perms);
/* output
a,a,a
a,b,c
a,b,a
a,c,a
c,a,a
...
*/
我希望能够更改长度,并应相应地创建排列
length = 2
a,a
a,b
b,b
b,a
length = 4
a,a,a,a
a,a,a,b
....
您可以想象长度代表插槽数。假定N是初始列表中的元素数,则每个插槽都有N种可能性。因此,给定三个值[1,2,3]
,您将有一个总的3 x 3 x 3 = 27
排列。
这是我的尝试。包含评论!
var list = [1,2,3];
var getPermutations = function(list, maxLen) {
// Copy initial values as arrays
var perm = list.map(function(val) {
return [val];
});
// Our permutation generator
var generate = function(perm, maxLen, currLen) {
// Reached desired length
if (currLen === maxLen) {
return perm;
}
// For each existing permutation
for (var i = 0, len = perm.length; i < len; i++) {
var currPerm = perm.shift();
// Create new permutation
for (var k = 0; k < list.length; k++) {
perm.push(currPerm.concat(list[k]));
}
}
// Recurse
return generate(perm, maxLen, currLen + 1);
};
// Start with size 1 because of initial values
return generate(perm, maxLen, 1);
};
var res = getPermutations(list, 3);
console.log(res);
console.log(res.length); // 27
[fiddle](http://jsfiddle.net/kD8G3/)
问题内容: Java是否具有内置方法来置换或随机混排数字或字符数组?类似于c ++中的Random Shuffle STL? 问题答案: 您可以使用 如果您有数字数组,则可以使用:-
问题内容: 我正在寻找在Swift中实现合理的C互操作性的最简单方法,而我当前的代码块是将(是)转换为数组。 当前,我有一个幼稚的算法,可以采用和一个字节,然后将其逐个元素转换为数组: 可以使用来加速循环本身,但是并不能消除循环本身的问题。 我知道这个SO问题涵盖了如何转换为,但是完全是另一种野兽。是否有一种方便的Swift方法将长度字节从中复制到中?我更希望使用纯Swift方法,而不要通过或类似
问题内容: 假设我需要一个3位数的电话号码,因此它类似于: 问题答案: 要获得一个随机的3位数字: (假设您实际上是指三位数,而不是“最多三位数”。) 要使用任意数量的数字: 输出:
我想知道在CPP中是否已经有一个实现,可以找到长度为k(1,2,3,4等)的n个字符的所有重复排列。我希望有,但我找不到。 例如,如果并且我想找到的所有排列,重复长度为。 输出将类似于: 总排列为16。
设置-Javascript|MDN 示例:迭代集 第16行 上产生错误< code >未捕获的语法错误:意外的令牌 < code >定制和控制Google Chrome 是我做错了什么还是这个功能不被支持? 更新: 我进入< code>chrome://flags并勾选了< code >启用实验性JavaScript。然后重新启动我的浏览器,但我仍然得到同样的错误。我想我只能等到那个特性被正确添加
问题内容: 我有不同长度的清单清单(例如),并想将其转换成整数数组。我了解多维数组中的“子”数组必须具有相同的长度。那么将上述示例中的列表转换成这样的数组(即用零完成)的最有效方法是什么? 问题答案: 您可以使用np.zeros创建一个numpy数组,并用列表元素填充它们,如下所示。 结果是