SuperEnalotto

StephenSoftware
Gentili Signori,

sono nuovo del forum e pertanto mi presento.
Il mio nome è Stefano, sono un programmatore e ho una piccola azienda di informatica.
Spero di poter trovare qui la risposta al mio quesito.
La domanda, come da oggetto, riguarda il SuperEnalotto.

Le combinazioni del SuperEnalotto sono composte da 6 numeri che vanno da 1 a 90.
La prima è 1,2,3,4,5,6 e l'ultima 85,86,87,88,89,90.
E' noto che sono in tutto 622.614.630 di combinazioni.
Ora premettendo che tolte addizioni, sottrazioni, moltiplicazioni, divisioni, proporzioni, e
radici quadrate per me tutto il resto è materia uscura.
Ho fatto già una faticata a scoprire che per ottenere il numero di combinazioni possibili svilappate da 6 numeri
che possono andare da 1 a 90 senza ripetizioni esistono i fattoriali e la formula,
per me magica, è 90*89*87*86*85*84/6*5*4*3*2*1=622.614.630
Talemente mi sembrava magica che per venirne a capo con i miei mezzi ho fatto quanto segue:

For A = 1 To 85
For B = A + 1 To 86
For C = B + 1 To 87
For D = C + 1 To 88
For E = D + 1 To 89
For F = E + 1 To 90
K = K + 1
DoEvents
Next F, E, D, C, B, A
Debug.Print K

Ci mette un po' ma alla fine mi da il risultato corretto 622.614.630
Adesso ipotizzando di voler memorizzare tutte le combinazioni su un file per sapere esattaemente il numero della
combinazione K al variare di A,B,C,D,E,F... vi dico lasciate perdere...
Io sono arrivato qui, ma poi mi sono scoraggiato, e ho spento tutto...
Progressivo=5.321.387
Estratto1=1
Estratto2=4
Estratto3=13
Estratto4=55
Estratto5=74
Estratto6=77

Scusate se l'ho fatta così lunga, ma era per far capire bene cosa mi serve...

Dati per esempio i numeri sopra 1,4,13,55,74,77 come faccio con una formula matematica (facile, facile, facile)
a capire che stiamo parlando della combinazione numero 5.321.387 ?

Grazie a tutti per la collaborazione
Ciao a presto
Stefano

Risposte
StephenSoftware
Scusa non sono un fenomeno dei forum... ci ricorro solo quando sono alla frutta...
Infatti non sono stato nemmeno capace di citare in modo normale ma ho fatto copia e incolla...
Spero si riesca a capire di quale post parlo...

Ciao e grazie

Re: Da funzione a sequenza

Messaggioda superpippone » 26/01/2016, 14:05
Avevo già commesso un errore di partenza.
Dividevo per 90.
Invece dovevo moltiplicare per 6, e poi dividere per 90.....
Il numero giusto sarebbe stato intorno ai 150 milioni.
Ma ormai che ci siamo, giochiamo con questo....

Allora le sestine sono 622.614.630, ognuna di 6 numeri (ovvio...).
Pertanto le sestine con il numero 1 sono 622.614.630⋅690=41.507.642
Il numero da te scelto è inferiore a questo, per cui il numero 1 c'è.

Adesso ci rimangono cinquine e 89 numeri.
E qua sono chiodi.

Le cinquine con il numero 2 sono 41.507.642⋅589=2.331.890
Il numero 2 non c'è.

Le cinquine con il numero 3 sono (41.507.642−2.331.890)⋅588=2.225.895
2.331.890+2.225.895=4.557.785
Il numero 3 non c'è.

Le cinquine con il numero 4 sono (41.507.642−4.557.785)⋅587=2.123.555
4.557.785+2.123.555=6.681.340
Il numero 4 non c'è

Adesso mi fermo, e ti chiedo: ti interessa ancora?
Bisogna procedere finchè il totale non supera il numero da te scelto (26.852.369).
A quel punto quel numero c'è.
Dopo bisogna proseguire con le quartine, etc.

Io non conosco le funzioni, e sto usando una calcolatrice da tavolo.
Ma se hai capito il meccanismo, penso che un programmino si possa fare (io, no....)

