Novità

Cerco Listato

L

LuigiB

Guest
ciao Cinzia , ecco la mia soluzione , in pratica date la quantita di lunghette voluta ciascuna con una certa quantita di numeri anche differente sviluppa tutte le combinazioni della classe voluta prendendo massimo un numero da ciascuna lunghetta di base,
Lo script è dinamico quindi se cambi le lunghette funziona lo stesso (almeno nell'ipotesi fai varie prove).

tutto si fonda sulla sub SviluppaColonne che riceve in input le lunghette da cui prendere i numeri da combinare e sviluppa le colonne similmente a come si sviluppano nel tototcalcio prendendo un segno per ognuna delle posizioni possibili fino a coprire tutte le combinazioni).

Noi abbiamo un primo insieme di X lunghette (nel caso specifico dell'esempio 4) , facciamo che vogliamo svilupparle in ambi (è dinamico puoi scegliere la classe che vuoi) allora lo script crea tutti gli ambi che si formano con 4 lunghette che in parole povere stanno a dire
prendi la prima e la seconda lunghetta e combina i numeri facendo uscire ovviamente degli ambi , poi prendi la prima e la terza e fai la stessa cosa , poi prendi la prima e la quarta e ripeti e cosi via fino a che non si arriva alla lunghetta terza e quarta che è l'ultima delle possibili combinazioni tra le lunghette.
Ogni combinazione di lunghette quindi vine passata alla funzione SviluppaColonne




Codice:
Option Explicit
Sub Main
   Dim aLunghette,nQuantitaLung,nClasseFormazione
   
   
   nQuantitaLung = AlimentaArrayLunghette(aLunghette) 
   
   
   
   If nQuantitaLung >= 2 Then
      nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nQuantitaLung))
      If nClasseFormazione >= 2 And nClasseFormazione <= nQuantitaLung Then
      
         Call ProduciFormazioni(aLunghette,nClasseFormazione)
       
      Else
         MsgBox "Quantità errata",vbExclamation
      End If
   Else
      MsgBox "Lunghette insufficient",vbExclamation
   End If
End Sub
Function AlimentaArrayLunghette(aLunghette)
   ' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
   ReDim aLunghette(4)
   aLunghette(1) = Split("0,1,2,3",",")
   aLunghette(2) = Split("0,4,5,6,7",",")
   aLunghette(3) = Split("0,8,9",",")
   aLunghette(4) = Split("0,10",",")
   ' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
   AlimentaArrayLunghette = UBound(aLunghette)
End Function


Sub ProduciFormazioni(aLunghette,nClasseFormazione)
   
   Dim k ,aRetColonna ,sLungUsate
   ReDim aN( UBound(aLunghette))
   For k = 1 To UBound(aN)
      aN(k) = k
   Next
   
   ReDim aSegni ( nClasseFormazione)
   Call InitSviluppoIntegrale ( aN , nClasseFormazione )
   Do While GetCombSviluppo(aRetColonna  )
         sLungUsate =""
         For k = 1 To nClasseFormazione
            aSegni(k) = aLunghette ( aRetColonna(k))
            sLungUsate = sLungUsate  & aRetColonna(k) & "-"
         Next
         Call Messaggio ("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-") )
         Call SviluppaColonne ( aSegni)
         If ScriptInterrotto Then Exit Do 
         DoEventsEx 
   Loop
   
   

End Sub 
Sub SviluppaColonne (aSegni )

   Dim  nClasse , k , aTmp , nPnt 
   
   nClasse = UBound(aSegni)
   ReDim aColonna( nClasse)
   ReDim aPuntatore ( nClasse)
   ReDim aQSegni ( nClasse)
   

   For k = 1 To nClasse
      aTmp = aSegni(k)
      aPuntatore(k) = 1
      aQSegni (k) = UBound (aTmp)
   Next
   nPnt = nClasse
   
   Do 
      For k = 1 To  nClasse
         aTmp = aSegni(k)

         aColonna (k) = aTmp ( aPuntatore(k))
      Next   
      Call Scrivi (StringaNumeri (aColonna))
      Do While aPuntatore(nPnt) +1 > aQSegni(nPnt)
         nPnt = nPnt -1
         If nPnt =0 Then Exit Do 
      Loop
      If nPnt >0 Then 
         aPuntatore(nPnt) = aPuntatore(nPnt) +1
         For k = nPnt +1 To nClasse
            aPuntatore(k) = 1
         Next
         nPnt = nClasse 
      End If 
      If ScriptInterrotto Then Exit Do 
      DoEventsEx 

   Loop While nPnt > 0 

End Sub
 

joe

Advanced Member >PLATINUM PLUS<
Ti ringrazio per la risposta e la considerazione.

Però la mia interezza non mi permette di superare i dubbi.

Mi spiego: Lo script è un qualcosa di universale.

chiunque lo esegue ottiene lo stesso risultato degli altri.

Se però io né ricavo una descrizione e Luigi una diversa,

significa che l'universalità e l'univocità non ci sono.

In pratica secondo me anteporre l'interpretazione di un riassunto in vbscript

alla descrizione anziché comunicare la sintesi della ricerca

né complica la comprensione.

Un po' come cercare di dedurre il metodo

analizzando i suoi risultati senza conoscerne la descrizione.

Ciò come sai non mi allontana dalla ricerca di una possibile comprensione.

Nello sviluppare le formazioni i cicli non terminano tutti ad x.

ma ad x-1 per gli anni ed anche x-2 per il primo numero del terno.

Ma quest'ultima è poco più di una goccia nel mare.

:)
 

Cinzia27

Premium Member
Grazie mille, LuigiB.
Mi sembra proprio quello che voglio.
Addirittura la scelta della lunghezza delle formazioni. Non ambivo a tanto.
Stasera me lo guardo bene.
Grazie anche a Joe
 

Cinzia27

Premium Member
Luigi, lo script è splendido
ti chiedo ancora 2 favori :
di "stampare" in output le lunghette con una frequenza superiore a... valore da scegliere.

E poi se gentilmente mi spieghi le virgole e perché sono sempre due
aLunghette(1) = Split("0,1,2,3",",")
aLunghette(2) = Split("0,4,5,6,7",",")
aLunghette(3) = Split("0,8,9",",")
aLunghette(4) = Split("0,10",",")

Per aumentare i numeri per ogni split è giusto se faccio così ?
aLunghette(1) = Split("0,1,2,3,4,5",",")
aLunghette(1) = Split("0,6,7,8,9,10,11,12,13",",")
aLunghette(2) = Split("0,14,15,16,17",",")
aLunghette(3) = Split("0,18,19.20",",")
aLunghette(4) = Split("0,10",",")

Grazie
 
L

LuigiB

Guest
Ciao Cinzia ,

Split("0,1,2,3,4,5" , "," )

la funzione split riceve in input 2 parametri
il primo è una stringa
il secondo è il carattere separatore

ritorna un array composto dai segmenti della stringa separati dal carattere separatore , quindi la prima virgola serve per separare i parametri che sono 2 , l'altra virgola racchiusa tra virgolette indica il carattere separatore da usare

per il discorso frequenza devi sforzarti da sola anche perche è facile.
 
L

LuigiB

Guest
Luigi, lo script è splendido
ti chiedo ancora 2 favori :
di "stampare" in output le lunghette con una frequenza superiore a... valore da scegliere.

E poi se gentilmente mi spieghi le virgole e perché sono sempre due
aLunghette(1) = Split("0,1,2,3",",")
aLunghette(2) = Split("0,4,5,6,7",",")
aLunghette(3) = Split("0,8,9",",")
aLunghette(4) = Split("0,10",",")

Per aumentare i numeri per ogni split è giusto se faccio così ?
aLunghette(1) = Split("0,1,2,3,4,5",",")
aLunghette(1) = Split("0,6,7,8,9,10,11,12,13",",")
aLunghette(2) = Split("0,14,15,16,17",",")
aLunghette(3) = Split("0,18,19.20",",")
aLunghette(4) = Split("0,10",",")

Grazie

si ma attenzione alle virgole , hai messo il punto in una circostanza e inmoltre hai ripetuto il numero 10
 

Cinzia27

Premium Member
Serpico 90, ecco lo script.

Codice:
'Serpico  90 : dati 2 cg su ruote cercare gli abbinamenti più frequenti ( Cinzia27)
Sub main()
Dim ambi(4005,18), n(2), n1(2),n2(2), n3(2),n4(2), n5(2), n6(2), n7(2), ru(2)

rr=CInt(InputBox(" Scegli la 1° ruota ",,1))
If rr="" Then Exit Sub

rr1=CInt(InputBox(" Scegli la 2° ruota ",,2))
If rr1="" Then Exit Sub

cg=CInt(InputBox(" Scegli il 1° capogioco ",,36))
If rr="" Then Exit Sub

cg1=CInt(InputBox(" Scegli il 2° capogioco ",,63))
If cg1="" Then Exit Sub


ru(1)=rr
ru(2)=rr1
co=0


ini=1'500
fin=EstrazioneFin
Scrivi
co=0

For y=1 To 90
If cg<>y Then
If cg1<>y Then

co=co+1
n(1)=cg'<<<<<
n(2)=y
n1(1)=cg1'<<<<
n1(2)=y


ambi(co,1)=co
ambi(co,2)=SiglaRuota(rr)
ambi(co,3)=SiglaRuota(rr1)
ambi(co,4)=StringaNumeri(n)
ambi(co,5)=StringaNumeri(n1)

fr=Seriefreq (ini,fin,n,ru,2)
fr1=SerieFreq (ini,fin,n1,ru,2)
 
fre=fr+fr1


ambi(co,6)=fre
End If
End If
Next

OrdinaMatrice ambi,-1,6

For xx=1 To 10

Scrivi Space(2)& ambi(xx,2)&"."&  ambi(xx,3)&"  "& ambi(xx,4)&"  "& ambi(xx,5)&"  "& ambi(xx,6)
Next


End Sub
 

Serpico 90

Advanced Member
Grazie Cinzia
molto gentile SEI TROPPO FORTE
Domani iniziero a fare delle verifiche sulle estrazioni del passato
per dirti la verità in questi minuti ho fatto delle verifiche volanti è inserendo i numeri ho visto l'uscita di ambi .
Credo che questa volta ci dovrei essere ...........
Con molto piacere ti terrò aggiornata sul TUO CAPOLAVORO CHE HAI COSTRUITO.
Ti auguro di esaudire i tuoi desideri come hai fatto con me
Buona Vita
Saluti
Serpico
 

Cinzia27

Premium Member
Ciao Cinzia ,

Split("0,1,2,3,4,5" , "," )

la funzione split riceve in input 2 parametri
il primo è una stringa
il secondo è il carattere separatore

ritorna un array composto dai segmenti della stringa separati dal carattere separatore , quindi la prima virgola serve per separare i parametri che sono 2 , l'altra virgola racchiusa tra virgolette indica il carattere separatore da usare

per il discorso frequenza devi sforzarti da sola anche perche è facile.
Ciao, Luigi.
Le funzioni non le uso mai perché non le ho mai capite.
Non saprei proprio dove collocare la funzione frequenza,
Temo di fare pasticci e di rovinarlo.
Vorrei che questo script fosse completato da te o da Joe.
 

Cinzia27

Premium Member
Ciao, Serpico
Ho tolto dei refusi e ho aggiunto la possibilità di scegliere quanti abbinamenti
vuoi visualizzare.

Codice:
'Serpico  90 : dati 2 cg su ruote cercare gli abbinamenti più frequenti ( Cinzia27)
Sub main()
Dim ambi(4005,6), n(2), n1(2), ru(2)

rr=CInt(InputBox(" Scegli la 1° ruota ",,1))
If rr="" Then Exit Sub

rr1=CInt(InputBox(" Scegli la 2° ruota ",,2))
If rr1="" Then Exit Sub

cg=CInt(InputBox(" Scegli il 1° capogioco ",,36))
If rr="" Then Exit Sub

cg1=CInt(InputBox(" Scegli il 2° capogioco ",,63))
If cg1="" Then Exit Sub

abb=CInt(InputBox(" Quanti abbinamenti vuoi visualizzare ",,5))
If abb="" Then Exit Sub

ru(1)=rr
ru(2)=rr1
co=0


ini=1'500
fin=EstrazioneFin
Scrivi
co=0

For y=1 To 90
If cg<>y Then
If cg1<>y Then

co=co+1
n(1)=cg'<<<<<
n(2)=y
n1(1)=cg1'<<<<
n1(2)=y


ambi(co,1)=co
ambi(co,2)=SiglaRuota(rr)
ambi(co,3)=SiglaRuota(rr1)
ambi(co,4)=StringaNumeri(n)
ambi(co,5)=StringaNumeri(n1)

fr=SerieFreq (ini,fin,n,ru,2)
fr1=SerieFreq (ini,fin,n1,ru,2)
 
fre=fr+fr1
ambi(co,6)=fre
End If
End If
Next

OrdinaMatrice ambi,-1,6

For xx=1 To abb

Scrivi Space(2)& ambi(xx,2)&"."&  ambi(xx,3)&"  "& ambi(xx,4)&"  "& ambi(xx,5)&"  "& ambi(xx,6)
Next


End Sub
 

Cinzia27

Premium Member
Ciao Cinzia ,

Split("0,1,2,3,4,5" , "," )

la funzione split riceve in input 2 parametri
il primo è una stringa
il secondo è il carattere separatore

ritorna un array composto dai segmenti della stringa separati dal carattere separatore , quindi la prima virgola serve per separare i parametri che sono 2 , l'altra virgola racchiusa tra virgolette indica il carattere separatore da usare

per il discorso frequenza devi sforzarti da sola anche perche è facile.
Luigi, grazie per la spiegazione.
Aspetto fiduciosa :)
 

joe

Advanced Member >PLATINUM PLUS<
Ciao Cinzia Ti ringrazio per la fiducia ...

... ma ancora ci ho capito poco.

Allo script di Luigi, ho fatto alcune piccole modifiche per cercare di capire

se è l'algoritmo in vbscrit che soddisfa la tua richiesta.

(Io pur non avendola "capita" l'ho "capita" diversamente)

- in basso a sinistra ... (considerando che era nell'immagine)

ti ho evidenziato l'errore nello sviluppo degli Ambi (ad indice i,j).

- Come vedi aLunghette (4) devono diventare (5)

per contenere le 5 serie di numeri, che hai dato in esempio.

- Ho aggiunto un contatore ad indice (I) per numerare tutti gli AMBI

prodotti dallo script di Luigi ... con le lunghette che ci hai dato.

Descritta la procedura in evidenza con questa immagine:


Immagine.jpg


Dunque lo script di Luigi con le modifiche che descritto è questo:

Codice:
Option Explicit
Sub Main
   Dim aLunghette,nQuantitaLung,nClasseFormazione
   nQuantitaLung = AlimentaArrayLunghette(aLunghette)
   If nQuantitaLung >= 2 Then
      nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nQuantitaLung))
      If nClasseFormazione >= 2 And nClasseFormazione <= nQuantitaLung Then
         Call ProduciFormazioni(aLunghette,nClasseFormazione)
      Else
         MsgBox "Quantità errata",vbExclamation
      End If
   Else
      MsgBox "Lunghette insufficient",vbExclamation
   End If
End Sub
Function AlimentaArrayLunghette(aLunghette)
   ' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
   ReDim aLunghette(5)
   aLunghette(1) = Split("0,66,67,69,78,72,89",",")
   aLunghette(2) = Split("0,55,57,59,75,77,86",",")
   aLunghette(3) = Split("0,65,68,79,88",",")
   aLunghette(4) = Split("0,50,58,54,70,87",",")
   aLunghette(5) = Split("0,56,52,76,85",",")
   ' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
   AlimentaArrayLunghette = UBound(aLunghette)
