Novità

Elimina ripetuti

salvo50

Advanced Member >PLATINUM PLUS<
Ciao a Tutti!

Dopo avere tolto i doppioni, mi servirebbe avere per ogni numero la sua variabile.

Grazie!

Codice:
 Option Explicit
Dim xnum(9)
Sub Main
    xnum(1) = 12
    xnum(2) = 88
    xnum(3) = 32
    xnum(4) = 12
    xnum(5) = 56
    xnum(6) = 24
    xnum(7) = 49
    xnum(8) = 56
    xnum(9) = 37
    EliminaRipetuti xnum
    Scrivi StringaNumeri(xnum)
    'adesso mi serve mettere che ogni numero abbia la sua variabile, anche diversa da <xnum>, senza doppioni
    'come fare? Grazie.
End Sub
 
Ciao Salvo.

NON ho capito, "bene", la tua richiesta.

Ovvero è differente "AVERE UN INDICE" per ogni numero rimasto

o sapere quale INDICE rimane e/o quale viene "eliminato"

o ancora quale INDICE contiene un numero "ripetuto".

Sono tutte "possibilità" che portano a scritture piuttosto diverse.

La più semplice ... ma non so se è quella voluta ...

richiederebbe di aggiungere l'opzione "Comprimi" ad "EliminaRipetuti".

Sicchè si avrebbe un array di tutti i numeri presenti.

Ma va notato che "EliminaRipetuti" è scritta (probabilmente per ragioni di velocità)

in modo tale da "ordinare i numeri" e quindi gli INDICI corrispondenti risultano ri-mescolati.

Ovvero ordinati numericamente quando per contro i tuoi numeri non lo erano.

E... dcevo ... di questo non hai fatto cenno.

:)
 
Ultima modifica:
Ciao Joe e grazie

Non avevo pensato a tutte queste possibilità, quindi ti spiego perchè ho fatto questa richiesta, ho finito uno script su <metodi di Fabarri>, però mi sono accorto che con la funzione <impostagiocata> dove faccio uscire una decina di ambi, ci sono degli ambi doppi, quindi vorrei eliminare quelli in più, uno c'è sempre ed il numero doppio non è sempre con la stessa variabile, altrimenti avrei già risolto, ma penso che se ne possono verificare altri di doppioni, oltre agli ambi faccio visualizzare anche lo schemino dei numeri, dove ci sono 8 numeri incolonnati a due a due e sotto la terza coppia c'è un numero isolato, ebbene il metodo chiede che quel numero isolato deve fare coppia con tutti gli altri, più altri 2 numeri che non sono visualizzati, come potrai notare nelle coppie ci sono dei doppioni, io voglio evitare di visualizzare ambi doppi, inoltre il metodo chiede di cercare anche con tutti i numeri ma come potrai notare quello con <eliminaripetuti> l'ho risolto, praticamente sono gli ambi doppi che non so come eliminare, posto lo script intero

Codice:
  Option Explicit
