Php - Liste des combinaisons possibles + somme

Contenu du snippet

Bonjour,
Suite à une demande sur le forum, j'ai décidé de mettre ce code dans la partie CODES-SOURCES.
 
<html> 
<head><title> Combinaisons + sommes </title> 
<body> 

<?php 
//Exemple sur le tableau suivant : 
$arr = array(12.51, 45.62,10,25.9); 
echo '<pre>'; 
Echo " Array contenant les valeurs à utiliser : <br>"; 
print_r($arr); 
echo '</pre>'; 
// compte le nombre d'éléménts 
$n = count($arr); 

// Tableau de sortie contenant les combinaisons possibles 
 $sortie = array(); 
 // Liste des combinaisons : 
 for($i=1;$i<=$n;$i++) {  
  lstcombinaison(",",$arr,$i); 
 } 

// Calcul des sommes de chaque combinaison 
$tbl_liste_somme=sommeTbl($sortie); 
  

//-------------------------------------------------------------// 
//           AFFICHAGE DU RESULTAT                             // 
//-------------------------------------------------------------// 
echo '<pre>'; 
Echo 'Nb Combinaisons : ' . count($sortie); 
echo '</pre>'; 

echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> 
  <tr><th>COMBINAISON</th><th>SOMME</th> 
  </tr>"; 
for ($l=0;$l<count($tbl_liste_somme);$l++){ 
echo "<tr>"; 
Echo "<td>".$tbl_liste_somme[$l]['combinaison']."</td><td>" . $tbl_liste_somme[$l]['somme'] . "</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 


//-------------------------------------------------------------// 
//                 FONCTIONS                                   // 
//-------------------------------------------------------------// 
function lstcombinaison($debut,$tags,$profondeur) { 
// Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
   global $sortie; 
   if($profondeur == 0) { 
      array_push($sortie,$debut); 
      return; 
   } 
   $n = count($tags); 
   for($i=0;$i<$n;$i++) { 
      lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); 
   } 
  } 
   
function Factorielle($number){ 
 $retour = 1; 
 if ($number>1) { 
  $retour = Factorielle($number-1); 
 } 
 return $number*$retour; 
} 
  
function sommeTbl($arr){ 
// Calcule la somme de chaque combinaison 
$n = count($arr); 
$tbl_somme = array(); 
 for($i=0;$i<$n;$i++) {  
  //Combinaison 
  $tbl_somme[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); 
  //Somme 
  $explode_val=explode(",",$arr[$i]); 
  $sum = array_sum($explode_val); 
  $tbl_somme[$i]['somme'] = $sum; 
  } 
return $tbl_somme; 
}  

?> 
</body> 
</html> 


Ce qui donne par exemple :

 Array contenant les valeurs à utiliser : 
Array
(
    [0] => 12.51
    [1] => 45.62
    [2] => 10
    [3] => 25.9
)

Nb Combinaisons : 15

COMBINAISON SOMME
12.51       12.51
45.62       45.62
10        10
25.9       25.9
12.51,45.62    58.13
12.51,10    22.51
12.51,25.9    38.41
45.62,10    55.62
45.62,25.9    71.52
10,25.9    35.9
12.51,45.62,10    68.13
12.51,45.62,25.9    84.03
12.51,10,25.9    48.41
45.62,10,25.9    81.52
12.51,45.62,10,25.9  94.03
 0


A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.