Novità

x gli SCRIPTER

virtualhuman

Senior Member
Salve ! Sono alle prime armi e avrei bisogno di un aiuto! Ho realizzato questo piccolo script di ricerca per testare un metodo ma purtroppo va LENTISSIMO !! :(
C'e' qualcuno di buona volonta'che possa darmi una mano? Grazie in anticipo !!



Sub Main()
Dim nu1(10),nu2(10),nu3(5)
Dim ruota(2),ruote(11)
Dim posta(2)
posta(1) = 1:pposta(2) = 1
co = 0
k = 9
estr = CInt(InputBox("Per quante estrazioni cercare? ","estrazioni",15))
k = CInt(InputBox("Quanti colpi di gioco?","colpi di gioco",9))


fin = EstrazioneFin
ini = fin - estr
For es = ini To fin
AvanzamentoElab ini,fin,es
For r = 1 To 10
For r1 = r + 1 To 12
If r1 = 11 Then r1 = 12
For p1 = 1 To 4
For p2 = p1 + 1 To 5
For p3 = 1 To 4
For p4 = p3 + 1 To 5

n1 = Estratto(es,r,p1):n2 = Estratto(es,r,p2)
n3 = Estratto(es,r1,p3): n4 = Estratto(es,r1,p4)

so1 = Fuori90(n1 + n3)
so2 = Fuori90(n2 + n4)

d1 = Distanza(n1,n2)
d2 = Distanza(n3,n4)
d3 = Distanza(n1,n3)
d4 = Distanza(n2,n4)
d5 = Distanza(n1,n4)
d6 = Distanza(n2,n3)
If p1 = p3 And p2 = p4 Then
If so1 = so2 Then
If d1 = 11 And d5 = 40 Then


co = co + 1:Scrivi String(65,"=") & " caso n° " &(co),1

Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(r) & " " & StringaEstratti(es,r) & _
" > somma < " & " > " & Format2(n1) & "." & Format2(n2) & " >" & " d.or." & "=" & Format2(d1)
Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(r1) & " " & StringaEstratti(es,r1) & _
" = " & Format2(so1) & " > " & Format2(n3) & "." & Format2(n4) & " >" & " d.diag." & "=" & Format2(d5)


ruota(1) = r:ruota(2) = r1 ': ruote(1) = 11
a = d3
b = d4
c = Fuori90(so1 + 90 - a)
d = Fuori90(so2 + 90 - b)

x = Abs(c - d)' ambata





nu1(1) = x
nu1(2) = a


ImpostaGiocata 1,nu1,ruota,posta,k

nu1(1) = x
nu1(2) = b


ImpostaGiocata 2,nu1,ruota,posta,k
nu1(1) = x
nu1(2) = c

ImpostaGiocata 3,nu1,ruota,posta,k
nu1(1) = x
nu1(2) = d


ImpostaGiocata 4,nu1,ruota,posta,k

nu2(1) = x
nu2(2) = a
nu2(3) = b
nu2(4) = c
nu2(5) = d

ImpostaGiocata 4,nu2,ruota,posta,k



Gioca es
End If
End If
End If
Next
Next

Next
Next


Next

Next
Next

End Sub
 
Ultima modifica:

salvo50

Advanced Member >PLATINUM PLUS<
Ciao Virtualhuman, per la lentezza deve essere il computer, perchè lo provato nel mio ed è una scheggia, ho impostato 150 estrazioni indietro e lo ha finito in meno di 30 secondi, la faccina la fa perchè lo script l'ai inserito senza andare in editor avanzato che sarebbe la A a destra, una volta entrato in editor avanzato, devi cliccare neL cancellino, dove avevi posizionato il cursore appaino due scritte CODE, fai copia e incolla dello script ed inseriscilo in mezzo ai 2 CODE
 
Ultima modifica:

virtualhuman

Senior Member
Grazie Salvo! Io l'ho impostato su 1500 estrazioni e impiega 30 minuti buoni ! quindi non c'e' nulla che possa fare per accelerare la ricerca?
 

salvo50

Advanced Member >PLATINUM PLUS<
Secondo me sono i sette FOR-NEXT concatenati che fanno rallentare il tutto, poi un altro motivo è la Nazionale che andando indietro con le estrazioni non esisteva e quindi perde tempo a cercarla, per questo motivo ho aggiunto un altro IF-THEN e poi ho inserito il calcolo del tempo.

Impostato a 1500 estrazioni indietro, con il mio computer lo script ha impiegato 7 minuti e 5 secondi

Codice:
 Sub Main()
   Dim tInizio
   tInizio = Timer
   Dim nu1(10),nu2(10),nu3(5)
   Dim ruota(2),ruote(11)
   Dim posta(2)
   posta(1) = 1
   posta(2) = 1
   co = 0
   k = 9
   estr = CInt(InputBox("Per quante estrazioni cercare? ","estrazioni",1500))
   k = CInt(InputBox("Quanti colpi di gioco?","colpi di gioco",9))
   fin = EstrazioneFin
   ini = fin - estr
   For es = ini To fin
      AvanzamentoElab ini,fin,es
      For r = 1 To 10
         For r1 = r + 1 To 12
            If r1 = 11 Then r1 = 12
            For p1 = 1 To 4
               For p2 = p1 + 1 To 5
                  For p3 = 1 To 4
                     For p4 = p3 + 1 To 5
                        n1 = Estratto(es,r,p1)
                        If n1 > 0 Then
                        n2 = Estratto(es,r,p2)
                        n3 = Estratto(es,r1,p3): n4 = Estratto(es,r1,p4)
                        so1 = Fuori90(n1 + n3)
                        so2 = Fuori90(n2 + n4)
                        d1 = Distanza(n1,n2)
                        d2 = Distanza(n3,n4)
                        d3 = Distanza(n1,n3)
                        d4 = Distanza(n2,n4)
                        d5 = Distanza(n1,n4)
                        d6 = Distanza(n2,n3)
                        If p1 = p3 And p2 = p4 Then
                           If so1 = so2 Then
                              If d1 = 11 And d5 = 40 Then
                                 co = co + 1:Scrivi String(65,"=") & " caso n° " &(co),1
                                 Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(r) & " " & StringaEstratti(es,r) & _
                                 " > somma < " & " > " & Format2(n1) & "." & Format2(n2) & " >" & " d.or." & "=" & Format2(d1)
                                 Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(r1) & " " & StringaEstratti(es,r1) & _
                                 " = " & Format2(so1) & " > " & Format2(n3) & "." & Format2(n4) & " >" & " d.diag." & "=" & Format2(d5)
                                 ruota(1) = r:ruota(2) = r1 ': ruote(1) = 11
                                 a = d3
                                 b = d4
                                 c = Fuori90(so1 + 90 - a)
                                 d = Fuori90(so2 + 90 - b)
                                 x = Abs(c - d)' ambata
                                 nu1(1) = x
                                 nu1(2) = a
                                 ImpostaGiocata 1,nu1,ruota,posta,k
                                 nu1(1) = x
                                 nu1(2) = b
                                 ImpostaGiocata 2,nu1,ruota,posta,k
                                 nu1(1) = x
                                 nu1(2) = c
                                 ImpostaGiocata 3,nu1,ruota,posta,k
                                 nu1(1) = x
                                 nu1(2) = d
                                 ImpostaGiocata 4,nu1,ruota,posta,k
                                 nu2(1) = x
                                 nu2(2) = a
                                 nu2(3) = b
                                 nu2(4) = c
                                 nu2(5) = d
                                 ImpostaGiocata 4,nu2,ruota,posta,k
                                 Gioca es
                              End If
                           End If
                        End If
                        End If
                     Next
                  Next
               Next
            Next
         Next
      Next
   Next
   ScriviResoconto
   Dim nend
   nend = Timer
   Call Scrivi("Tempo di elaborazione : " & FormattaSecondi((nend + 1) - tInizio))
End Sub
Function FormattaSecondi(se)
   Dim hh
   Dim Mm
   Dim Sse
   Dim TimeStr
   hh = se \ 3600
   Mm =(se Mod 3600) \ 60
   Sse = se -((hh * 3600) +(Mm * 60))
   TimeStr = Format2(hh) & ":" & Format2(Mm) & ":" & Format2(Sse)
   FormattaSecondi = TimeStr
End Function
 

joe

Advanced Member >PLATINUM PLUS<
Buon giorno a tutte/i.

Giusto quanto scrive Salvo,

la nidificazione dei molti cicli for-next è a tutti gli effetti una moltiplicazione dei tempi.

Pertanto una crescita esponenziale di essi.

E' bene intervenire ... come proposto.

Con queste modifiche e con un periodo di 1500 estrazioni,

la sua velocità risulta essere 10 volte maggiore.

60 secondi, contro i 600 originali (producendo risultati identici).

:)
 
