Je cherche à remplir un tableau avec l'ensemble des combinaisons dans l'ordre possible de n parmi p.
J'ai trouvé plusieurs sujets qui proposent une solution mais juste dans le désordre et avec ordre ne fonctionne pas car il y a remise je pense.
exemple : http://www.developpez.net/forums/d10...mi-n-elements/
Code :
Code : Tout sélectionner
$liste2 = array("banane",5,"escalier",9,11);
function partition2($index, $p, $n, $ordered, $liste) {
global $liste2;
if ($index>=$p) {// la liste est construite -> FIN
echo implode(" - ", $liste)."<br/>";
return;
}
// ajoute un nouvel element candidat dans la liste
// - sans ordre -> candidat: tous les elements
// - avec ordre -> candidat: seulement les elements supérieurs au précédent
$start=0;
if ($ordered && $index>0) {
$start = array_search($liste[$index-1], $liste2) + 1;
}
for($i=$start;$i<$n;$i++) {
$liste[$index] = $liste2[$i];
partition2($index+1, $p, $n, $ordered, $liste);
}
}
partition2(0, 4, count($liste2), $ordered = false, $liste = array());
Ex pour 5 parmi 8 : array(1, 2, 3, 4, 5, 6, 7, 8)
le code avec "$ordered=false" me donne ce type de résultat :
11124
44321
...
Or je cherche a obtenir l'ensemble des combinaisons avec des chiffres distincts.
avec "$ordered=true" il me manque énormément de combinaison car 12345 = 54321
Je pense que ce code est adaptable mais je ne vois pas du tous a quel niveau.
Est-ce que quelqu'un à déjà eu besoin de réaliser ce calcul ? et si oui pouvez vous m'aider a adapter ce code voire le refondre totalement.
info complémentaire : tous les éléments de la liste de départ sont distincts
Merci d'avance