Buonasera lotto_tom75
.
"InitSviluppoIntegrale" è un function di SpazioScript e come tale restituisce un valore. Il valore che restituisce non è niente altro che il risultato del calcolo combinatorio. Tale risultato è dato dalla function "Combinazioni" che ottiene il numero di combinazioni che si possono formare con N numeri di classe K.
Nello specifico:
Il calcolo combinatorio presenta una diramazione formata dalle "Combinazioni semplici"
-dato un insieme di "n" numeri differenti tra di loro, in cui "k" (la classe di sviluppo) sia <= di n;
Quante combinazioni si generano di classe k dati n numeri? tenendo in considerazione che:
-ogni formazione contenga esattamente lunghette di classe k con numeri tutti differenti tra loro;
-ogni formazione sia diversa dall'altra per almeno un numero senza tenere in considerazione l'ordine.
Bene, la formula matematica che ci viene in aiuto è proprio quella utilizzata dalla function "Combinazioni" ovvero:
C(n,k) =
n! (il punto esclamativo in matematica serve ad indicare il "fattoriale")
------------
(n-k)! * k!
Ecco un esempio pratico per capire bene la sua applicazione:
Dati 90 numeri quanti terni si generano tenendo in considerazione quanto riportato sopra?
C(90,3) =
90!
--------------
(90-3)! * 3!
90! = 90*89*88*87*86*85 ..... 3*2*1 il fattoriale lo si calcola semplicemente moltiplicando il numero antecedente al successivo in modo decrescente fino ad arrivare ad esaurimento della serie numerica
90 - 3 = 87
87! = 87*86*85*84 ...ecc
3! = 3*2*1 = 6
attraverso una semplificazione matematica che non starò qui a spiegare .. tutti i numeri che vanno dall'87 all'1 vengono meno quindi si avrà
C(90,3) =
90*89*88
------------------
3*2*1
704.880
------------ = 117.480 terni
6
ecco cosa succede quando viene chiamata la function "InitSviluppoIntegrale", passando i parametri (aNum,Classe). Restituisce un valore e lo immagazziniamo all'interno di una variabile che nel tuo caso hai chiamato per comodità "ColTot ".
Ora quanto chiami la function "GetCombSviluppo" (senza alcuna riduzione) essa legge la colonna corrente durante lo sviluppo di un sistema integrale e da questo ne scaturisce che le combinazioni calcolate precedentemente e sviluppate siano pari a 117480.
Nel momento in cui tu chiami la function "GetCombSviluppoRid" (riduzione) il discorso cambia radicalmente. Questa funzione legge la colonna corrente durante lo sviluppo di un sistema integrale come nel caso precedente ma gestisce la riduzione n-k.
Senza soffermarmi più di tanto "nel codice" in linea di massima possiamo dire che questa funzione in un sistema
n = 90
k = 3
sorte garantita = 2
farà 90 - 3 = 87 e questo valore sarà pari al numero di colonne che salterà il puntatore inizializzato nel momento in cui "preleverà i valori" dell'array bidimensionale prima di salire di registro.
Di conseguenza ne deduciamo che comunque partiamo da un "sistema integrale" ma poi effettuiamo una riduzione controllata per mezzo della function.
Ora la soluzione alla tua richiesta risiede in un problema "matematico" piuttosto che "informatico".
Esiste una modifica che possa trasformare la formula del calcolo combinatorio delle combinazioni semplici in modo dinamico e che possa considerare una riduzione n-k?
Io personalmente non la conosco (e non penso esista) ma magari qui c'è qualcuno in grado di poterla estrapolare chissà