Sub Main
    Dim fin,es,esq,clp,col,esqcol,idestr
    Dim posta(2),ruote(3),ruota(1),poste(5)
    Dim num1(2),num2(2),num3(2),num4(2),num5(2)
    Dim num6(2),num7(2),num8(2),num9(2),num10(2),num11(7)
    Dim p1,p2,p3,p4,r1,r2,caso,casi
    Dim estra,estrb,estrc,estrd,g
    Dim d1,d2,d3,d4,d5,s1,s2,s3,s4,di1,es2
    fin = EstrazioneFin
    esq = InputBox("Inserisci l'estrazione che vuoi iniziare",idestr,9101)
    clp = InputBox("Per quanti colpi vuoi giocare l'ambata?",,7)
    col = CInt(InputBox(" Quante estrazioni vuoi controllare ",,0))
    'posta(1) = 1
    posta(2) = 1
    poste(2) = 1
    poste(3) = 1
    'poste(4) = 1
    'poste(5) = 1
    esqcol = esq + col
    If esqcol > fin Then esqcol = fin
    For es = esq To esqcol
        Messaggio es
        AvanzamentoElab esq,esqcol,es
        caso = 0
        For es2 = es To(es - 3) Step - 1
            For r1 = 1 To 1
                For p1 = 1 To 4
                    p2 = p1 + 1
                    estra = Estratto(es,r1,p1)
                    estrb = Estratto(es,r1,p2)
                    d1 = Distanza(estra,estrb)
                    If d1 < 45 Then
                        For r2 = 1 To 10
                            For p3 = 1 To 4
                                For p4 = p3 + 1 To 5
                                    estrc = Estratto(es2,r2,p3)
                                    estrd = Estratto(es2,r2,p4)
                                    If d1 = estrc Or d1 = estrd Then
                                        d2 = Distanza(estrc,estrd)
                                        di1 = Differenza(d1,d2)
                                        If estrc = di1 Or estrd = di1 Then
                                            s3 = Fuori90(estra + estrb)
                                            s4 = Fuori90(estrc + estrd)
                                            d4 = Distanza(estra,estrd)
                                            d5 = Distanza(estrb,estrc)
                                            g = 0
                                            caso = caso + 1
                                            casi = casi + 1
                                            ColoreTesto 1
                                            Scrivi String(89,"o") & " Casi Totali " & FormattaStringa(casi,"0000")
                                            ColoreTesto 2
                                            Scrivi String(80,"o") & " Estrazione " &(es) & " caso " & FormattaStringa(caso,"0000")
                                            ColoreTesto 0
                                            Scrivi
                                            Scrivi(" Estrazione n." & Format2(es) & " del " & DataEstrazione(es)),0,0
                                            Scrivi "  " & Left(NomeRuota(r1),2) & " " & StringaEstratti(es,r1),2
                                            ColoreTesto 2
                                            Scrivi(" Estrazione n." & Format2(es2) & " del " & DataEstrazione(es2)),0,0
                                            Scrivi "  " & Left(NomeRuota(r2),2) & " " & StringaEstratti(es2,r2),2
                                            ColoreTesto 0
                                            Scrivi
                                            Scrivi Space(35) & Left(NomeRuota(r2),2) & " " & Format2(estrc) & " " & Format2(estrd),0,0
                                            Scrivi "|" & Format2(d2) & "|" & Format2(s4),2
                                            Scrivi Space(35) & Left(NomeRuota(r1),2) & " " & Format2(estra) & " " & Format2(estrb),0,0
                                            Scrivi "|" & Format2(d1) & "|" & Format2(s3),2
                                            Scrivi Space(43) & "|" & Format2(di1) & "|"
                                            Scrivi
                                            g = g + 1
                                            ruota(1) = r1
                                            ruote(1) = r1
                                            ruote(2) = r2
                                            num1(1) = di1
                                            num1(2) = estra
                                            If di1 <> estra Then ImpostaGiocata g,num1,ruota,posta,clp : g = g + 1
                                            num2(1) = di1
                                            num2(2) = estrb
                                            If di1 <> estrb Then ImpostaGiocata g,num2,ruota,posta,clp : g = g + 1
                                            num3(1) = di1
                                            num3(2) = estrc
                                            If di1 <> estrc Then ImpostaGiocata g,num3,ruota,posta,clp : g = g + 1
                                            num4(1) = di1
                                            num4(2) = estrd
                                            If di1 <> estrd Then ImpostaGiocata g,num4,ruota,posta,clp : g = g + 1
                                            num5(1) = di1
                                            num5(2) = d1
                                            If di1 <> d1 Then ImpostaGiocata g,num5,ruota,posta,clp : g = g + 1
                                            num6(1) = di1
                                            num6(2) = d2
                                            If di1 <> d2 Then ImpostaGiocata g,num6,ruota,posta,clp : g = g + 1
                                            num7(1) = di1
                                            num7(2) = s3
                                            If di1 <> s3 Then ImpostaGiocata g,num7,ruota,posta,clp : g = g + 1
                                            num8(1) = di1
                                            num8(2) = s4
                                            If di1 <> s4 Then ImpostaGiocata g,num8,ruota,posta,clp : g = g + 1
                                            num9(1) = di1
                                            num9(2) = d4
                                            If di1 <> d4 Then ImpostaGiocata g,num9,ruota,posta,clp : g = g + 1
                                            num10(1) = di1
                                            num10(2) = d5
                                            If di1 <> d5 Then ImpostaGiocata g,num10,ruota,posta,clp : g = g + 1
                                            num11(1) = estra
                                            num11(2) = estrb
                                            num11(3) = estrc
                                            num11(4) = estrd
                                            num11(5) = di1
                                            num11(6) = d1
                                            num11(7) = d2
                                            EliminaRipetuti num11
                                            ImpostaGiocata g,num11,ruote,poste,clp
                                            Gioca es
                                        End If
                                    End If
                                Next
                            Next
                        Next
                    End If
                Next
            Next
        Next
    Next
    ScriviResoconto
