IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

combinaison de n parmi p (arrangement)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Points : 23
    Points
    23
    Par défaut combinaison de n parmi p (arrangement)
    bonjour,

    Je cherche à remplir un tableau avec l'ensemble des combinaisons dans l'ordre possible de n parmi p.
    J'ai trouvé plusieurs sujets qui proposent une solution mais juste dans le désordre
    exemple : http://www.developpez.net/forums/d10...mi-n-elements/

    La solution de senacle est parfaite mais calcule uniquement les combinaisons dans le désordre.
    12345=54321
    Or, je souhaite que 12345 soit different de 54321.
    ex: 5 parmi 8 me donne 56 combinaisons avec ce code or je chercher a connaitre l'ensemble des combinaisons dans tous les ordres c'est a dire : 6720
    code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $liste2 = array("banane",5,"escalier",9,11);
     
    function partition2($index, $p, $n, $ordered, $liste) {
    	global $liste2;
    	if ($index>=$p) {// la liste est construite -> FIN
    		echo implode(" - ", $liste)."<br/>";
    		return;
    	}
    	// ajoute un nouvel element candidat dans la liste
    	// - sans ordre -> candidat: tous les elements
    	// - avec ordre -> candidat: seulement les elements supérieurs au précédent
    	$start=0;
    	if ($ordered && $index>0) {
    		$start = array_search($liste[$index-1], $liste2) + 1;
    	}
    	for($i=$start;$i<$n;$i++) {
    		$liste[$index] = $liste2[$i];
    		partition2($index+1, $p, $n, $ordered, $liste);
    	}
    }
    partition2(0, 4, count($liste2), $ordered = true, $liste = array());
    Ce code propose le calcule sans ordre mais ça ne fonctionne pas. le résultat est erroné.
    Je pense que ce code est adaptable mais je ne vois pas du tous a quel niveau.
    Est-ce que quelqu'un à déjà eu besoin de réaliser ce calcul ? et si oui pouvez vous m'aider a adapter ce code voire le refondre totalement.

    Merci d'avance

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Est-ce que tous les éléments de ta liste de départ sont distincts?

    Accessoirement, plutôt que de créer un tableau (potentiellement immense), tu devrais utiliser un generator.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse. C'est vrai que la piste generator est mieux mais le problème c'est que la version PHP est en 5.3.
    Sur un serveur de production que je ne peux pas migrer.

    Concernant les temps de réponse ce n'est pas grave vu que c'est un job qui sera lancé la nuit.

    Si tu as une idée pour améliorer le code plus haut je suis preneur.

    Les éléments sont bien tous distinct.

Discussions similaires

  1. combinaison de p parmi k dans l'ordre (arrangement)
    Par Midsou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 12/09/2016, 13h13
  2. Liste de combinaison de p parmi n éléments
    Par senacle dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 2
    Dernier message: 26/01/2011, 21h33
  3. Trouver les combinaisons de k parmi n
    Par saturn1 dans le forum Mathématiques
    Réponses: 21
    Dernier message: 27/08/2010, 11h29
  4. generer toutes combinaisons de N parmi K ?
    Par zhao dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 19/10/2008, 10h54
  5. Réponses: 22
    Dernier message: 27/10/2006, 02h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo