Имя: Пароль:
IT
 
Комбинаторика. Генератор размещений из N по M без повторений.
0 Victorbiz
 
22.07.15
13:39
Есть алгоритм написанный на javascript Комбинаторикf. Генератор размещений из N по M без повторений.
Не могу додумать как его переделать чтоб на входе был массив допустим resources ["a","b","c"], а на выходе другой массив уже с перебором arrangements ["abc","acb","bac" и т.д.]



function Calculate( resources, set, Msize, arrangements ) {
    var Nsize = set.length;
    if ( Nsize < Msize ) throw {
        "source" : "Msize", "message" : resources[ "m" ]
    };
    var tset = [ ];
    for ( var i in set )tset.push( set[ i ].value );
    var used = [ ];
    var arranged = [ ];
    var cur = "";
    function placement_lex( pos ) {
        if ( pos == Msize ) {
            arranged[ arranged.length ] = cur;
            return;
        }
        for ( var i = 0;
        i < Nsize;
        ++ i ) {
            if ( ! used[ i ] ) {
                used[ i ] = true;
                cur += tset[ i ];
                placement_lex( pos + 1 );
                cur = cur.substring( 0, cur.length - tset[ i ].length );
                used[ i ] = false;
            }
        }
    }
    placement_lex( 0 );
    var i = 1;
    for ( var a in arranged ) {
        var rec = arrangements.AddNewRecord( );
        rec.num = i ++;
        rec.arrangement = arranged[ a ];
    }
}
1 Victorbiz
 
22.07.15
13:41
Может быть у кого то есть мысли. Да этого функция данные брала с формы и результат отправлял в другую форму, сейчас нужно с массива в массив
2 Ненавижу 1С
 
гуру
23.07.15
08:24
3 stopa85
 
23.07.15
08:55
Отмечусь тут, только чтобы название алгоритма, не забыть. Нарайаны.