Sistemi a correzione di errore (calcolo combinatorio)

(1/1)

seven.7:
Buongiorno a tutti,
ho fatto un po' di ricerche ma non sono arrivato a nulla di concreto. Stò sviluppando un applicazione per creare sistemi come da oggetto. Non riesco però a scrivere il codice per estrapolare le combinazioni possibili. Cioè se ho N elementi e voglio creare sistemi da K elementi come posso tirar fuori da codice le combinazione che posson avere gli N elementi con una lunghezza di K elementi?

Riporto una risposta
Citazione

Hai 6 elementi: a, b, c, d, e, f
Considera che ogni elemento lo puoi prendere una sola volta, quindi la quartina di partenza sarà

abcd

per proseguire aumenta di uno l'ultimo elemento a destra:

abce

prosegui aumentando l'ultimo elemento a destra finché puoi:

abcf

quando hai terminato i simboli in ultima posizione devi aumentare di uno il PENULTIMO elemento e riscrivere la combinazione ricordando che non puoi fare ripetizioni:

abde

e poi ricominci ad aumentare l'ultimo a destra:

abdf

terminati i simboli devi riaumentare il penultimo:

abef

e avendo terminato i simboli possibili sia sull'ultima che sulla penultima posizione, devi aumentare la terzultima di uno e riscrivere la tua combinazione di partenza:

acde

poi ricominci ad aumentare l'ultimo e il penultimo fino ad esaurimento dei simboli:

acdf
acef

aumenta ancora di uno il terzultimo e ricomincia:

adef

ora hai esaurito tutti i simboli nelle posizioni 2, 3, 4 e dunque devi aumentare la prima e ricominciare da capo:

bcde
bcdf
bcef
bdef

Di nuovo hai esaurito tutte le possibilità, dunque aumenti ancora la prima e in pratica hai finito:

cdef

ecco dunque le tue C(6, 4) = 15 combinazioni:

abcd
abce
abcf
abde
abdf
abef
acde
acdf
acef
adef
bcde
bcdf
bcef
bdef
cdef

Solo che non riesco a scriverla da codice :( Consigli?

Navigazione

[0] Indice dei messaggi