Combinaison en fonction de 2 variables
Bonjour,
Je cherche a identifier toutes les combinaisons (dans le désordre) en fonction d'un nombre de participant.
Voici le résultat attendu :
Citation:
Array
(
[0] => Gagnant 1 - Gagnant 2 - Gagnant 3 -Gagnant 4 - Gagnant 5
[1] => Gagnant 1 - Gagnant 2 - Gagnant 3 -Gagnant 4 - Gagnant 6
[2] => Gagnant 1 - Gagnant 2 - Gagnant 3 -Gagnant 5 - Gagnant 6
[3] => Gagnant 1 - Gagnant 2 - Gagnant 4 -Gagnant 5 - Gagnant 6
[4] => Gagnant 1 - Gagnant 3 - Gagnant 4 -Gagnant 5 - Gagnant 6
[5] => Gagnant 2 - Gagnant 3 - Gagnant 4 -Gagnant 5 - Gagnant 6
)
Ci-dessous le code PHP qui me permet d'afficher tous les résultats possible pour 5 gagnants et 6 participants($limite_j).
Mais ce code pose plusieurs problème :
Si je veux passer à 6 gagnants, je dois rajouter une boucle et modifier ma ligne d'affichage.
Si je ne veux que 2 gagnants, je dois retirer 3 boucles et modifier ma ligne d'affichage.
J'ai pensé à une fonction récursive mais après avoir passer quelque jours sur des tutos et de nombreux tests, je m'y suis casser les dents.
Mon objectif est d'avoir une fonction de type : possibilite(Array $gagnant, $nbGagnant, $nbParticipant).
Est-ce possible ?
A ma place comment feriez vous ?
Merci pour votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
$gagnant=["Gagnant 1","Gagnant 2","Gagnant 3","Gagnant 4","Gagnant 5","Gagnant 6","Gagnant 7","Gagnant 8","Gagnant 9","Gagnant 10"];
$affichage=[];
$ligne=0;
$limite_j=6;
for($i=0;$i<$limite_j;$i++){
for($j=$i+1;$j<$limite_j;$j++){
for($t=$j+1;$t<$limite_j;$t++){
for($q=$t+1;$q<$limite_j;$q++){
for($c=$q+1;$c<$limite_j;$c++){
$affichage[$ligne]="$gagnant[$i] - $gagnant[$j] - $gagnant[$t] -$gagnant[$q] - $gagnant[$c]";
$ligne++;
}
}
}
}
}
print'<pre>';
print_r($affichage);
print'</pre>'; |