Ultima modifica:

claudio8

Premium Member
So che siete tutti bravissimo e su questo non ci piove, ma vorrei darvi un mio parere su questo script, non entrando nel merito del costrutto ma solo per specificare alcune cose:
a me non piacciono i ":" specialmente se a leggerli sono dei principianti;

per rispetto a Luigi ;) ;) ;) eviterei di scrivere la lettura del tempo con la tua Function ed utilizzerei
Reset Time in apertura elaborazione e Tempo Trascorso in chiusura ;
nella funzione gioca vi sono altri parametri che nessuno utilizza ma che servono anche a ridurre i tempi di scrittura output eliminando righe inutili
un saluto.
Riporto sotto il costrutto di I legend da me modificato.
Codice:
 Option Explicit
'Metodo di VirtualHuman
'
Sub Main
    Dim iNumEstr,iNumColpi,Fin,Ini
    Dim aR(2),Nu1(2),Nu2(5),Posta(2)
    Dim es,p1,p2,N1,N2,N3,N4,sum1,sum2,Dist1,Dist2,E1,E2,E3,E4,Cg
    Posta(1) = 1
    Posta(2) = 1
    iNumEstr = CInt(InputBox("Inserisci un Numero Estrazioni da esaminare","Ultime Estrazioni Da Verificare",1500))
    iNumColpi = CInt(InputBox("Inserisci un Numero di Estrazioni da verificare","estrazioni di  Verificare",9))
    Fin = EstrazioneFin
    Ini = Fin - iNumEstr
    Dim R1,R2,Cs,k
    Dim d1,d2
    d1 = 11
    d2 = 40
    ResetTimer 'azzera il timer

    For es = Ini To Fin
        For R1 = 1 To 10
            For R2 = R1 + 1 To 11
                If R2 = 11 Then R2 = 12
                For p1 = 1 To 4
                    N1 = Estratto(es,R1,p1)
                    N3 = Estratto(es,R2,p1)
                    sum1 = Fuori90(N1 + N3)
                    For p2 = p1 + 1 To 5
                        N2 = Estratto(es,R1,p2)
                        N4 = Estratto(es,R2,p2)
                        sum2 = Fuori90(N2 + N4)
                        If sum1 = sum2 Then
                            Dist1 = Distanza(N1,N2)
                            Dist2 = Distanza(N1,N4)
                            If Dist1 = d1 And Dist2 = d2 Then
                                Cs = Cs + 1
                                Scrivi String(65,"=") & " caso n° " &(Cs),1
                                Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(R1) & " " & StringaEstratti(es,R1) & _
                                " > somma < " & " > " & Format2(N1) & "." & Format2(N2) & " >" & " d.or." & "=" & Format2(Dist1)
                                Scrivi DataEstrazione(es,1) & " < " & SiglaRuota(R2) & " " & StringaEstratti(es,R2) & _
                                " = " & Format2(sum1) & " > " & Format2(N3) & "." & Format2(N4) & " >" & " d.diag." & "=" & Format2(Dist2)
                                aR(1) = R1
                                aR(2) = R2
                                E1 = Distanza(N1,N3)
                                E2 = Distanza(N2,N4)
                                E3 = Fuori90(sum1 + 90 - E1)
                                E4 = Fuori90(sum2 + 90 - E2)
                                Cg = Abs(E3 - E4)
                                Nu1(1) = Cg
                                Nu1(2) = E1
                                ImpostaGiocata  1,Nu1,aR,Posta,iNumColpi
                                Nu1(1) = Cg
                                Nu1(2) = E2
                                ImpostaGiocata 2,Nu1,aR,Posta,iNumColpi
                                Nu1(1) = Cg
                                Nu1(2) = E3
                                ImpostaGiocata 3,Nu1,aR,Posta,iNumColpi
                                Nu1(1) = Cg
                                Nu1(2) = E4
                                ImpostaGiocata 4,Nu1,aR,Posta,iNumColpi
                                Nu2(1) = Cg
                                Nu2(2) = E1
                                Nu2(3) = E2
                                Nu2(4) = E3
                                Nu2(5) = E4
                                ImpostaGiocata 4,Nu2,aR,Posta,iNumColpi
                                Gioca es,True
                            End If
                        End If
                    Next
                Next
            Next
        Next
        k = k + 1
        Call AvanzamentoElab(1,iNumEstr,k)
    Next
    ScriviResoconto
    Scrivi "Tempo di elaborazione : " & TempoTrascorso
