Novità

Qualche scripter riesce a realizzarlo?

platoon

Member
Buon giorno
vorrei sapere se come da foto allegata,e' possibile creare uno script che rintracci nelle ultime 36 estrazioni,su 2 o piu' ruote una terna di numeri scalati in 3 estraz consecutive .Questi 3 num devono essere gli stessi rintracciati in una seconda ruota o anche terza ruota


Esempio recente ,come da foto su Cagliari e' sortita la terna 69-73-80 ,che e' sortita anche su Torino.
Lo script deve rintracciare questi casi.
E rintracciare anche un binomio di numeri ( uguali)in 2 estraz consecutive ,su due o piu' ruote.
Quindi la stessa cosa della terna ma con 2 numeri anziche' 3ceddddddd.jpg

grazie a chi vorra' interessarsi
 
Ultima modifica:
ciao con questo script riesci ad individuare sequenze di numeri che si ripetono su due o piu ruote.
E' possibile
- Impostare di quanti numeri si compone la lunghetta da cercare
- La distanza max in estrazioni tra un numero della lunghetta e il successivo
- Specificare se le sequenze trovate devono avere la stessa disposizione relativa (ovvero la differenza in estrazioni tra un numero e il successivo deve essere uguale in tutte le sequenze trovate)
- specificare le ruote su cui operare

N.B. Vengono rilevate sempre le sequenze con la stessa disposizione dei numeri (ordine di apparizione) ad esempio
se trova una sequenza di 3 numeri <01-02-03> un' altra sequenza per essere considerata uguale sara sempre <01-02-03> non <02-01-03>
la disposizione aall'interno del range delle estrazioni analizzate dipende dagli altri paramtri impostati

Codice:
Option Explicit
Dim aPuntaRighe
Dim aPuntaPosEstr
Dim aNumeriEstr
Dim nQEstrazioni
Dim nPuntatore
Dim collComb 
Sub Main
	Dim idEstr,Ruota
	Dim Inizio,Fine
	ReDim aRuote(0)
	ReDim aBRuote(0)
	Dim nQRuoteSel
	Dim k,j
	Dim nClasse
	Dim sRuoteInteressate,nQRuoteInteressate
	Dim nComb
	Dim nPassoMax 
	Dim sMsg 
	Dim bStesoPasso 
	Dim bOk 
	
	Set collComb = GetNewCollection 
	Fine = EstrazioneFin
	nQEstrazioni = Int(InputBox("Quante estrazioni a partire dall'ultima","Estrazioni da analizzare",18))
	nClasse = Int(InputBox("Quanti numeri da cercare ","Quantita numeri",3))
	nPassoMax = Int(InputBox("Quante estrazioni di distanza massima tra un numero e il successivo ","Quantita numeri",1))
	bStesoPasso = ScegliStessoPasso 
	
	nQRuoteSel = ScegliRuote(aRuote,aBRuote)
	Call DoEventsEx
	
	If nQRuoteSel >= 2 And nQEstrazioni >= nClasse And nClasse >= 3 And aBRuote(TU_) = False And nPassoMax > 0  Then
		Call AlimentaEstrazioniDaAnalizzare
		
		'\\\\\  TEST