End Function
Sub ProduciFormazioni(aLunghette,nClasseFormazione)
   Dim I
   Dim k,aRetColonna,sLungUsate
   ReDim aN(UBound(aLunghette))
   For k = 1 To UBound(aN)
      aN(k) = k
   Next
   ReDim aSegni(nClasseFormazione)
   Call InitSviluppoIntegrale(aN,nClasseFormazione)
   Do While GetCombSviluppo(aRetColonna)
      sLungUsate = ""
      For k = 1 To nClasseFormazione
         aSegni(k) = aLunghette(aRetColonna(k))
         sLungUsate = sLungUsate & aRetColonna(k) & "-"
      Next
      Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-"))
      Call SviluppaColonne(aSegni,I)
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop
End Sub
Sub SviluppaColonne(aSegni,I)
   Dim nClasse,K,aTmp,nPnt
   nClasse = UBound(aSegni)
   ReDim aColonna(nClasse)
   ReDim aPuntatore(nClasse)
   ReDim aQSegni(nClasse)
   For K = 1 To nClasse
      aTmp = aSegni(K)
      aPuntatore(K) = 1
      aQSegni(K) = UBound(aTmp)
   Next
   nPnt = nClasse
   Do
      For K = 1 To nClasse
         aTmp = aSegni(K)
         aColonna(K) = aTmp(aPuntatore(K))
      Next
      I = I + 1
      Call Scrivi(FormatSpace(I,4,True) &") "& StringaNumeri(aColonna))
      Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
         nPnt = nPnt - 1
         If nPnt = 0 Then Exit Do
      Loop
      If nPnt > 0 Then
         aPuntatore(nPnt) = aPuntatore(nPnt) + 1
         For K = nPnt + 1 To nClasse
            aPuntatore(K) = 1
         Next
         nPnt = nClasse
      End If
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop While nPnt > 0
End Sub

Il risultato è ESATTAMENTE quello che volevi ?

Intendo dire è giusta la quantità di Ambi e sono rispettate le regole che avevi dato?

:)
 
Ultima modifica:
L

LuigiB

Guest
Ciao Joe è giusta quantomeno rispetto a quell oche lo script si propone di fare , ovvero tutti i possibili ambi (se si sceglie classe 2) che si formano con le combinazioni delle 5 lunghette.
Grazie per l'aggiunta .

1629448813551.png
 

joe

Advanced Member >PLATINUM PLUS<
Ciao Luigi,

Penso anch'io che sia tutto giusto, ma ho preferito chiedere conferma a Cinzia,

che ha maturato esperienza specifica, e so che ha una forma-mente orientata alla sistemistica.

Penso Lei sappia stimare, se "va bene" come ha già scritto, che va bene.

Questo per evitare che io faccia ulteriore scempio, con inutili torture, al tuo bello script.


:)
 
Ultima modifica:

Cinzia27

Premium Member
Confermo, è tutto giusto.
Siete bravissimi.
Ora possiamo mettere la funzione freq oppure ritardo oppure massimo storico .
Mi occorre un' istruzione tipo
fr=seriefreq(1,estrazionefin,n,ru,3)
if fr>....then
scrivi lunghetta e a fianco la frequenza
 

joe

Advanced Member >PLATINUM PLUS<
Ciao Cinzia,

Anche questo mi è un pò difficile da capire perché hai pubblicato molti script, che usano quella istruzione.

Unica nota è che 3 sono i numeri del terno.

Essendo però richiesta la classe di sviluppo, all'inizio dello script questo numero è già in input,

e secondo me è quello da aggiungere ai parametri di SerieFreq

Quello che vedi scritto ... nello script era Call Scrivi Numeri Ruote ecc... si tratta semplicemente di inserirli

Ho modificato la Sub SviluppaColonne

Utilizza gli input detti tuttavia le frequenze di ambi terni ecc. sono evidentemente differenti,

e questa soluzione non è degna dello script.

