无论数字放置如何,如何获得每个唯一的数字组合
How to get every unique digit combination regardless of digit placement
我在任何地方都找不到它,我不确定这是否可能,但有没有办法获得每个唯一的数字组合,而不管数字的位置如何(例如 123、213、231、321都是一个组合,因为它们具有相同的数字,但 123 和 124 不同)因此 X 位数的每种可能组合.. 谢谢!
这是我写过的一段代码:
function kPn(k, values, repetition) {
var retVal=[];
var n=(Array.isArray(values))?n=values.length:values;
var list=[];
for(var i=0;i<n;i++) {
list.push(i);
retVal.push([i]);
}
for(var i=2;i<=k;i++) {
var tempRetVal=[];
for(var rv=0;rv<retVal.length;rv++)
for(var l=0;l<list.length;l++) {
if(repetition||!(retVal[rv].includes(list[l]))) {
var retValItem=retVal[rv].slice();
retValItem.push(list[l]);
tempRetVal.push(retValItem);
}
}
retVal=tempRetVal;
}
if(!Array.isArray(values)) values=list;
var permutations=retVal;
var retVal=[];
for(var i=0;i<permutations.length;i++) {
tempSet=[];
for(var j=0;j<permutations[i].length;j++)
tempSet.push(values[permutations[i][j]]);
retVal.push(tempSet);
}
return retVal;
}
k: 你想要多少个值,
值:值数组,并且
重复:true|flase.
示例:
kPn(3, ["a","b","c"], false);
returns:
(6) [Array(3), Array(3), Array(3), Array(3), Array(3), Array(3)]
0: (3) ["a", "b", "c"]
1: (3) ["a", "c", "b"]
2: (3) ["b", "a", "c"]
3: (3) ["b", "c", "a"]
4: (3) ["c", "a", "b"]
5: (3) ["c", "b", "a"]
length: 6
__proto__: Array(0)
我在任何地方都找不到它,我不确定这是否可能,但有没有办法获得每个唯一的数字组合,而不管数字的位置如何(例如 123、213、231、321都是一个组合,因为它们具有相同的数字,但 123 和 124 不同)因此 X 位数的每种可能组合.. 谢谢!
这是我写过的一段代码:
function kPn(k, values, repetition) {
var retVal=[];
var n=(Array.isArray(values))?n=values.length:values;
var list=[];
for(var i=0;i<n;i++) {
list.push(i);
retVal.push([i]);
}
for(var i=2;i<=k;i++) {
var tempRetVal=[];
for(var rv=0;rv<retVal.length;rv++)
for(var l=0;l<list.length;l++) {
if(repetition||!(retVal[rv].includes(list[l]))) {
var retValItem=retVal[rv].slice();
retValItem.push(list[l]);
tempRetVal.push(retValItem);
}
}
retVal=tempRetVal;
}
if(!Array.isArray(values)) values=list;
var permutations=retVal;
var retVal=[];
for(var i=0;i<permutations.length;i++) {
tempSet=[];
for(var j=0;j<permutations[i].length;j++)
tempSet.push(values[permutations[i][j]]);
retVal.push(tempSet);
}
return retVal;
}
k: 你想要多少个值,
值:值数组,并且
重复:true|flase.
示例:
kPn(3, ["a","b","c"], false);
returns:
(6) [Array(3), Array(3), Array(3), Array(3), Array(3), Array(3)]
0: (3) ["a", "b", "c"]
1: (3) ["a", "c", "b"]
2: (3) ["b", "a", "c"]
3: (3) ["b", "c", "a"]
4: (3) ["c", "a", "b"]
5: (3) ["c", "b", "a"]
length: 6
__proto__: Array(0)