Autore Topic: Fondere due vettori in uno eliminando i duplicati  (Letto 660 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Fondere due vettori in uno eliminando i duplicati
« il: 25 Agosto 2017, 00:38:37 »
Sulla ML c'è una richiesta su come eliminare gli elementi duplicati in un array.
Però poi spiega che ha due Ambiance ma ne vuole solo una.
/usr/share/themes/Ambiance
/home/herberth.local/share/themes/Ambiance
Pertanto deduco che possa avere due vettori Ambiance da fondere in uno senza duplicati.
Io ho suggerito questo postandolo su Playground: https://gambas-playground.proko.eu/?gist=c6e63a84d209911a2b3ff50d2b46a368

Voi che codice avreste suggerito?

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #1 il: 25 Agosto 2017, 02:54:51 »
Si potrebbe fare una cosa del genere:

Codice: [Seleziona]
Public Sub Main()

  Dim s As String
  Dim i As Integer
  Dim ssA As String[] = ["Smith", "Anderson", "Clark", "Wright", "Mitchell", "Johnson", "Thomas", "Rodriguez"]
  Dim ssB As String[] = ["Johnson", "Lopez", "Perez", "Wright", "Williams", "Smith", "Thomas", "Jones", "Anderson"]
 
   For Each s In ssB
     i = ssA.Find(s)
     If i > -1 Then
       ssA.Remove(i)
     Endif
   Next
   
   ssB.Insert(ssA)
   ssB.Sort()
 
   For Each s In ssB
     Print s
   Next
   
End
« Ultima modifica: 25 Agosto 2017, 09:36:11 da Gianluigi »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #2 il: 28 Agosto 2017, 23:19:35 »
Forte il metodo proposto da Minisini per eliminare i doppioni.
Per rimanere nella nostra semplificazione (anche se un po arzigogolato) lo si potrebbe scrivere così:
Codice: [Seleziona]
  Dim cThemes As New Collection
  Dim ssA As String[] = ["Johnson", "Lopez", "Perez", "Wright", "Williams", "Smith", "Thomas", "Jones", "Anderson"]
  Dim ssB As String[] = ["Smith", "Anderson", "Clark", "Wright", "Mitchell", "Johnson", "Thomas", "Rodriguez"]
  Dim aThemes As New String[]
  Dim sTheme As String
  Dim sDir As String

  For Each sDir In ssA
    cThemes[sDir] = True
  Next

  For Each sDir In ssB
    cThemes[sDir] = True
  Next

  For Each cThemes
    aThemes.Add(cThemes.Key)
  Next

  aThemes.Sort(gb.Ascent)

  For Each sTheme In aThemes
    Print sTheme
  Next

Bel trucchetto (a me sconosciuto)  :ok:

P.S. La discussione originale è qui
« Ultima modifica: 28 Agosto 2017, 23:22:42 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #3 il: 29 Agosto 2017, 02:08:42 »
...molte strade portano a Roma.   
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #4 il: 06 Settembre 2017, 16:42:19 »
in pratica ha sfruttato il meccanismo intrinseco nelle collection che aggiungono un elemento solo se non e' duplicato?
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #5 il: 06 Settembre 2017, 16:56:46 »
in pratica ha sfruttato il meccanismo intrinseco nelle collection che aggiungono un elemento solo se non e' duplicato?

Si esattamente quello che io, non usando mai le collezioni, non conoscevo.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:Fondere due vettori in uno eliminando i duplicati
« Risposta #6 il: 07 Settembre 2017, 12:42:56 »
me possino, le ho scoperte anche io ora, in questo post :D
se corri, morirai stanco (motto degli sniper)