Originariamente inviato da Santino83_02
invece degli echo e dei print ti metti il risultato in un array e te lo fai ritornare. l'array di storage lo passerai come puntatore alla funzione di permutazione che sceglierai

EDIT:

se ho ben capito dagli esempi:

Codice PHP:

function Fuchs_perm($buf,&$output){
  
$res implode("",$buf);
  
$output[] = $res;
  
$string_length count($buf);
  for(
$i=0;$i<$string_length;$i++){
    
$p[$i]=0;
  }
  
$i=1;
  while(
$i $string_length){
   if (
$p[$i] < $i) {
      
$j $i $p[$i];
      
$tmp=$buf[$j];
      
$buf[$j]=$buf[$i];
      
$buf[$i]=$tmp;
      
$res implode("",$buf);
      
$output[] = $res;
      
$p[$i]++;
      
$i=1;
   } else {
      
$p[$i] = 0;
      
$i++;
   }
  }
}


$buffer = array('p','a','r','o','l','a');
$output = array();

Fuchs_perm($buffer,$output);

print_r($output); 
Ok. Appena ho tempo lo provo. Riusciresti a scrivermi, anche in pseudocode, cosa fa quell'algoritmo? Nel senso, a livello di operazioni PHP riesco a capire ma non riesco a capire il filo logico del Fuchs algorithm. In particolare non capisco questo:



Codice PHP:

 
while($i $string_length){
   if (
$p[$i] < $i) {
      
$j $i $p[$i];
      
$tmp=$buf[$j];
      
$buf[$j]=$buf[$i];
      
$buf[$i]=$tmp;
      
$res implode("",$buf);
      
$output[] = $res;
      
$p[$i]++;
      
$i=1;
   } else {
      
$p[$i] = 0;
      
$i++;
   } 
Grazie e scusate il disturbo!