 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 28 Sep 2014 21:51 Sujet du message: Combinaison de p éléments pris dans n éléments |
|
|
Bonjour ALS,
Je voudrais solliciter votre aide pour une énième fois lol
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 |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 29 Sep 2014 7:39 Sujet du message: |
|
|
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 |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 29 Sep 2014 11:22 Sujet du message: Bonjour ALS |
|
|
Bonjour ALS,
Merci beaucoup pour votre précieuse aide
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
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 |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 29 Sep 2014 13:16 Sujet du message: Résultat |
|
|
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 |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 29 Sep 2014 17:13 Sujet du message: Re: Résultat |
|
|
Voir la page d'aide kernelopts. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 04 Oct 2014 10:08 Sujet du message: |
|
|
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 |
|
 |
|
|
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
|

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.
|