Génération de combinaisons sans répétition avec ordre.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Génération de combinaisons sans répétition avec ordre.

Re: Génération de combinaisons sans répétition avec ordre.

par Mazarini » 13 déc. 2013, 13:07

function combine($tab,$longueur) {
     if ($longueur == 0) {
        return (array(''));
     }
     $result = array();
     for ($i=1;$i++;$i<=$longueur) {
        foreach ($tab as $index=>$valeur) {
            $tab2 = $tab;
            unset($tab2[$index]);
            $tab3 = combine($tab2,$longueur-1);
            foreach ($tab3 as $valeur3) {
                $result[] = $valeur . $valeur3;
            }
     }
     return $result; 
  }
  var_dump(combine(array('A','B','C'),3))
 
Non testé. Surtout, je ne sais pas si $tab2 = $tab duplique le tableau ou utilise les pointeurs.

Re: Génération de combinaisons sans répétition avec ordre.

par sirakawa » 13 déc. 2013, 12:42

Je réfléchissais là-desus quand je suis tombé sur ce mystère (j'ai réduit le code au problème)
<?PHP
print "<h1>test</h1>";
$nb=6;
for ($i = 0; $i < $nb; $i++)
{
 	print "<br> I $i";
//idem avec $k = $i+1
	for($k = 0; $k < $nb; $k++);
	{
		print "<br> I $i K $k";			
	}	
}
$i = 0;

while ($i < $nb)
{
	 	print "<br> I $i";
	 	$k = 0;
	 	while ($k < $nb)
	 	{
		print "<br> I $i K $k";		
		$k++;		 		
	 	}
	$i++; 	
}
?>
sortie
test

I 0
I 0 K 6
I 1
I 1 K 6
I 2
I 2 K 6
I 3
I 3 K 6
I 4
I 4 K 6
I 5
I 5 K 6
I 0
I 0 K 0
I 0 K 1
I 0 K 2
I 0 K 3
I 0 K 4
I 0 K 5
I 1
I 1 K 0
I 1 K 1
I 1 K 2
I 1 K 3
I 1 K 4
I 1 K 5
I 2
I 2 K 0
I 2 K 1
I 2 K 2
I 2 K 3
I 2 K 4
I 2 K 5
I 3
I 3 K 0
I 3 K 1
I 3 K 2
I 3 K 3
I 3 K 4
I 3 K 5
I 4
I 4 K 0
I 4 K 1
I 4 K 2
I 4 K 3
I 4 K 4
I 4 K 5
I 5
I 5 K 0
I 5 K 1
I 5 K 2
I 5 K 3
I 5 K 4
I 5 K 5

Génération de combinaisons sans répétition avec ordre.

par jojolapine » 12 déc. 2013, 23:19

Bonsoir à tous,

Je suis actuellement à la recherche d'un code pour générer les combinaisons possibles d'un tableau sans répétition et de toutes les tailles possibles.
Comme je ne suis pas un as pour expliquer le besoin, voici un exemple avec le tableau [A,B,C] :
A
AB
AC
ABC
ACB
B
BA
BC
BAC
BCA
C
CA
CB
CAB
CBA
Et je ne trouve pas ce que je souhaite, j'ai cherché un bon moment et j'ai trouvé ceci par exemple : php-debutant/combinaison-lettres-t33035.html mais l'ordre n'est pas pris en compte.
J'avoue etre bien perdu, j'ai tenté différentes choses, mais je ne parviens pas à mes fins...
Si une bonne ame pouvait m'indiquer un algorithme en pseudo code utilisable ?

Merci d'avance pour votre aide !