End Sub
 

salvo50

Advanced Member >PLATINUM PLUS<
Non ho capito, per rispetto a LuigiB non devo usare la lettura del tempo con la Function, e dove sta scritto che se io uso la Function (che non è mia, ma del bravissimo Mike58), non rispetto LuigiB.
 

virtualhuman

Senior Member
Vi ringrazio con tutto il cuore per il vostro prezioso aiuto! Ho veramente tantissimo da imparare da tutti Voi! GRAZIE !!
 

joe

Advanced Member >PLATINUM PLUS<
Giusto anche ridurre il tempo, per i calcoli, evitando di compierli

se per essi, non ci sono le condizioni prodromiche al loro doverli svolgere.

E' giusta ulteriore ottimizzazione.

:) Buona giornata a tutte/i.
 
Ultima modifica:
L

LuigiB

Guest
Credo che Claudio abbia detto una frase in senso figurato e che volesse dire "visto che Luigi ha implementato la funzione nello spazioscript perche non la usi".. non nel senso di rispetto......ciao a tutti...
 

Mike58

Advanced Member >PLATINUM PLUS<
salvo50;n2112791 ha scritto:
Non ho capito, per rispetto a LuigiB non devo usare la lettura del tempo con la Function, e dove sta scritto che se io uso la Function (che non è mia, ma del bravissimo Mike58), non rispetto LuigiB.