'				Call InitPuntatori(nClasse)
'				ReDim aRetIdEstrInteressateA(nClasse)
'
'				ReDim aRetNum(0)
'				Do While GetCombinazione(aRetNum,nClasse,1 ,aRetIdEstrInteressateA)
'					Call Scrivi(StringaNumeri(aRetNum))
'					If ScriptInterrotto Then Exit Do
'		
'				Loop
'				Exit Sub
'		
		For k = 1 To nQRuoteSel - 1
			Call InitPuntatori(nClasse)
			ReDim aRetNum(0)
			nComb = 0
			ReDim aRetIdEstrInteressateA(nClasse)
			ReDim aRetIdEstrInteressateB(nClasse)


			Do While GetCombinazione(aRetNum,nClasse,aRuote(k),aRetIdEstrInteressateA ,nPassoMax)
				nComb = nComb + 1
				If contaNumeriDiversi(aRetNum) = nClasse Then
					If VerificaPasso (aRetIdEstrInteressateA , nPassoMax )Then
						sRuoteInteressate = SiglaRuota(aRuote(k)) & " " & GetInfoEstrInteressate(aRetIdEstrInteressateA)
						nQRuoteInteressate = 1
						For j = k + 1 To nQRuoteSel
							If SequenzaPresente(aRetNum,aRuote(j),nClasse,aRetIdEstrInteressateB) Then
								If VerificaPasso (aRetIdEstrInteressateB , nPassoMax ) Then
									bOk = True
									If bStesoPasso Then
									
									 	bOk = VerificaStessoPasso (aRetIdEstrInteressateA ,aRetIdEstrInteressateB  )
									End If
									If bOk Then 
										sRuoteInteressate = sRuoteInteressate & " " &  SiglaRuota(aRuote(j)) & " " & GetInfoEstrInteressate(aRetIdEstrInteressateB)
										
										nQRuoteInteressate = nQRuoteInteressate + 1
									End If
								End If 
							End If
						Next
						If nQRuoteInteressate > 1 Then
							If AddItemInColl (SiglaRuota(aRuote(k)) & StringaNumeri (aRetNum)) Then
								Call Scrivi("Sequenza " & StringaNumeri(aRetNum,,True) & " presente su " & sRuoteInteressate)
							End If
						End If
					End If
				End If
				If ScriptInterrotto Then Exit Do
				If nComb Mod 100 = 0 Then
					Call Messaggio(nComb)
				End If
			Loop
			If ScriptInterrotto Then Exit For
			Call AvanzamentoElab(1,nQRuoteSel - 1,k)
		Next
	Else
		sMsg = "Parametri non corretti" & vbCrLf
		sMsg = sMsg & "Selezionare almeno due ruote" & vbCrLf
		sMsg = sMsg & "Cercare almeno tre numeri" & vbCrLf
		sMsg = sMsg & "Il valore distanza in estrazioni tra un numero e il successivo deve essere maggiore di 0" & vbCrLf
		sMsg = sMsg & "Non selezionare la ruota Tutte"  
		


		MsgBox sMsg ,vbCritical 
		
	End If
End Sub
Function AddItemInColl  (sKey)
	On Error Resume Next
	
	collComb.Add sKey ,sKey 
	
	If Err =0 Then
		AddItemInColl  = True 
	Else
		Err.Clear
	End If
End Function
Function SequenzaPresente(aNum,nRuota,nClasse,aRetIdEstrInteressate)
	Dim idEstr,e,p,bFound
	Dim nPuntaNum,nLastEstr
	
	p = 0
	nLastEstr = 0
	ReDim aRetIdEstrInteressate(nClasse)
	
	For nPuntaNum = 1 To nClasse
		For idEstr = nLastEstr + 1 To nQEstrazioni
			bFound = False
			For e = 1 To 5
				If aNumeriEstr(idEstr,nRuota,e) = aNum(nPuntaNum) Then
					p = p + 1
					bFound = True
					Exit For
				End If
			Next
			
			If bFound Then
				aRetIdEstrInteressate(nPuntaNum) = idEstr
				nLastEstr = idEstr
				Exit For
			End If
		Next
	Next
	
	
	If p = nClasse Then
		SequenzaPresente = True
	Else
		SequenzaPresente = False
		

	End If
			
			
End Function
Sub AlimentaEstrazioniDaAnalizzare()
	Dim idEstr,nInizio,nFine,e,r,n
	ReDim aNumeriEstr(nQEstrazioni,12,5)
	nFine = EstrazioneFin
	nInizio =(nFine - nQEstrazioni) + 1
	For idEstr = nInizio To nFine
		n = n + 1
		aNumeriEstr(n,0,0) = idEstr
		For r = 1 To 12
			If r <> 11 Then
				For e = 1 To 5
					aNumeriEstr(n,r,e) = Estratto(idEstr,r,e)
				Next
			End If
		Next
	Next
End Sub
Sub InitPuntatori(nClasse)
	Dim K
	ReDim aPuntaRighe(nClasse)
	ReDim aPuntaPosEstr(nClasse)
	For K = 1 To UBound(aPuntaRighe) - 1
		aPuntaRighe(K) = K
		aPuntaPosEstr(K) = 1
	Next
	aPuntaRighe(K) = K
	aPuntaPosEstr(K) = 0
	nPuntatore = UBound(aPuntaRighe)
