Aide pour créer une fonction PHP

  • Auteur de la discussion Auteur de la discussion unlu
  • Date de début Date de début
WRInaute discret
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...
 
WRInaute accro
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 dit:
* 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
 
WRInaute passionné
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).
 
WRInaute occasionnel
Si l'ordre n'est pas important et en utilisant une fonction recursive.

Code:
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?
 
Discussions similaires
Haut