Novità

aiuto script

  • Creatore Discussione Creatore Discussione lla
  • Data di inizio Data di inizio
Ciao Salvo,

Si essendoci una istruzione dedicata è facile.

Basta usare la funzione appropriata.

Naturalmente deve essere "quella giusta",

in funzione del risultato che si vuole ottenere.

Vediamo lo script per gestire tutte le differenze tra i 5 estratti:

Codice:
Sub Main()
   Dim Es,E(5),R,P,Q
   Es = 9597 : R = BA_
   'Memorizza 5 Estratti
   For P = 1 To 5
      E(P) = Estratto(Es,R,P)
   Next
   'Scrive informazioni su Estrazione/Ruota/Estratti
   Scrivi DataEstrazione(Es) & " " & SiglaRuota(R) & " " & StringaNumeri(E,,True)
   Scrivi
   'Sviluppa tutte differenze
   For P = 1 To 4
      For Q = P + 1 To 5
         Scrivi E(P) & "." & E(Q) & " Diff =  " & Differenza(E(P),E(Q))
      Next
   Next
End Sub

:)
 
Ultima modifica:
ciao , colgo piu che altro l'occasione per salutare Joe , l'altro giorno sul post principale non ho potuto perche il forum funzionava male.
Ora io so che Joe ama fare script compatibili tra spaziometria e il famoso altro programma ..ma in spaziometria lo script puo essere piu snello.
Saluti a Joe e naturalmente anche a Salvo.

Codice:
Sub Main()
   Dim Es,E,R,P,Q
   Es = 9597 : R = BA_
   'Memorizza 5 Estratti
   'For P = 1 To 5
   '   E(P) = Estratto(Es,R,P)
   'Next
   Call GetArrayNumeriRuota ( Es, R, E)

   'Scrive informazioni su Estrazione/Ruota/Estratti
   Scrivi DataEstrazione(Es) & " " & SiglaRuota(R) & " " & StringaNumeri(E,,True)
   Scrivi
   'Sviluppa tutte differenze
   For P = 1 To 4
      For Q = P + 1 To 5
         Scrivi E(P) & "." & E(Q) & " Diff =  " & Differenza(E(P),E(Q))
      Next
   Next
End Sub
 
Ciao Luigi, come dice Joe qualche post addietro ... qui il "top dei top" è Luigi e su questo non ci sono dubbi, ma Joe è in gambissima, mi piacciono i suoi script spartani e invidio la padronanza che ha con i FOR-NEXT.

Un salutone a tutti e due.
 
Ultima modifica:
Ciao Luigi.

Si hai fatto benissimo a sottolineare il "livello superiore" di Spaziometria.

Ovvero della presenza delle potenti-funzioni-dedicate, che hai aggiunto al Basic,

con le quali diventa possibile ed è "tutto-fatto" ... con una sola istruzione.

:)​ Saluto naturalmente anche Salvo e tutte/i.
 
Ultima modifica:
joe;n2162372 ha scritto:
Ciao Salvo,

Si essendoci una istruzione dedicata è facile.

Basta usare la funzione appropriata.

Naturalmente deve essere "quella giusta",

in funzione del risultato che si vuole ottenere.

Vediamo lo script per gestire tutte le differenze tra i 5 estratti:

Codice:
Sub Main()
Dim Es,E(5),R,P,Q
Es = 9597 : R = BA_
'Memorizza 5 Estratti
For P = 1 To 5
E(P) = Estratto(Es,R,P)
Next
'Scrive informazioni su Estrazione/Ruota/Estratti
Scrivi DataEstrazione(Es) & " " & SiglaRuota(R) & " " & StringaNumeri(E,,True)
Scrivi
'Sviluppa tutte differenze
For P = 1 To 4
For Q = P + 1 To 5
Scrivi E(P) & "." & E(Q) & " Diff = " & Differenza(E(P),E(Q))
Next
Next
End Sub

:)

si possono usare somme e differenze già calcolate , come variabili anzichè gli estratti ?

ad esempio

Dim num (10) dove num sono tutte le differenze o somme