End Sub
Function IncrementaPuntatori(nClasse , nPassoMax )
	Dim nNewPos,nNewRiga
	Dim k,j
	Dim bRet 
	
	Do
		For k = nClasse To 1 Step - 1
			nNewPos = aPuntaPosEstr(k) + 1
			If nNewPos <= 5 Then
				aPuntaPosEstr(k) = nNewPos
				nNewRiga = aPuntaRighe(k)
				For j = k + 1 To nClasse
					aPuntaPosEstr(j) = 1
					nNewRiga = nNewRiga + 1
					aPuntaRighe(j) = nNewRiga
				Next
				'IncrementaPuntatori = True
				'Exit Function
				bRet = True
				Exit For
			Else
				nNewRiga = aPuntaRighe(k) + 1
				If(nNewRiga +(nClasse - k)) <= nQEstrazioni Then
					For j = k To nClasse
						aPuntaRighe(j) = nNewRiga
						nNewRiga = nNewRiga + 1
						aPuntaPosEstr(j) = 1
					Next
				'	IncrementaPuntatori = True
				'	Exit Function
					bRet = True
					Exit For
	
				End If
			End If
			
			
		Next
		If bRet Then
			If VerificaPasso (aPuntaRighe , nPassoMax) Then
					Exit Do
			Else
				bRet = False
			End If 
		Else
			Exit Do
		End If
	Loop	
	IncrementaPuntatori = bRet
End Function
Function GetCombinazione(aNum,nClasse,nRuota,aRetIdEstrInteressate, nPassoMax)
	Dim k,nRiga,nPos,s
	ReDim aNum(nClasse)
	ReDim aRetIdEstrInteressate(nClasse)
	If IncrementaPuntatori(nClasse ,nPassoMax) Then
		For k = 1 To nClasse
			nRiga = aPuntaRighe(k)
			nPos = aPuntaPosEstr(k)
			aNum(k) = aNumeriEstr(nRiga,nRuota,nPos)
			
			aRetIdEstrInteressate(k) = nRiga
			
		Next
		GetCombinazione = True
	Else
		GetCombinazione = False
	End If
End Function
Function contaNumeriDiversi(aNum)
	ReDim aB(90)
	Dim k,p
	p = 0
	For k = 1 To UBound(aNum)
		If Not aB(aNum(k)) Then
			aB(aNum(k)) = True
			p = p + 1
		End If
	Next
	contaNumeriDiversi = p
End Function

Function GetInfoEstrInteressate(aIdEstr)
	
	Dim s,k
	
	s = "("
	
	For k = 1 To UBound(aIdEstr)
		s = s & aNumeriEstr(aIdEstr(k),0,0) & " - "
	Next
	s = RimuoviLastChr(s," - ") & ")"
	
	GetInfoEstrInteressate = s
End Function


Function VerificaPasso (aIdEstr , nPassoMax )
	Dim k 
	Dim bRet
	
	bRet = True 
	For k =  UBound(aIdEstr) To 2 Step -1
		If aIdEstr (k) - aIdEstr (k-1) >nPassoMax Then
			bRet = False 
			Exit For 
		End If 
	Next
	
	VerificaPasso = bRet 
End Function 
Function VerificaStessoPasso (aIdA ,aIdB  )
	Dim k 
	Dim bRet
	
	bRet = True 
	For k =  UBound(aIdA) To 2 Step -1
		If aIdA (k) - aIdA (k-1) <> aIdB (k) - aIdB (k-1)Then
			bRet = False 
			Exit For 
		End If 
	Next
	VerificaStessoPasso = bRet

End Function 
Function ScegliStessoPasso 
	
	ReDim aVoci (1)
	Dim i 
	
	aVoci(0) = "Sequenze con stesso passo"
	aVoci(1) = "Sequenze qualsiasi"
	
	i=  ScegliOpzioneMenu( aVoci ,0)
	
	If i = 0 Then
		ScegliStessoPasso  = True
	Else
		ScegliStessoPasso  = False
	End If 
End Function
 
Ultima modifica di un moderatore:
Ciao LuigiB
grazie mille per questo tuo interesse al mio script anzi tuo.
Pero' volevo che la sequenza tipo quella da te citata 1-2-3 deve poter essere rintracciata anche se varia l'ordine ossia 2-3-1 oppure 3-1-2,capisci?
cioe' non necessariamente 1-2-3.
E' importante questo perche' trovare una sequenza uguale e' difficile.
Poi se non ti da noia,potresti anziche' mettere lID estrazione ,le date ? mi viene facile controllare gli esiti
Se puoi cambiarlo mi farebbe comodo.
Intanto lo sto testando
 
Ultima modifica:
guarda di casi se ne trovano a decine perfino cosi pensa che succederebbe se non ci fosse questa restrizione ..credo sia meglio cosi .comunque io ho fatto uno script di base chi è interessato puo provare a modificarlo , ciao
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto