Aide pour créer une fonction PHP

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

unlu
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 125
Inscription: Dim Mai 08, 2005 17:29

Aide pour créer une fonction PHP

Message le Ven Aoû 26, 2005 14:39

Bonjour, je souhaiterai créer une fonction qui me permettra d'énumérer toutes les combinaisons de k éléments possible des indices d'un tableau.

Par exemple si on a un tableau de 6 indices et qu'on souhaite sortir la liste des combinaisons de 3 éléments nous aurons ceci :
0 1 2
0 1 3
0 1 4
0 1 5
0 2 3
0 2 4
0 2 5
0 3 4
0 3 5
0 4 5
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5

Le prototype de notre fonction sera donc :
function enumerer(&$Table, $Combinaison);

Merci pour ceux qui m'aiderons...
Dernière édition par unlu le Ven Aoû 26, 2005 14:54, édité 1 fois.


Cendrillon
WRInaute accro
WRInaute accro
 
Messages: 4747
Inscription: Mar Aoû 17, 2004 15:41

Message le Ven Aoû 26, 2005 14:42

oui, alors je te conseille de mettre un titre plus parlant pour cette discution, sous peine d'auto destruction dans les minutes qui suivent ...

Règles du forum a écrit:* choisissez très soigneusement le titre des nouvelles discussions ! Merci d'éviter les simples "question", "référencement" ou "problème", car ça n'apporte rien et oblige tout le monde à aller lire l'ensemble du message...

extrait des règles du forum, à lire d'urgence


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Ven Aoû 26, 2005 16:36

Avec trois boucles FOR imbriquées, tu aurais obtenu
0 0 0
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
...

Comme tu cherches des combinaisons de chiffres uniques, tu ajoutes dans ta boucle la plus imbriquée une vérification qu'aucun des chiffres n'est égal aux autres
0 1 2
0 1 3
0 1 4
0 1 5
0 2 1
...
Et ça marche.
Mais si on veut avoir plus de chiffres possibles il convient de recourir à une fonction récursive (en passant la liste des chiffres "déjà utilisés dans cette combinaison" en argument).

M.o.n.d.i.a.n.i
WRInaute impliqué
WRInaute impliqué
 
Messages: 317
Inscription: Sam Juil 09, 2005 20:41

Message le Ven Aoû 26, 2005 19:35

Si l'ordre n'est pas important et en utilisant une fonction recursive.

Code: Tout sélectionner
function getIndexes($n, $m, $start=0, $temp = "") {
   for($i = $start; $i <= $m; $i++) {
      $temp .= $i;
      if(strlen($temp) < $n) getIndexes($n, $m, $i+1, $temp);      
      elseif(strlen($temp) == $n) echo $temp . "<br>";
      $temp = substr($temp, 0, strlen($temp)-1);            
   }
}

getIndexes(3, 5);


J'ai juste affiché le resultat, pour montrer l'algo. A toi de l'adapter.

Et c'est pourquoi en fait?


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités