Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Биномиальные коэффициенты (https://javascript.ru/forum/offtopic/47740-binomialnye-koehfficienty.html)

рони 05.06.2014 15:35

Tim,
так будет 5 for
function get() {
    var c = [];
    for (var k1 = 0; k1 < 48; k1++) {
        for (var k2 = k1 + 1; k2 < 49; k2++) {
            for (var k3 = k2 + 1; k3 < 50; k3++) {
                for (var k4 = k3 + 1; k4 < 51; k4++) {
                    for (var k5 = k4 + 1; k5 < 52; k5++) {
                        c.push([k1, k2, k3, k4, k5])
                    }
                }
            }
        }

    }
    return c
}

Tim 05.06.2014 18:06

рони,
очень похоже на правду

nerv_ 05.06.2014 19:25

Цитата:

Сообщение от рони
так будет 5 for

чуть подправлю:
var input = [1, 2, 3, 4, 5];
var output = [];
var len = input.length;
// var k = 3;

for(var i = 0; i < len - 2; i++) {
    for(var j = i + 1; j < len - 1; j++) {
        for(var q = j + 1; q < len; q++) {
            output.push([
                input[i],
                input[j],
                input[q]
            ]);
        }
    }
}

console.log(JSON.stringify(output));


формула:
var count = c(5) / (c(5 - 3) * c(3));

console.log(count);

function c(n) {
    for(var i = 1, len = n + 1, r = i; i < len; i++) {
        r *= i;
    }
    return r;
}
Тем не менее, не очень правильно задавать k кол-вом циклов :)

melky 05.06.2014 19:50

кто сможет решить однострочником-генератором из ES6 ? интересно взглянуть и поизучать

Tim 06.06.2014 10:54

Цитата:

Сообщение от nerv_
Тем не менее, не очень правильно задавать k кол-вом циклов

нормально (когда оно не слишком большое и не меняется)

l-liava-l 06.06.2014 11:41

Цитата:

нормально (когда оно не слишком большое и не меняется)
лучшеб в рекурсию его кинуть)

nerv_ 06.06.2014 14:16

Цитата:

Сообщение от l-liava-l
рекурсию

угу. Я тоже об этом подумал вчера :yes:

Сделаешь?)

l-liava-l 06.06.2014 15:10

Цитата:

угу. Я тоже об этом подумал вчера

Сделаешь?)
Нужно думать, не)


Часовой пояс GMT +3, время: 02:21.