Комбинаторика. Генератор размещений из N по M без повторений. #748624


#0 by Victorbiz
Есть алгоритм написанный на 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 by Victorbiz
Может быть у кого то есть мысли. Да этого функция данные брала с формы и результат отправлял в другую форму, сейчас нужно с массива в массив
#2 by Ненавижу 1С
#3 by stopa85
Отмечусь тут, только чтобы название алгоритма, не забыть. Нарайаны.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям