Funcția pentru permutări posibile și combinatorică 1c extaz
Funcția returnează o matrice de toate permutarile posibile ale unui set arbitrar constând dintr-un număr predeterminat de elemente. Cu sau fără elemente de repetiții.
Necesar (nu întrebați de ce), să găsească și să analizeze toate combinațiile posibile ale elementelor unei matrice de lungime arbitrară. Sarcina manual. Deoarece numărul de combinații posibile de elemente, iar lungimea în stadiul sarcinilor care urmează să fie determinată, o soluție recursivă apare. Și ce am găsit pe această temă? Nimic de 1C, dar tot felul de diferite implementari exclusive pentru a le singur, Delphi și chiar VBA.
Ei bine, cred că - este necesar să se traducă. Tradus în 1C. Dar era necesar ca nici un repetări ale acelorași elemente ale combinațiilor rezultate au fost. Am început să se bazeze pe și de regulă. Ca rezultat al algoritmului original a fost lăsat nimic, iar punerea în aplicare în sine este mai scurtă decât cea propusă în C, astfel încât chiar și cu opțiunea suplimentară fără elemente de repetiție pe combinațiile posibile.
Sunt mândru de 20 de minute și a decis să împartă cu comunitatea. Poate cineva va veni la îndemână și va fi karma mea o data Ca :)
Toate argumentele, sper că este clar din descriere. Conform rezultatelor: ieșirea este o matrice de matrice fixe. matrice fixe - combinație posibilă, și numărul de elemente ale șirului rezultat este numărul de (posibil) combinațiile găsite. Fiecare matrice este format dintr-un element de matrice fix DlinaPerestanovki mElementov - că există un set de elemente ale setului inițial de valori. Sau una dintre combinațiile posibile.
Lucrul evident, dar încă mai am avertizat. Dacă DlinaPerestanovki în argumente va fi mai mare decât numărul de elemente din matrice mElementov și condiții unice în acest caz va fi adevărul, vei primi minunat, dar un rezultat array gol. De ce? Da, pentru că nu se poate colecta de elementele posibile ale unei combinații de X la o lungime Y, fără a se repeta, dacă X P.S. Anticipând indignarea publică asupra „ceea ce pentru noi cinstit, inteligent, umil și obișnuit 1C negam nevoie de ea“, a amintit o publicație cu privire la modul de a ajuta contabil pentru a găsi ceea ce sunt forma posibile numere din valoarea de eroare. Iată pentru tine și gata domeniul de aplicare al funcției. Și folosește o adevărată, susținută și de marcă 1C, nu Java :)