num1 num (1)= estratto (es,Ba_,1)- estratto (es,Ba_,2)
num (2)= estratto (es,Ba_,2)- estratto (es,Ba_,4)
e così via


e poi un'altra variabile con cui sommare, moltiplicare, dividere, sottrarre le num?

grazie :)
 
joe;n2162350 ha scritto:
No.

Lottologicamente la distanza è una grandezza ciclometrica.

Per esempio tra 01 e 89 è 2.

Dunque non è differenza pura (o assoluta) cioè 88.

E ... non è neppure diametrale della differenza. Cioè 88-45 = 43

Per convenzione la distanza si misura in senso orario su di un cerchio.

(Per questo è convenzionalmente sempre un numero positivo)

Dopo aver disposto i 90 numeri in cerchio alla stessa distanza unitaria.

Cioè è la lunghezza dell'arco di circonferenza che unisce i 2 numeri

sulla curva ove essi sono rappresentati.

:)

Grande joe, anche se sono un attimo fuori post, qualcuno ha una formula excel a questo quesito? ad esempio la formula "=SE(AK28>45;90-AK28+AL28;AK28-AL28) " dove AK28 = 37 eAL28 = 1 mi torna 36 mentre dovrebbe invece ritornarmi 54. il 90% dei risultati sono esatti ma alcuni sfalsano in questo modo. Ringraziando se non è chiedere troppo.
 
Ciao Vengio, non ti dà 54 perchè AK28 (37) non è maggiore di 45 come richiesto dalla funzione SE(AK28>45.....)

esempio SE(AK28>45;90-AK28+AL28;AK28-AL28)

SE 37 è maggiore di 45 è falso, quindi passa al 37-1=36

Gio.
 
Buona serata a tutte/i.

x lla:

"Si possono usare somme e differenze già calcolate , come variabili anzichè gli estratti ?"

Si è sufficiente ed utile memorizzarle indicizzate appena calcolate ...

e poi si possono richiamare per futuri calcoli.

Per l'indice da attribuire basta inserire un contatore che si userà per numerare progressivamente

i risultati uno ad uno nella routine in cui essi vengono elaborati.

Per esempio K = K+1 : Risultato (K) = Estratto(P) +Estratto(Q)

---

x Vengio:

... Non è così semplice.

Nell'esempio che ho fatto 89 è più piccolo di 1 pertanto contando in senso orario da 89 ad 1

Abbiamo: 89/90 = 1 distanza + 90/01 = 1 distanza ... Totale distanze = 2

Con Excel, in una ventina d'anni, per questi calcoli, ho visto quasi esclusivamente, dei pasticci.

Dunque appena posso provo a scrivere e controllare una formula efficiente tuttavia ...

... secondo me, con excel non si riesce a gestire la ciclometria

con la versatilità e la velocità e la potenza di calcolo di Spaziometria.

L'assenza di questa funzione come di migliaia di altre ne è già ...esempio significativo.

:)
 
Ultima modifica:
Buon Giorno a tutte/i.

Vengio, ho provato con excel l' algoritmo che avevo per mente e funziona bene.

Per facilitarti la scrittura ho usato variabili stile celle excel (A1,B1, ...)

Nella formula dovrai naturalmente sostituire virgole con puntievirgola e

massimo e minimo con max min quando riunirai il "se" Vero/Falso (divisi da Else) in una unica cella.

La sintassi giusta e funzionante che dovrai adottare dipende dalla versione e lingua dell' excel che utilizzi.

Dunque la mia "funzione" per il calcolo della DistanzaCiclometrica (per Spaziometria) é così:

Codice:
Option Explicit
Sub Main
'Test Funzione DistanzaCiclometrica per Excel v.1.0 By Joe 
   Dim A1,B1
   For A1 = 1 To 89
      For B1 = A1 + 1 To 90
         Scrivi Format2(A1) & "." & Format2(B1) & "  ",0,0
         Scrivi Format2(F_DistanzaCiclometrica(A1,B1)) & "  ",0,0
         Scrivi F_DistanzaCiclometrica(A1,B1) = Distanza(A1,B1)
      Next
   Next