Codice:
Sub SviluppaColonne(aSegni,I)
   Dim nClasse,K,aTmp,nPnt,aRu(1),Fr
   nClasse = UBound(aSegni)
   ReDim aColonna(nClasse)
   ReDim aPuntatore(nClasse)
   ReDim aQSegni(nClasse)
   aRu(1) = TT_
   For K = 1 To nClasse
      aTmp = aSegni(K)
      aPuntatore(K) = 1
      aQSegni(K) = UBound(aTmp)
   Next
   nPnt = nClasse
   Do
      For K = 1 To nClasse
         aTmp = aSegni(K)
         aColonna(K) = aTmp(aPuntatore(K))
      Next
      I = I + 1
      Fr = SerieFreqTurbo(1,EstrazioneFin,aColonna,aRu,nClasse)
      If Fr > 250 Then
      Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna) & " Fr " & Fr)
      End If
      Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
         nPnt = nPnt - 1
         If nPnt = 0 Then Exit Do
      Loop
      If nPnt > 0 Then
         aPuntatore(nPnt) = aPuntatore(nPnt) + 1
         For K = nPnt + 1 To nClasse
            aPuntatore(K) = 1
         Next
         nPnt = nClasse
      End If
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop While nPnt > 0
End Sub
 

joe

Advanced Member >PLATINUM PLUS<
E' solo UNA Sub che modifica lo script completo presente al msg #132.

Cioè, deve sostituire e sovrascrivere, l'ultima sub (che ha lo stesso nome) già presente al fondo del programma.

:)

Lo script intero con le 2 modifiche (conta delle formazioni / taglio di quelle meno frequenti) è questo:

Codice:
Option Explicit
Sub Main
   Dim aLunghette,nQuantitaLung,nClasseFormazione
   nQuantitaLung = AlimentaArrayLunghette(aLunghette)
   If nQuantitaLung >= 2 Then
      nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nQuantitaLung))
      If nClasseFormazione >= 2 And nClasseFormazione <= nQuantitaLung Then
         Call ProduciFormazioni(aLunghette,nClasseFormazione)
      Else
         MsgBox "Quantità errata",vbExclamation
      End If
   Else
      MsgBox "Lunghette insufficient",vbExclamation
   End If
End Sub
Function AlimentaArrayLunghette(aLunghette)
   ' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
   ReDim aLunghette(5)
   aLunghette(1) = Split("0,66,67,69,78,72,89",",")
   aLunghette(2) = Split("0,55,57,59,75,77,86",",")
   aLunghette(3) = Split("0,65,68,79,88",",")
   aLunghette(4) = Split("0,50,58,54,70,87",",")
   aLunghette(5) = Split("0,56,52,76,85",",")
   ' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
   AlimentaArrayLunghette = UBound(aLunghette)
End Function
Sub ProduciFormazioni(aLunghette,nClasseFormazione)
   Dim I
   Dim k,aRetColonna,sLungUsate
   ReDim aN(UBound(aLunghette))
   For k = 1 To UBound(aN)
      aN(k) = k
   Next
   ReDim aSegni(nClasseFormazione)
   Call InitSviluppoIntegrale(aN,nClasseFormazione)
   Do While GetCombSviluppo(aRetColonna)
      sLungUsate = ""
      For k = 1 To nClasseFormazione
         aSegni(k) = aLunghette(aRetColonna(k))
         sLungUsate = sLungUsate & aRetColonna(k) & "-"
      Next
      Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-"))
      Call SviluppaColonne(aSegni,I)
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop
End Sub
Sub SviluppaColonne(aSegni,I)
   Dim nClasse,K,aTmp,nPnt,aRu(1),Fr
   nClasse = UBound(aSegni)
   ReDim aColonna(nClasse)
   ReDim aPuntatore(nClasse)
   ReDim aQSegni(nClasse)
   aRu(1) = TT_
   For K = 1 To nClasse
      aTmp = aSegni(K)
      aPuntatore(K) = 1
      aQSegni(K) = UBound(aTmp)
   Next
   nPnt = nClasse
   Do
      For K = 1 To nClasse
         aTmp = aSegni(K)
         aColonna(K) = aTmp(aPuntatore(K))
      Next
      I = I + 1
      Fr = SerieFreqTurbo(1,EstrazioneFin,aColonna,aRu,nClasse)
      If Fr > 250 Then
      Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna) & " Fr " & Fr)
      End If
      Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
         nPnt = nPnt - 1
         If nPnt = 0 Then Exit Do
      Loop
      If nPnt > 0 Then
         aPuntatore(nPnt) = aPuntatore(nPnt) + 1
         For K = nPnt + 1 To nClasse
            aPuntatore(K) = 1
         Next
         nPnt = nClasse
      End If
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop While nPnt > 0
End Sub
 
Ultima modifica:
L

LuigiB

Guest
Ciao , la soluzione migliore è fare la statistica della formazione ed inserire i dati in una tabella , impossibile che a Joe non sia venuto in mente .. lo imputo alla mancanza di energie dovute al caldo , ma qui a roma anche se è tornato lucifero in un ultimo sforzo ho fatto io l'aggiunta.

Codice:
Option Explicit
Sub Main
   Dim aLunghette,nQuantitaLung,nClasseFormazione
   Dim aRuote , nSorte
   Dim Inizio  ,Fine 
   
   Inizio = EstrazioneIni
   Fine = EstrazioneFin
   
   nQuantitaLung = AlimentaArrayLunghette(aLunghette)
   
   
   If nQuantitaLung >= 2 Then
      If VerificaDoppi(aLunghette) Then
         nClasseFormazione = Int(InputBox("Quanti numeri per ogni formazione in gioco da 2 a " & nQuantitaLung))
         
         Call ScegliRuote (aRuote )
         nSorte = ScegliEsito(2 , 2 ,nClasseFormazione) 
         
         
         If nClasseFormazione >= 2 And nClasseFormazione <= nQuantitaLung Then
            Call ProduciFormazioni(aLunghette,nClasseFormazione ,aRuote , nSorte , Inizio , Fine )
         Else
            MsgBox "Quantità errata",vbExclamation
         End If
      
      End If
   Else
      MsgBox "Lunghette insufficient",vbExclamation
   End If
End Sub
Function VerificaDoppi(aLunghette)

   Dim k,j,n,sNumeriNonValidi,sNumeriDoppi
   ReDim aB(90)
   
   sNumeriNonValidi = ""
   sNumeriDoppi = ""
   
   For k = 1 To UBound(aLunghette)
      For j = 1 To UBound(aLunghette(k))
         n = Int(aLunghette(k)(j))
         If n > 0 And n <= 90 Then
            If aB(n) Then
                sNumeriDoppi = sNumeriDoppi & " Lunghetta " & k & " numero " & n & ","

            Else
               aB(n) = True
            End If
         Else
            sNumeriNonValidi = sNumeriNonValidi & " Lunghetta " & k & " numero " & n & ","
         End If
      Next
   Next
   
   If sNumeriNonValidi <> "" Or sNumeriDoppi <> "" Then
      If sNumeriNonValidi <> "" Then
         MsgBox "Numeri non validi " & vbCrLf & sNumeriNonValidi,vbExclamation
      End If
      If sNumeriDoppi <> "" Then
         MsgBox "Numeri ripetuti " & vbCrLf & sNumeriDoppi,vbExclamation
      End If
      VerificaDoppi = False
  Else
     VerificaDoppi = True
  End If

   
End Function

Function AlimentaArrayLunghette(aLunghette)
   ' per comodita le lunghette sono preimpostate ma nulla vieta di leggerle da un file o da inputbox
   ReDim aLunghette(5)
   aLunghette(1) = Split("0,66,67,69,78,72,89",",") ' 6
   aLunghette(2) = Split("0,55,57,59,75,77,86",",") ' 6
   aLunghette(3) = Split("0,65,68,79,88",",") '4
   aLunghette(4) = Split("0,50,58,54,70,87",",") '5
   aLunghette(5) = Split("0,56,52,76,85",",") '4
   ' la funzione torna il numero di lunghette ( l'elemento a indice 0 non è usato)
   AlimentaArrayLunghette = UBound(aLunghette)
End Function
Sub ProduciFormazioni(aLunghette,nClasseFormazione,aRuote , nSorte , Inizio , fine )
   Dim I
   Dim k,aRetColonna,sLungUsate
   Dim aT 
   
   aT = Array ("" , "Formazione" , "Ritardo" , "Frequenza" , "RitardoMax")
   Call InitTabella (aT )
   
   ReDim aN(UBound(aLunghette))
   For k = 1 To UBound(aN)
      aN(k) = k
   Next
   ReDim aSegni(nClasseFormazione)
   Call InitSviluppoIntegrale(aN,nClasseFormazione)
   Do While GetCombSviluppo(aRetColonna)
      sLungUsate = ""
      For k = 1 To nClasseFormazione
         aSegni(k) = aLunghette(aRetColonna(k))
         sLungUsate = sLungUsate & aRetColonna(k) & "-"
      Next
      Call Messaggio("Sviluppo colonne tra le lunghette " & RimuoviLastChr(sLungUsate,"-"))
      Call SviluppaColonne(aSegni,I, aRuote , nSorte ,Inizio , fine )
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop
   
   
   Call Scrivi (String (50 , "="))
   Call Scrivi ("Colonne sviluppate : " & I )
   Call Scrivi ("Classe             : " & nClasseFormazione )
   Call Scrivi ("Sorte              : " & nSorte)
   Call Scrivi ("Ruote              : " & StringaRuote( aRuote))
   Call Scrivi (String (50 , "="))
   Call Scrivi 
      
   
   
   Call CreaTabellaOrdinabile ( 2 )
   
End Sub
Sub SviluppaColonne(aSegni,I , aRuote , nSorte , Inizio , Fine)
   Dim nClasse,K,aTmp,nPnt
   Dim  nRitardo ,nRitardoMax , nFrequenza
   
   ReDim aT (4)
   nClasse = UBound(aSegni)
     
   ReDim aColonna(nClasse)
   ReDim aPuntatore(nClasse)
   ReDim aQSegni(nClasse)
   For K = 1 To nClasse
      aTmp = aSegni(K)
      aPuntatore(K) = 1
      aQSegni(K) = UBound(aTmp)
   Next
   nPnt = nClasse
   Do
      For K = 1 To nClasse
         aTmp = aSegni(K)
         aColonna(K) =  aTmp(aPuntatore(K)) 
      Next
      I = I + 1
     ' Call Scrivi(FormatSpace(I,4,True) & ") " & StringaNumeri(aColonna))
      
      Call StatFrzTurbo ( aColonna  , aRuote ,  nSorte , nRitardo ,nRitardoMax , 0 ,nFrequenza ,  , Inizio , Fine)
      aT(1) = StringaNumeri(aColonna)
      aT (2) = nRitardo 
      aT (3) = nRitardoMax
      aT (4) = nFrequenza 
      Call AddRigaTabella (aT)
      
      Do While aPuntatore(nPnt) + 1 > aQSegni(nPnt)
         nPnt = nPnt - 1
         If nPnt = 0 Then Exit Do
      Loop
      If nPnt > 0 Then
         aPuntatore(nPnt) = aPuntatore(nPnt) + 1
         For K = nPnt + 1 To nClasse
            aPuntatore(K) = 1
         Next
         nPnt = nClasse
      End If
      If ScriptInterrotto Then Exit Do
      DoEventsEx
   Loop While nPnt > 0
End Sub
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 11 maggio 2024
    Bari
    71
    67
    47
    25
    88
    Cagliari
    24
    54
    06
    42
    02
    Firenze
    12
    33
    75
    30
    68
    Genova
    51
    70
    74
    37
    73
    Milano
    50
    81
    15
    25
    71
    Napoli
    58
    54
    43
    63
    52
    Palermo
    50
    80
    31
    04
    67
    Roma
    26
    57
    85
    89
    05
    Torino
    18
    07
    82
    14
    78
    Venezia
    54
    49
    86
    34
    28
    Nazionale
    51
    07
    24
    90
    75
    Estrazione Simbolotto
    Milano
    43
    23
    31
    10
    01

Ultimi Messaggi

Alto