Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Combinaison de p éléments pris dans n éléments

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 28 Sep 2014 21:51    Sujet du message: Combinaison de p éléments pris dans n éléments Répondre en citant

Bonjour ALS,
Je voudrais solliciter votre aide pour une énième fois lol Smile
Nouveau projet, et j'avoue que là, c'est trop compliqué pour moi, du coup j'ai aucun début que je pourrais vous montrer.

Le projet consiste à faire un petit programme qui me donnerait la liste exhaustive, des combinaisons de 5 numéros pris dans une liste de 49 numéros qui vont de 1 à 49 ( en fait exactement toutes les combinaisons possibles au loto lol ).

Donc que le programme me renvoie comme résultat par exemple les groupes de 5 nombres sous forme de liste et de façon ordonnée du genre :

[1 ; 2 ; 3 ; 4 ; 5 ]
[ 1 ; 2 ; 3 ; 4 ; 6 ]

etc etc...

( Mais la liste exhaustive soit un C(5;49) = 49! / (5!*44!) =1906884 combinaisons de façon ordonnée)

Et un autre programme certainement similaire mais qui donnerait des combinaisons de 5 nombres parmi 49 de façon aléatoire...??
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 29 Sep 2014 7:39    Sujet du message: Répondre en citant

Bonjour,

Vous trouverez la réponse à votre question dans cette page du site "Énumérations d'ensembles finis":
http://alamanya.free.fr/themes/enum.htm

en utilisant les procédures :


La procédure premier (e::list) rend le premier élément d'une liste e.

La procédure sauf_premier (e::list) rend la liste obtenue en enlevant le premier élément de la liste e.

La procédure ajout (e,L::list(list)) rend la liste de listes obtenue en ajoutant l'élément e comme premier élément à chacune des listes composant L, L étant une liste de listes.

La procédure combinaisons (p::nonnegint,e::list) rend la liste des parties à p éléments de l'ensemble e: c'est ce que vous recherchez.
La programmation est récursive.

A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 29 Sep 2014 11:22    Sujet du message: Bonjour ALS Répondre en citant

Bonjour ALS,
Merci beaucoup pour votre précieuse aide Smile
J'ai tout entré dans maple et ça fonctionne à merveille.
Mais j'ai pas encore essayé de mettre une combinaison de 5 éléments pris dans 49 éléments, je crains que la mémoire de Maple soit "out" ; je vais essayer de suite pour voir Smile

Voici ce que j'ai entré dans Maple :

======================================

premier := proc (e::list) if 0 < nops(e) then e[1] else error "l'ensemble doit être non vide" end if end proc;
premier([a, b, c, d]); sauf_premier := proc (e::list) local j, L;
L := NULL;
for j to nops(e) do if j <> 1 then L := L, e[j] end if end do;
[L] end proc;
sauf_premier([a, b, c, d]); sauf_ieme := proc (i::posint, e::list) local j, L;
L := NULL;
for j to nops(e) do if j <> i then L := L, e[j] end if end do;
[L] end proc;
sauf_ieme(3, [a, b, c, d]);
ieme := proc (i::posint, e::list) if 1 <= i and i <= nops(e) then e[i] else error "mauvais argument" end if end proc; ieme(3, [a, b, c, d]);
ajout := proc (e, L::(list(list))) local i, M;
M := NULL; for i to nops(L) do M := M, [e, op(L[i])] end do;
[M] end proc; ajout(a, [[b, c, d], [alpha, beta], [], [1, 2, 3, 4]]);
parties := proc (e::list) local x, f, part;
if e = [] then [[]] else x := premier(e);
f := sauf_premier(e);
part := parties(f);
[op(part), op(ajout(x, part))] end if end proc;
combinaisons := proc (p::nonnegint, e::list) local x, f;
if nops(e) < p then [] else if p = 0 then [[]] else x := premier(e);
f := sauf_premier(e);
[op(ajout(x, combinaisons(p-1, f))), op(combinaisons(p, f))] end if end if end proc;
combinaisons(5, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]);

=============================================
Merci et à bientôt
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 29 Sep 2014 13:16    Sujet du message: Résultat Répondre en citant

Bonjour ALS,
Voici le résultat de Maple suite à ladite programmation :

Résultat MAPLE : [La longueur de sortie dépasse la limite de 1% noeuds]

Mémoire 496.27 M ; Temps : 6195,62 secondes.

Pensez-vous ALS qu'il y à un moyen de contourner cela...??
Merci.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 29 Sep 2014 17:13    Sujet du message: Re: Résultat Répondre en citant

Voir la page d'aide kernelopts.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 04 Oct 2014 10:08    Sujet du message: Répondre en citant

Bonjour ALS,
Merci mais je n'ai pas trouvé, même en trifouillant sur le net, je n'ai pas encore vu une allusion en rapport avec "...dépasse la limite des 1% de noeuds..."..
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.