End Sub
Function F_DistanzaCiclometrica(A1,B1)
   If Massimo(A1,B1) - Minimo(A1,B1) < 45 Then
      F_DistanzaCiclometrica = Massimo(A1,B1) - Minimo(A1,B1)
   Else
      F_DistanzaCiclometrica = 90 - Massimo(A1,B1) + Minimo(A1,B1)
   End If
End Function

:)
 
mi dite perchè mi ritorna continuamente 90 come risultato?please

Option Explicit
Sub Main
Dim ruo(2),r,clp,ee,es,co,fin,ini,NUMa,NUMb,risultato(2)
Dim aposte(3)
aposte(1) = 1 'x ambata
NUMa = Fuori90(Estratto(es,BA_,1) + Estratto(es,BA_,2))
NUMb = Fuori90(Estratto(es,BA_,1) + Estratto(es,BA_,3))
r = CInt(InputBox("SU CHE RUOTA DI RICERCA?",,1))
ee = CInt(InputBox("QUANTE ESTRAZIONI CONTROLLO?",,10))
clp = CInt(InputBox("QUANTI COLPI?",,9))
co = 0' contatore
fin = EstrazioneFin
ini = EstrazioneFin - ee
For es = ini To fin
risultato(1) = Differenza(NUMa,NUMb)
risultato(2) = Fuori90(NUMa+NUMb)

ruo(2) = BA_
co = co + 1
Scrivi
Scrivi "Caso n°: " & CInt(co),1,risultato
ImpostaGiocata 1,risultato,ruo,aposte,clp
Gioca es
Next
ScriviResoconto
End Sub

....

grazie
 
Ciao lla,

si vede subito che "estratto(es"

restituisce zero perchè es vale zero dunque col fuori90 diventa 90.

ini = ... / fin = ... / for es = ini to fin

devi scriverli prima.

:)
 
beato te che lo vedi subito

ma non gliel'ho già detto?
ee = CInt(InputBox("QUANTE ESTRAZIONI CONTROLLO?",,10))
fin = EstrazioneFin
ini = EstrazioneFin - ee
 
Ultima modifica:
Codice:
Sub Main
   Dim ruo(2),r,clp,ee,es,co,fin,ini,NUMa,NUMb,risultato(2)
   Dim aposte(3)
   aposte(1) = 1 'x ambata
   r = CInt(InputBox("SU CHE RUOTA DI RICERCA?",,1))
   ee = CInt(InputBox("QUANTE ESTRAZIONI CONTROLLO?",,10))
   clp = CInt(InputBox("QUANTI COLPI?",,9))
   ' Primo fissi i limiti
   fin = EstrazioneFin
   ini = EstrazioneFin - ee
   '' Secondo scorri le estrazioni
   For es = ini To fin
   ''' Terzo  leggi gli estratti e con questi calcoli il pronostico
      NUMa = Fuori90(Estratto(es,BA_,1) + Estratto(es,BA_,2))
      NUMb = Fuori90(Estratto(es,BA_,1) + Estratto(es,BA_,3))
      co = 0' contatore
      risultato(1) = Differenza(NUMa,NUMb)
      risultato(2) = Fuori90(NUMa + NUMb)
      ruo(2) = BA_
      co = co + 1
      '''' Quarto imposti la giocata
      Scrivi "Caso n°: " & CInt(co),1',risultato
      ImpostaGiocata 1,risultato,ruo,aposte,clp
      ''''' Quinto effettui la giocata
      Gioca es
   Next
   ''''' Ultimo controlli il resoconto
   ScriviResoconto
End Sub
 
Ultima modifica:
Joe91;n2163082 ha scritto:
Buon Giorno a tutte/i.

Vengio, ho provato con excel l' algoritmo che avevo per mente e funziona bene.

Per facilitarti la scrittura ho usato variabili stile celle excel (A1,B1, ...)

Nella formula dovrai naturalmente sostituire virgole con puntievirgola e

massimo e minimo con max min quando riunirai il "se" Vero/Falso (divisi da Else) in una unica cella.