axpgn
Comunque, se ti interessa, ho generato una tabella tramite la quale, dato un numero di combinazione (cioè un numero compreso tra $1$ e $622.614.630$) ottieni le prime due cifre della sestina; a quel punto le altre quattro le puoi trovare semplicemente "contando" (come hai fatto all'inizio) e dato che il "range" massimo a questo punto si è ridotto a meno di due milioni e mezzo (nel caso più sfortunato in cui le prime due cifre siano $1$ e $2$), ti bastano un paio di secondi di elaborazione per completare la sestina desiderata. (Testato ... :wink: )

EDIT: appena ho tempo riguardo il post di superpippone ma penso che il metodo che ho usato ora (per generare e testare la tabella) sia simile ...

superpippone
Prendiamo la sestina n. $150.000.000$

Le sestine con il numero 1 sono $622.614.630*6/90=41.507.642$
Poichè questo numero è inferiore a 150.000.000, il numero 1 non c'è.

Le sestine con il numero 2 sono $(622.614.630-41.507.642)*6/89=39.175.752$
$41.507.642+39.175.752=80.683.394$
Il numero 2 non c'è.

Le sestine con il numero 3 sono $(622.614.630-80.683.394)*6/88=36.949.857$
$80.683.394+36.949.857=117.633.251$
Il numero 3 non c'è.

Le sestine con il numero 4 sono $(622.614.630-117.633.251)*6/87=34.826.302$
$80.683.394+34.826.302=152.459.553$
Poichè questo numero è più alto di 150.000.000, il numero 4 c'è.


Adesso ti restano $150.000.000-117.633.251=32.366.749$ cinquine.

Le cinquine con 86 numeri sono $(86*85*84*83*82)/(5*4*3*2*1)=34.826.302$

Le cinquine con il numero 5 sono $34.826.302*5/86=2.024.785$
Poichè questo numero è più basso di $32.366.749$, il numero 5 non c'è.

Le cinquine con il numero 6 sono $(34.826.302-2.024.785)*5/85=1.929.501$
$2.024.785+1.929.501=3.954.286$
Il numero 6 non c'è.

Le cinquine con il numero 7 sono $(34.826.302-3.954.286)*5/84=1.837.620$
$3.954.286+1.837.620=5.791.906$
Il numero 7 non c'è.

E così via cantando.......

StephenSoftware
Caro Superpippone,

non so perchè ti sei scelto questo nick?!?!?

Per me sei un SuperCampione, la cosa che ho apprezzato di più nella tua spiegazione è di come hai fatto diventare facile una cosa difficile... il modo in cui hai fatto diventare pratico un metodo al quale io non sarei mai riuscito ad arrivare...

Ho finito il programma che passa da sequenza a funzione e viceversa e potrò adesso utilizzare le formule realizzare per quello che mi serviva senza avere materialemente lo sviluppo integrale sotto mano ma avendolo in modo virtuale grazie alle formule.

Grazie 622.614.630 !!!
A presto
Stefano

P.S. Se a qualcuno può interessare il programma che fa la stessa cosa del foglio excel creo il pacchetto di installazione e lo posto

superpippone
Ciao.
Il mio nick ha una storia semplice.
Mi ero iscritto ad sito di giochi gratuiti.
Tra questi c'era anche il poker.
Mi ritenevo scarso (pippa), anzi super-scarso (superpippa).
Poi mi sono iscritto ad un sito di poker a pagamento.
Il nick superpippa era già impegnato.
Così ho messo superpippone.
E, con tutto quel che ho perso, mai nick fu più azzeccato!!!!
E quando mi sono iscritto a questo forum, per pigrizia, ho te tenuto quel nick.

Ho esaudito la tua curiosità??

Saluti.

Luciano

axpgn
E io che pensavo fosse in onore di SuperPippo (con accrescitivo) ... magari non mangi neanche le noccioline ... :D

superpippone
Non ci crederai, ma sono un paio d'anni che sono diventato allergico alle noccioline.
Mi si gonfiano labbra e lingua. e credo mi vengono vesciche in gola.
Faccio fatica a deglutire....

Ma poi SuperPippo non mangia noccioline nostrane, ma noccioline americane (ovvio....). Ovvero arachidi.
Quelle non mi creano problemi.

axpgn
Beh, sì, quelle intendevo ... :-) ... ma stai veramente così male? Mi sa che il mondo sta veramente cambiando ... Conosco sempre più gente che dopo aver mangiato gelati, dolci e burro per tutta la vita si scopre intollerante al lattosio oppure celiaca ... mah ...
Stammi bene (letteralmente :-) )

superpippone
Se pensi che una volta ne mangiavo quantità industriali....

Adesso dopo 4-5 sono problemi.
Per cui evito (quando mi ricordo...).

Però le cioccolate con le nocciole non mi creano disagi.
Bohhhhhh....

axpgn
Eh, beh, il cioccolato può tutto ... :-D ... non potrei fare senza ...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.