Newsgroup: it.comp.lang.visual-basic
Titolo: [?] - Merge particolare di 2 vettori

Ciao a tutti, vi propongo un piccolo quesito che mi sta facendo pensare un
poco.
    Ho 2 gruppi di 6 elementi.
    Devo mettere a video le coppie di elementi che si possono creare con
questi 2 gruppi.
Mi spiego meglio.
    Con 2 gruppi da 3 elementi il problema lo risolvo in questo modo.
        Gruppo1 -> a1 - b1 - c1
        Gruppo2 -> a2 - b2 - c2
        Gruppi Risultanti
                a2,a1 - b2,b1 - c2,c1
                a2,a1 - b2,c1 - c2,b1
                a2,b1 - b2,a1 - c2,c1
                a2,b1 - b2,c1 - c2,a1
                a2,c1 - b2,a1 - c2,b1
                a2,c1 - b2,b1 - c2,a1
                a2,a1 - c2,b1 - b2,c1
                a2,a1 - c2,c1 - b2,b1
                a2,b1 - c2,a1 - b2,c1
                a2,b1 - c2,c1 - b2,a1
                a2,c1 - c2,a1 - b2,b1
                a2,c1 - c2,b1 - b2,a1
                b2,a1 - a2,b1 - c2,c1
                b2,a1 - a2,c1 - c2,b1
                b2,b1 - a2,a1 - c2,c1
                b2,b1 - a2,c1 - c2,a1
                b2,c1 - a2,a1 - c2,b1
                b2,c1 - a2,b1 - c2,a1
                b2,a1 - c2,b1 - a2,c1
                b2,a1 - c2,c1 - a2,b1
                b2,b1 - c2,a1 - a2,c1
                b2,b1 - c2,c1 - a2,a1
                b2,c1 - c2,a1 - a2,b1
                b2,c1 - c2,b1 - a2,a1
                c2,a1 - a2,b1 - b2,c1
                c2,a1 - a2,c1 - b2,b1
                c2,b1 - a2,a1 - b2,c1
                c2,b1 - a2,c1 - b2,a1
                c2,c1 - a2,a1 - b2,b1
                c2,c1 - a2,b1 - b2,a1
                c2,a1 - b2,b1 - a2,c1
                c2,a1 - b2,c1 - a2,b1
                c2,b1 - b2,a1 - a2,c1
                c2,b1 - b2,c1 - a2,a1
                c2,c1 - b2,a1 - a2,b1
                c2,c1 - b2,b1 - a2,a1
    Ma con 2 gruppi a 6 elementi la cosa si complica un bel poco.
    Inizialmente avevo pensato che la cosa si potesse risolvere con 2 for
annidati, ma ben presto mi sono accorto che in questo modo mi perdo parecchi
risultati.
    La mia domanda č questa. Esiste un modo "sicuro" per poter estrapolare
da 2 gruppi di n elementi tutti i gruppi di n elementi risultanti dalle
combinazioni di tutti i numeri coinvolti ?
    In statistica dovrebbe chiamarsi permutazioni o disposizioni di n
elementi a gruppi di k (in questo momento non ricordo ma deve essere una
delle due). Ma facendo una ricerca trovo migliaia di esempi su come
calcolare il numero di risultati e non il processo per identificare tutti
quei gruppi.
    Grazie per ogni eventuale risposta e/o indirizzamento in luoghi piů
idonei per parlare di questo.
    Ciao, Rocco

 ha scritto nel messaggio
news:pLAC9.19147$Ka3.5...@twister1.libero.it...


 quei gruppi.
Le routines per identificare combinazioni, disposizioni e permutazioni
di N oggetti della classe K le trovi nel progetto CalComb che ho messo
su 
http://www.flanguasco.org
  ed anche, in versione piu' datata, sul
Sito Comune.
Per risolvere il tuo problema, sempre che nella fretta non abbia
capito male (sono al lavoro :-( ), dovresti fare le permutazioni
degli oggetti del primo gruppo e poi abbinarle, una ad una, con
le permutazioni del secondo.
Ciao, per ora e se ho tempo provo a scriverti due righe di codice.
Franco

Rocco:
  nell' intervallo di pranzo ti ho scritto, rapidamente,
questa routine.  Essa mette in un TextBox (txtCombi2V) le
combinazioni di tuo interesse (credo), usando le routines
contenute nel modulo modCalcComb del progetto che ti avevo
segnalato nel messaggio precedente. In ogni riga i valori
separati dalla "," sono gli indici degli elementi dei due
vettori.
Tieni pero' presente che il numero di righe aumenta MOLTO
rapidamente al crescere di N (numero di elementi dei due
vettori): e', infatti, Numero di righe = N! * N!
Ciao e fammi sapere se ho capito bene il tuo problema.
Franco
-------------------------------------------------------
Private Sub cmdCalcola2V_Click()
'
'
    Dim I&, J&, K&, N&, NP&, Comb2V$(), Permu&()
'
    NP = 3   ' N. di elementi nei vettori.
'
    K = 0
    txtCombi2V = ""
    If DisposizioniS_V(NP, NP, Permu()) Then
        ReDim Comb2V(1 To UBound(Permu) * UBound(Permu), 1 To NP)
        For I = 1 To UBound(Permu)
            For J = 1 To UBound(Permu)
                K = K + 1
                For N = 1 To NP
                    Comb2V(K, N) = Str$(Permu(I, N)) & "," & Str$(Permu(J, N)) & " "
                    txtCombi2V = txtCombi2V & Comb2V(K, N)
                Next N
                txtCombi2V = txtCombi2V & vbNewLine
            Next J
            txtCombi2V = txtCombi2V & vbNewLine
        Next I
    End If
'
'
'
End Sub

    Grazie 1000 per le informazioni.
        Sto esaminando il materiale che ho scaricato dal sito che mi hai
indicato (veramente mi sono scaricato tutti i progetti disponibili cosě me
li studio ;-)
        Ma posso gia dirti che sicuramente troverň quello che mi serve.
Ciao e grazie,
        Rocco