Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何生成时间序列的所有排列?_Javascript_Permutation - Fatal编程技术网

Javascript 如何生成时间序列的所有排列?

Javascript 如何生成时间序列的所有排列?,javascript,permutation,Javascript,Permutation,我想为一个时间序列生成一个所有排列的数组。假设数字可以是0,5,10,25,第一个置换是[0,0,0,0,0,0,0]。下一个置换可以是[0,0,0,0,0,0,0,5],依此类推,直到[25,25,25,25,25,25,25]。在这种情况下,应该有4^6=4096个置换,因为有4个数字和7个插槽 有人能帮我理解如何着手解决这个问题吗?我想用javascript写这个。谢谢您的考虑。请参阅随附的脚本,这是我刚刚整理好的。对你来说应该行得通。我限制了4个排列,但应该很容易扩展到7个。我希望你能看

我想为一个时间序列生成一个所有排列的数组。假设数字可以是0,5,10,25,第一个置换是[0,0,0,0,0,0,0]。下一个置换可以是[0,0,0,0,0,0,0,5],依此类推,直到[25,25,25,25,25,25,25]。在这种情况下,应该有4^6=4096个置换,因为有4个数字和7个插槽


有人能帮我理解如何着手解决这个问题吗?我想用javascript写这个。谢谢您的考虑。

请参阅随附的脚本,这是我刚刚整理好的。对你来说应该行得通。我限制了4个排列,但应该很容易扩展到7个。我希望你能看到这种模式

var数组=新数组();
var值=[0,5,10,25];
for(var i=0;idocument.write(JSON.stringify(数组))下面,我创建了一个循环来生成所有排列。这是一个迭代的解决方案

更新:我已将代码缩减为以下内容:

function permutations(series, size) {
  return zeroFill(Math.pow(series.length,size)).map(function(r,i) {
    return zeroFill(size).map(function(c,j) {
      return series[Math.floor(i/Math.pow(series.length,j))%series.length];
    }).reverse();
  });
}
function zeroFill(n) {
  return new Array(n+1).join('0').split('');
}
由于这是一个非常占用内存的过程,我从列表中删除了
25
,并将每个处理过的条目的长度减少到
5

var out=document.getElementById('output');
变量置换=生成([0,5,10],5);
打印结果(排列);
//生成置换。
函数生成(系列、大小){
var结果=[];
var len=系列长度;
var限制=数学功率(长度、大小);
对于(变量i=0;i';
}
函数编号join(整数列表,宽度){
返回intList.map(函数(值){
返回格式numberlength(值、宽度);
}).加入(“”);
}
函数格式NumberLength(num、length、useZero){
var c=useZero?'0':'';
var r=”“+num;
而(r.length
#输出{
字体系列:monospace;
空白:预处理;
}

数组是否更有意义,或者只是一个易于访问的函数,可以由类似的索引调用?你可能会在数组中使用相当多的内存。我会在一些条件下使用for,例如(I=0;I<4096;I+5)
,并使用一些函数来管理所携带的量(当你达到25时,你会将该值设置为0,将左边的下一个设置为5),而这些条件不是。您似乎希望字母表上所有大小为7的字符串
{0,5,10,25}