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 % 2 * $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 % 2 * $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!