End Sub
 
Ultima modifica:
Mhm ...

se hai già un "capogioco" cioè quello che definisci numero isolato ...

... allora non sono più ambi ... ma abbinamenti per ambo e ti basta "Elimina(re i)Ripetuti".

Diversamente forse sarebbe meglio ragionare "di Ambi" ed eliminare quelli ripetuti.

cioè non ho capito bene quali sono "le giocate".

Nel caso ci fosse: "un capogioco" con tutti i numeri diversi da questo in ambo ...

e poi una lunghetta per ambo (con cui si formano anche gli ambi tra gli abbinamenti)

sarebbe piuttosto semplice da realizzare.

Dunque ho simulato queste ipotesi sullo script che avevi inserito.

Codice:
Option Explicit
Sub Main
Dim x,y
ReDim xnum(90)
Dim CapoGioco
xnum(1) = 12
xnum(2) = 88
xnum(3) = 32
xnum(4) = 12
xnum(5) = 56
xnum(6) = 24
xnum(7) = 49
xnum(8) = 56
xnum(9) = 37
Scrivi StringaNumeri(xnum)
EliminaRipetuti xnum,True
Scrivi "Eliminati i ripetuti : ",0,0
Scrivi StringaNumeri (xnum)
Scrivi
For x = 1 To UBound(xnum)
Scrivi "xnum(" & x & ") = " & xnum(x)
Next
CapoGioco = xnum(NumeroCasuale(1,UBound(xnum)))
Scrivi
Scrivi "   SVILUPPO CON CAPOGIOCO = " & CapoGioco
For x = 1 To UBound(xnum)
If xnum(x) <> CapoGioco Then Scrivi CapoGioco & "." & xnum(x)
Next
Scrivi
Scrivi "   SVILUPPO INTERGALE"
For x = 1 To UBound(xnum) - 1
For y = x + 1 To UBound(xnum)
Scrivi Format2(xnum(x)) & "." & Format2(xnum(y))
Next
Next
End Sub

PS: Nota che avendo utilizzato un numero casuale

tra quelli possibili ... come capogioco ...

lo script può produrre giocate diverse ad ogni esecuzione.

:)
 
Ultima modifica:
Grazie Joe, adesso vedo quale parte accoppiare allo script che ho postato, con le opportune modifiche
 

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 17 luglio 2025
    Bari
    22
    33
    04
    68
    47
    Cagliari
    09
    52
    27
    21
    47
    Firenze
    05
    33
    72
    17
    08
    Genova
    76
    67
    65
    68
    45
    Milano
    75
    52
    46
    34
    22
    Napoli
    40
    23
    71
    12
    22
    Palermo
    44
    89
    39
    01
    31
    Roma
    89
    04
    05
    82
    26
    Torino
    05
    59
    85
    88
    24
    Venezia
    69
    45
    75
    44
    30
    Nazionale
    28
    85
    16
    03
    83
    Estrazione Simbolotto
    Nazionale
    39
    26
    40
    23
    24

Ultimi Messaggi

Indietro
Alto