Page 1 sur 1

Combinaison de lettres..

Posté : 25 sept. 2007, 23:27
par Ermi
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 !

Posté : 26 sept. 2007, 10:57
par Sékiltoyai
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

Posté : 28 sept. 2007, 22:52
par Ermi
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 ?

Posté : 28 sept. 2007, 22:54
par Ermi
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..

Posté : 29 sept. 2007, 01:00
par Sékiltoyai
Montre l'implémentation, ca peut venir de là.
Et combien de lettres donne lui tu à traiter ?