Kod
0003
0012
0021
0030
0102
0111
0120
0201
0210
0300
1002
1011
1020
1101
1110
1200
2001
2010
2100
3000
0012
0021
0030
0102
0111
0120
0201
0210
0300
1002
1011
1020
1101
1110
1200
2001
2010
2100
3000
inny przykład:
Kod
004
013
022
031
103
112
121
130
202
211
220
301
310
400
013
022
031
103
112
121
130
202
211
220
301
310
400
*wypisalem to recznie wiec moga byc jakies drobne pomylki
Kod
var createCombinations = function(len, max){
var cnt = [];
var res = [];
for( var i = 0; i < len; ++i ){
cnt[i] = 0;
}
while( 1 ){
if (cnt.reduce(function(a, b){
return a + b;
}, 0) === max-1) {
res.push( cnt.slice() );
}
var brk = false;
for (var i = len - 1; i >= 0; --i) {
if (++cnt[i] >= max) {
cnt[i] = 0;
}else{
brk = true;
break;
}
}
if (!brk) {
break;
}
}
res = res.map(function(arr){
return arr.join('');
});
return res;
}
console.log( JSON.stringify(createCombinations(3, 9), null, ' ') );
var cnt = [];
var res = [];
for( var i = 0; i < len; ++i ){
cnt[i] = 0;
}
while( 1 ){
if (cnt.reduce(function(a, b){
return a + b;
}, 0) === max-1) {
res.push( cnt.slice() );
}
var brk = false;
for (var i = len - 1; i >= 0; --i) {
if (++cnt[i] >= max) {
cnt[i] = 0;
}else{
brk = true;
break;
}
}
if (!brk) {
break;
}
}
res = res.map(function(arr){
return arr.join('');
});
return res;
}
console.log( JSON.stringify(createCombinations(3, 9), null, ' ') );
Pewnie da sie to zrobic lepiej niz przefiltrowac wszystkie mozliwosci.