Oppure

Loading
31/01/13 10:59
giocala88
Salve ragazzi, vorrei chiedervi un piccolo aiuto per modificare un algoritmo che permuta gli elementi di un array. In pratica la modifica consiste
nell'inserire un ulteriore funzione che sommi gli elementi permutati. Esempio avendo un array del tipo $arr = array('12', '1', '5', '9', '0'), permutando gli elementi a coppia (tipo 12 1, 1 5, 0 9 ..) come faccio ad ottenere la somma degli stessi (tipo 12+1=13, 1+5=6, ...)?? 8-|

Posto l'algoritmo di permutazione :

    <?php

    /**
     * Questa funzione genera un array con tutte le permutazioni
     * di lunghezza $length utilizzando gli elementi presenti in $base
     * @param $base array contenente gli elementi da permutare
     * @param $length lunghezza desiderata per le permutazioni
     */
    function perm( $base, $length){
        //Array in cui finiscono tutte le permutazioni
        $perm = array();
        //Funzione che riempie l'array
        do_perm($base, $length, array(), $perm);
        //Restituzione dell'array
        return $perm;
    }

    /**
     * Questa funzione riempie l'array $result, non va usata direttamente
     * @param $base array contenente gli elementi da permutare
     * @param $length lunghezza desiderata per le permutazioni
     * @param $partial array contenente le permutazioni parziali
     * @param $result array in cui inserire i risultati
     */
    function do_perm( $base, $length, $partial, &$result ){
        //Se in $partial ci sono $length elementi lo agigungo ai risultati
        //e non faccio ninet'altro
        if( count($partial)== $length ){
            $result[] = $partial;
            return;
        }
        //Per ogni elemento in $base
        foreach( $base as $elem ){
            //Copio la permutazione parziale corrente
            $new = $partial;
            //Aggiungo alla copia l'elemento
            $new[] = $elem;
            //Richiamo ricorsivamente la funzione per controlla se la permutazione
            // va bene (if precedente) o per aggiungere nuovi elementi
            do_perm( $base, $length, $new, $result );
        }
    }

    $elementi = array('12','1','5','9', '0');
    $lunghezza = 2;
    $permutazioni = perm( $elementi, $lunghezza );

    foreach($permutazioni as $permutazione ){
        echo implode($permutazione)."<br />";
    }
	
	?>


Ringranzio tutti anticipatamente.
aaa