Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Partizione di un array

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228

    Dividere in gruppi array che si intersecano

    Ciao a tutti! Ho un problema (che non saprei nemmeno come chiamare) con la gestione di un array.

    ho buttato giù un pezzo della possibile soluzione al mio problema, ma non so come proseguire e non so se questo è il modo migliore per farlo.

    Ho un insieme di n array che contengono degli interi e una funzione (match) che mi controlla a due a due se i due array che le passo contengono almeno un elemento in comune (non mi interessa quale).

    In pratica devo controllare tutte le possibili combinazioni di due di questi array e dividerli in gruppi in base a quelli che 'matchano' tra loro, ovvero se A e B hanno un elemento in comune, B e C idem, e D ed E anche devo ottenere i gruppi (A,B,C) e (D,E).

    In pratica, questo è il codice (semplificato):

    Codice PHP:
    $indici=array(0,1,2,3,4,...)//array iniziale
    for($i=0;$i<$t1;++$i){//t1=count($vettori_con_interi) l'array che contiene tutti gli altri
     
    $handle1=$vettori_con_interi[$i];//seleziono un array 
     
    for($j=$i+1;$j<$t1;++$j){//scorro in diagonale per evitare di farlo 2 volte         
      
    $handle2=$vettori_con_interi[$j];//e prendo il secondo
      
    if(match($handle1,$handle2)>0){//se matchano         
       
    $u=count($res[$i]);           
       for(
    $k=0;$k<$u;++$i
        
    $indici[$indici[$k]]=array_merge($indici[$k],array($j));       
       }
    //PROBLEMA        
    }}} 
    $indici è di lunghezza n (n corrisponde al numero di elementi che devo trattare) e ogni elemento è uguale alla propria chiave

    quello che cerco di fare dove ho scritto PROBLEMA è di unire i vari pezzi in modo che alla fine in $indici ci sia (tornando all'esempio iniziale):
    A->(A,B,C),B->(A,B,C),C->(A,B,C),D->(D,E),E->(D,E)
    (in php al posto delle lettere ci sono i numeri),
    e poi l'idea era di prendere i pezzi diversi, ovvero (A,B,C) e (D,E).

    sicuramente il mio codice non funziona, non so come muovermi, ci son sopra da due giorni ma neanche in pseudocodice sono riuscito a trovare una soluzione ottimale, è un problema che non avevo mai affrontato. Inoltre ho come la sensazione che ci sia un modo migliore per fare quello che voglio.
    Ultima modifica di SimoX90; 18-12-2013 a 03:28

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.