La sintassi giusta e funzionante che dovrai adottare dipende dalla versione e lingua dell' excel che utilizzi.

Dunque la mia "funzione" per il calcolo della DistanzaCiclometrica (per Spaziometria) é così:

Codice:
Option Explicit
Sub Main
'Test Funzione DistanzaCiclometrica per Excel v.1.0 By Joe
Dim A1,B1
For A1 = 1 To 89
For B1 = A1 + 1 To 90
Scrivi Format2(A1) & "." & Format2(B1) & " ",0,0
Scrivi Format2(F_DistanzaCiclometrica(A1,B1)) & " ",0,0
Scrivi F_DistanzaCiclometrica(A1,B1) = Distanza(A1,B1)
Next
Next
End Sub
Function F_DistanzaCiclometrica(A1,B1)
If Massimo(A1,B1) - Minimo(A1,B1) < 45 Then
F_DistanzaCiclometrica = Massimo(A1,B1) - Minimo(A1,B1)
Else
F_DistanzaCiclometrica = 90 - Massimo(A1,B1) + Minimo(A1,B1)
End If
End Function

:)

Ciao Joe, grazie per il pensiero. Quindi dovrei inserire quanto da te pubblicato, con le opportune modifiche, come vba in excel, giusto? Comunque sto usando il 2013.
 
vengio;n2163121 ha scritto:
Ciao Joe, grazie per il pensiero. Quindi dovrei inserire quanto da te pubblicato, con le opportune modifiche, come vba in excel, giusto? Comunque sto usando il 2013.

Ciao Vengio.

No.

Come da esempio in un foglio nuovo/vuoto :

In A1 scrivi 89

in B1 Scrivi 1

In C1 Scrivi = SE (Max(A1;B1) - Min(A1;B1)<45; ... ecc ecc

(ricopiando il resto della funzione con la sintassi di excel).

Se ti restituisce 2 puoi provare con altre coppie di numeri in A1 e B1.

Quando giusti i risultati e capita la formula ... la puoi trasferire al tuo foglio.

:)
 
Ultima modifica:
ciao a tutti
altra richiesta, come si differenziano i numeri pari dai dispari?

vorrei mettere una condizione del tipo
se pippo= pari allora

dividi pippo per 2
altrimenti no

l'istruzione if l'ho trovata sull'aiuto script di spaziometria ma come si dice pari e dispari?:)
 
Ciao lla,

Semplicemente pari.

Codice:
Option Explicit
Sub Main
   Scrivi "Pari dell'ultima estrazione"
   Dim E,R,P
   For R = 1 To 10
      Scrivi SiglaRuota(R),0,0
      For P = 1 To 5
         E = Estratto(EstrazioneFin,R,P)
         If pari(E) Then Scrivi " " & Format2(E),0,0
      Next
      Scrivi
   Next
End Sub

Fai precedere NOT se vuoi dispari

:)
 
Dimenticavo per i dispari,

puoi anche usare altri test condizionali:

If Pari (E) <> True Then oppure

If Pari (E) = False Then

che lascia intendere che, prima, ho usato una semplificazione di:

If pari (E) = True Then
 
Ultima modifica:
va bene anche se E non è un estratto ma un risultato di una operazione precedente?

tipo

e= s1+s2

se pari (e) e= s1+s2/2
altrimenti e=s1+s2
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 14 gennaio 2025
    Bari
    41
    25
    12
    73
    55
    Cagliari
    54
    20
    48
    32
    67
    Firenze
    75
    23
    68
    10
    38
    Genova
    33
    27
    81
    70
    64
    Milano
    68
    01
    64
    86
    87
    Napoli
    47
    75
    45
    10
    21
    Palermo
    55
    86
    33
    53
    70
    Roma
    88
    78
    61
    06
    07
    Torino
    76
    08
    23
    61
    82
    Venezia
    25
    15
    49
    21
    81
    Nazionale
    70
    10
    32
    78
    07
    Estrazione Simbolotto
    Bari
    07
    14
    28
    45
    31
Indietro
Alto