Per rispetto delle verità la function del tempo è una copia della function di LuigiB che in quanto utile l,ho sempre utilizzato nei miei script, e visto la sua utilità ho poi io stesso richiesto a luigi il codice apposito per un miglior ed immediato utilizzo.
Quindi concordo con Cluadio e nel suo dire che in specialmodo chi usa listare script dovrebbe dar valore ai nuovi codici richiesti. ed implementati.

Ciao a Tutti
 

salvo50

Advanced Member >PLATINUM PLUS<
LuigiB;n2112837 ha scritto:
Credo che Claudio abbia detto una frase in senso figurato e che volesse dire "visto che Luigi ha implementato la funzione nello spazioscript perche non la usi".. non nel senso di rispetto......ciao a tutti...

Ciao, in questo caso chiedo scusa a Claudio8, ho interpretato male le sue parole
 

claudio8

Premium Member
salvo50;n2112791 ha scritto:
Non ho capito, per rispetto a LuigiB non devo usare la lettura del tempo con la Function, e dove sta scritto che se io uso la Function (che non è mia, ma del bravissimo Mike58), non rispetto LuigiB.

Salvo, non avevo alcuna intenzione di fare polemica, visto le premesse del mio intervento e le faccine (con occhiolino) relativamente alll'utilizzo della funzione.

Chi avrebbe potuto lamentarsi per il senso sarcastico del mio testo, sarebbe dovuto essere proprio Luigi. :cool: :cool: :cool:
So per certo che Luigi non richiede adulazioni, ma vedere i suoi sforzi utilizzati al meglio, a dimostrazione che chi lo segue fa buon uso e quindi "rispetta" il suo lavoro credo gli faccia piacere.

Scuse accettate.

Un saluto a tutti i partecipanti.

.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 07 maggio 2024
    Bari
    68
    80
    23
    56
    71
    Cagliari
    43
    74
    20
    02
    11
    Firenze
    75
    19
    18
    74
    69
    Genova
    45
    38
    26
    16
    87
    Milano
    06
    23
    72
    66
    05
    Napoli
    46
    21
    49
    80
    73
    Palermo
    15
    09
    54
    48
    49
    Roma
    06
    58
    78
    27
    31
    Torino
    78
    27
    31
    64
    74
    Venezia
    60
    47
    90
    06
    22
    Nazionale
    43
    58
    26
    18
    79
    Estrazione Simbolotto
    Milano
    17
    16
    25
    23
    43

Ultimi Messaggi

Alto