Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Permuta e somma gli elementi...
Forum - PHP - Permuta e somma gli elementi...

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 11:59
Giovedė, 31/01/2013
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 :
Codice sorgente - presumibilmente Delphi

  1. <?php
  2.  
  3.     /**
  4.      * Questa funzione genera un array con tutte le permutazioni
  5.      * di lunghezza $length utilizzando gli elementi presenti in $base
  6.      * @param $base array contenente gli elementi da permutare
  7.      * @param $length lunghezza desiderata per le permutazioni
  8.      */
  9.     function perm( $base, $length){
  10.         //Array in cui finiscono tutte le permutazioni
  11.         $perm = array();
  12.         //Funzione che riempie l'array
  13.         do_perm($base, $length, array(), $perm);
  14.         //Restituzione dell'array
  15.         return $perm;
  16.     }
  17.  
  18.     /**
  19.      * Questa funzione riempie l'array $result, non va usata direttamente
  20.     * @param $base array contenente gli elementi da permutare
  21.     * @param $length lunghezza desiderata per le permutazioni
  22.     * @param $partial array contenente le permutazioni parziali
  23.     * @param $result array in cui inserire i risultati
  24.     */
  25.    function do_perm( $base, $length, $partial, &$result ){
  26.        //Se in $partial ci sono $length elementi lo agigungo ai risultati
  27.        //e non faccio ninet'altro
  28.         if( count($partial)== $length ){
  29.             $result[] = $partial;
  30.             return;
  31.         }
  32.         //Per ogni elemento in $base
  33.         foreach( $base as $elem ){
  34.             //Copio la permutazione parziale corrente
  35.             $new = $partial;
  36.             //Aggiungo alla copia l'elemento
  37.             $new[] = $elem;
  38.             //Richiamo ricorsivamente la funzione per controlla se la permutazione
  39.             // va bene (if precedente) o per aggiungere nuovi elementi
  40.             do_perm( $base, $length, $new, $result );
  41.         }
  42.     }
  43.  
  44.     $elementi = array('12','1','5','9', '0');
  45.     $lunghezza = 2;
  46.     $permutazioni = perm( $elementi, $lunghezza );
  47.  
  48.     foreach($permutazioni as $permutazione ){
  49.         echo implode($permutazione)."<br />";
  50.     }
  51.        
  52.         ?>



Ringranzio tutti anticipatamente.

PM Quote