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
    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
Indietro
Alto