Sub Main
    ReDim aNum(4) ' array contenente il pronostico
    ReDim aRt(1) ' array contenente le ruote
    Dim idEstrInizio ' estrazione da dove comincia la verifica dell'esito
    Dim nEsiti
    ReDim aRetEsito(0)
    ReDim aRetColpi(0)
    ReDim aRetEstratti(0)
    ReDim aRetIdEstr(0)
    Dim k
    Dim Somma
    'imposto il pronostico da verificare
    aNum(1) = 2
    aNum(2) = 41
    aNum(3) = 33
    aNum(4) = 40
    ' imposto le ruote su cui giocare
    aRt(1) = BA_
    
    ' imposto l'estrazione da dove parte la verifica
    idEstrInizio = 1
    'gioco per AMBO  senza un numero di colpi limite
    nEsiti = MioVerificaEsito(aNum,aRt,idEstrInizio,2,0,Nothing,aRetEsito,aRetColpi,aRetEstratti,aRetIdEstr)
    If nEsiti > 0 Then
        For k = 1 To nEsiti
        If aRetEsito(k) <> "Ambo" Then
                Call Scrivi (GetInfoEstrazione(aRetIdEstr(k)) & " " & FormatSpace(aRetEsito(k),20) & " colpi : " & FormatSpace(aRetIdEstr(k) - idEstrInizio,4,True) & " numeri : " & aRetEstratti(k),,,,2)
        Else
                Call Scrivi(GetInfoEstrazione(aRetIdEstr(k)) & " " & FormatSpace(aRetEsito(k),20) & " colpi : " & FormatSpace(aRetIdEstr(k) - idEstrInizio,4,True) & " numeri : " & aRetEstratti(k))
        End If       
                Next
    Else
        Call Scrivi("Esito negativo")
    End If
End Sub
Function MioVerificaEsito(aNum,aRt,idEstr,nSorte,nColpi,aPosizioni,aRetEsito,aRetColpi,aRetEstratti,aRetIdEstr)
    Dim idEstrInizio
    Dim nEsiti
    Dim RetEsito ' torna il nome della sorte (estratto , ambo ...ecc)
    Dim RetColpi ' torna i colpi impiegti fino al raggiungimento dell'esito
    Dim RetEstratti ' torna i numeri estratti
    Dim RetIdEstr ' torna lidentificativo numerico dell'estrazione in cui si è avuto l'esito
    ReDim aRetEsito(0)
    ReDim aRetColpi(0)
    ReDim aRetEstratti(0)
    ReDim aRetIdEstr(0)
    idEstrInizio = idEstr
    Do
        If VerificaEsito(aNum,aRt,idEstrInizio,nSorte,nColpi,aPosizioni,RetEsito,RetColpi,RetEstratti,RetIdEstr) Then
            nEsiti = nEsiti + 1
            ReDim Preserve aRetEsito(nEsiti)
            ReDim Preserve aRetColpi(nEsiti)
            ReDim Preserve aRetEstratti(nEsiti)
            ReDim Preserve aRetIdEstr(nEsiti)
            aRetEsito(nEsiti) = RetEsito
            aRetColpi(nEsiti) = RetColpi
            aRetEstratti(nEsiti) = RetEstratti
            aRetIdEstr(nEsiti) = RetIdEstr
            idEstrInizio = RetIdEstr + 1
        Else
            Exit Do
        End If
    Loop
    MioVerificaEsito = nEsiti
End Function