Php - Liste des combinaisons possibles + somme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 163 fois - Téléchargée 14 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

Messages postés
79
Date d'inscription
jeudi 28 octobre 2010
Statut
Administrateur
Dernière intervention
9 juillet 2020

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.