使用javascript重复(组合)的变体代码?

时间:2012-05-17 20:07:24

标签: javascript jquery combinatorics variations

是否有人使用Javascript代码生成重复的所有变体?

重复变化的示例:

(size=3, input=A,B)
AAA, AAB, ABA, BAA, ABB, BAB, BBA, BBB

我需要做的是对0到9之间的数字作为输入和6位长度作为大小(根据我的例子)。

要知道,我使用Java和基于此项目的.NET代码(检查链接)。我需要重复的所有变化都会产生1000000个值。

http://www.codeproject.com/KB/recipes/Combinatorics.aspx

是否可以在Javascript中执行此操作?没问题,如果jQuery可以提供帮助。

提前致谢。

2 个答案:

答案 0 :(得分:3)

你从组合学中选择了最简单的案例......

var i, n = 1000000;
for (i = 0; i < n; i++)
  console.log(('' + (i + n)).substring(1));

将为您提供6个点中的0-9的所有组合(1000000 === Math.pow(10, 6))。

答案 1 :(得分:0)

我刚刚写了它,它可能需要更多的测试和优化,但这应该让你开始:

​var input = "ABCD";
var size = 3;
var results = [];

function solve(i, elt) {
    if(elt.length == size) { 
       results.push(elt);
       return;        
    }
    for(var j = 0; j < input.length; j++) {
       solve(j, elt+input[j]);
    }        
}​​​​​​

solve(0, "");
​console​.log(results);​