Php - Liste des combinaisons possibles + somme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 365 fois - Téléchargée 13 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

Commentaire

olivier35tf
Messages postés
76
Date d'inscription
jeudi 28 octobre 2010
Statut
Webmaster
Dernière intervention
16 juillet 2019
-
Merci !

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.