Php - Liste des combinaisons possibles + somme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 207 fois - Téléchargée 10 fois

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

Ajouter un commentaire

Commentaires

Commenter la réponse de jordane45

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.

Du même auteur (jordane45)