Login  Register

Re: Permutations pour une collection

Posted by SergeStinckwich on Jun 02, 2014; 4:16pm
URL: https://forum.world.st/Permutations-pour-une-collection-tp4761332p4761333.html

J'ai eu un problème un peu similaire sur les combinaisons d'une collection.
J'ai utilisé la méthode combinations: kk atATimeDo: aBlock également
définie sur SequenceableCollection.



2014-06-02 17:54 GMT+02:00 Sebastien Audier <[hidden email]>:

> Bonjour tout le monde,
>
> Je cherchais une méthode pour générer toutes les permutations possible d'une
> collection.
> A partir d'une collection, je dois obtenir une collection de collections
> distinctes.
>
> Il y a la méthode permutationsDo:
> Celle-ci est implémenté pour les classes Interval et SequenceableCollection.
>
> Cela fonctionne parfaitement pour Interval, mais pas vraiment pour une
> collection. Le résultat obtenu n'est pas celui auquel je m'attend.
>
> J'ai donc implémenté une méthode temporaire qui invoque la méthode déjà
> présente dans la classe Interval:
>
> permutationsFor: aCollection
> | res |
> res := OrderedCollection new.
> (1 to: (aCollection size)) permutationsDo: [ :each | | temp |
> temp := OrderedCollection new.
> each do: [ :item |
> temp add: (aCollection at: item)].
> res add: temp].
> ^res
>
>
> Pensez-vous qu'il y aurait une meilleur façon de faire ? (plus élégante ou
> qui existe déjà et que j'aurai loupé...)
>
> En vous remerciant par avance,
>
> --
> Sébastien AUDIER
>
> S.A.R.L Objectfusion,
> Applications web, consulting,
> Smalltalk developpement
>
> --
> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
> "Smalltalk-fr".
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> [hidden email].
> Pour obtenir davantage d'options, consultez la page
> https://groups.google.com/d/optout.



--
Serge Stinckwich
UCBN & UMI UMMISCO 209 (IRD/UPMC)
Every DSL ends up being Smalltalk
http://www.doesnotunderstand.org/

--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Smalltalk-fr.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse [hidden email].
Pour plus d'options, visitez le site https://groups.google.com/d/optout .