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:
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:
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?
 
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
 
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:
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
 
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.
 
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:
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...
 
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
 
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
 
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
    venerdì 17 gennaio 2025
    Bari
    10
    87
    77
    23
    60
    Cagliari
    75
    33
    60
    24
    15
    Firenze
    45
    34
    66
    41
    17
    Genova
    05
    65
    15
    53
    86
    Milano
    20
    84
    74
    76
    01
    Napoli
    90
    29
    38
    52
    68
    Palermo
    33
    36
    02
    20
    68
    Roma
    68
    12
    59
    07
    74
    Torino
    03
    22
    29
    90
    28
    Venezia
    81
    24
    35
    18
    03
    Nazionale
    06
    31
    35
    89
    74
    Estrazione Simbolotto
    Bari
    14
    24
    17
    13
    08

Ultimi Messaggi

Indietro
Alto