数字集中所有可能的数字

时间:2019-05-24 00:50:41

标签: javascript

我需要找到包含所有数字的给定数字之外的所有可能数字组合。假设我有一个数组[0,5,3,9]我需要仅使用给定的数字来获得所有长度为4的数字。请帮忙。

我尝试循环,正在寻找一些数学方法

}

输出与预期不符

1 个答案:

答案 0 :(得分:0)

您这样做:

/* for legal usage only */
function comboMaster(base){
  this.base = base === undefined ? 10 : base;
  this.comboPower = function(digits, base){
    var b = base === undefined ? this.base : base;
    for(var i=0,n=1,l=digits; i<l; i++,n*=b){
    }
    return n;
  }
  this.comboArray = function(power){
    var d = power.toString().length-1;
    for(var i=0,z='0',l=d-2; i<l; i++,z+='0'){
    }
    for(var i=0,a=[],l=power; i<l; i++){
      for(var n=1,s=i,q=z; n<d; n++){
        s = s.toString().replace(new RegExp('^(\\d{'+n+'})$'), q+'$1'); q = q.slice(0, -1);
      }
      for(var n=0,r=[],b=s.split(''),q=b.length; n<q; n++){
        r.push(+b[n]);
      }
      a.push(r);
    }
    return a;
  }
  this.combos = function(array){
    for(var i=0,c,p,a=[],l=array.length; i<l; i++){
      p = this.combos(array.slice(0, i).concat(array.slice(i+1))); c = array[i];
      if(!p.length){
        a.push([c]);
      }
      else{
        for(var n=0,q=p.length; n<q; n++){
          a.push([c].concat(p[n]));
        }
      }
    }
    return a.sort();
  }
}
var combo = new comboMaster, c = combo.combos([0, 5, 3, 9]);
var a = combo.comboArray(combo.comboPower(4)), out = document.getElementById('out');
for(var i=0,l=c.length; i<l; i++){
  out.appendChild(document.createTextNode('['+c[i]+']'));
  out.appendChild(document.createElement('br'));
}
out.appendChild(document.createElement('hr'));
for(var i=0,l=a.length; i<l; i++){
  out.appendChild(document.createTextNode('['+a[i]+']'));
  out.appendChild(document.createElement('br'));
}
<div id='out'></div>

comboMasterInstance.combo是使用this完成的。