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
    martedì 15 luglio 2025
    Bari
    60
    18
    12
    57
    28
    Cagliari
    20
    26
    81
    55
    18
    Firenze
    28
    59
    46
    83
    81
    Genova
    32
    57
    09
    41
    17
    Milano
    58
    31
    49
    38
    63
    Napoli
    36
    58
    57
    45
    59
    Palermo
    03
    05
    48
    86
    62
    Roma
    47
    18
    01
    23
    79
    Torino
    56
    34
    49
    89
    90
    Venezia
    46
    44
    52
    82
    78
    Nazionale
    16
    36
    15
    13
    60
    Estrazione Simbolotto
    Nazionale
    27
    09
    44
    18
    11

Ultimi Messaggi

Indietro
Alto