Combinaison de lettres..

Ermi
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 23:27

Salut,

Je voudrais utiliser créer une fonction qui me sort toutes les combinaisons possibles de données d'un tableaux :
<?php
$arr = array(a, b, c, d);
foreach ($arr as $val) {
    echo $val."<br>";
}
?> 
m'affichera a,b,c,d

Je voudrais modifier cela pour avoir : a, ab, bc, cd, abc, abd, bcd, dab etc...
Mais je ne vois pas comment faire ca :/

Merci de m'aiguiller un peu !

ViPHP
ViPHP | 5924 Messages

26 sept. 2007, 10:57

C'est un problème d'algorythmique, très simple à résoudre en programmation dynamique (éviter le "diviser pour régner" qui donne un algorithme très gourmand en ressources).

Voila l'algo :

Code : Tout sélectionner

variable globale resultat fonction rec_combiner ( chaine, lettres ) pour chaque lettre du tableau lettres enlever la lettre du tableau lettres ajouter chaine + lettre au tableau resultat appeler rec_combiner ( chaine + lettre , lettres ) fin du pour fin de fonction

Ermi
Invité n'ayant pas de compte PHPfrance

28 sept. 2007, 22:52

Merci pour ta réponse.

Jai codé l'algo qui marhe plutot pas mal.
Au lieu d'afficher chque chaine, je l'ecris dans un fichier.
Mon problème maintenant vient du timeout je pense, car il ne termine jamais le travail demandé lorsque je demande trop de combinaisons :/
J'ai pourtant mis un set_time_limit(0);
mais ca n'a pas l'air de fonctionner..

Une idée ?

Ermi
Invité n'ayant pas de compte PHPfrance

28 sept. 2007, 22:54

Je précise que le safe-mode est réglé sur off sur mon serveur, donc normalement le set_time_limit devrait etre pris en compte..

ViPHP
ViPHP | 5924 Messages

29 sept. 2007, 01:00

Montre l'implémentation, ca peut venir de là.
Et combien de lettres donne lui tu à traiter ?