Permutations pour une collection

15 views
Skip to first unread message

Sebastien Audier

unread,
Jun 2, 2014, 11:54:09 AM6/2/14
to smallt...@googlegroups.com
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

Serge Stinckwich

unread,
Jun 2, 2014, 12:17:40 PM6/2/14
to smallt...@googlegroups.com
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.
> --
> 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
> smalltalk-fr...@googlegroups.com.
> 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/

Sebastien Audier

unread,
Jun 2, 2014, 12:59:32 PM6/2/14
to smallt...@googlegroups.com
Ok merci Serge, j'avais bien vu cette méthode, mais je n'ai peut-être saisi au premier coup d'oeil son bon comportement.

Je vais re-itérer mes essais.

Encore merci,


Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Serge Stinckwich

unread,
Jun 2, 2014, 1:49:30 PM6/2/14
to smallt...@googlegroups.com
Il y a cet exemple en commentaire :

'abcde' combinations: 3 atATimeDo: [:each | Transcript cr; show: each
printString]

Cédrick Béler

unread,
Jun 12, 2014, 10:24:02 AM6/12/14
to smallt...@googlegroups.com
ca me rappelle une ancienne discussion puisque j’avais aussi eu cette problématique en devant trouver tous les sous ensemble d’un ensemble…

Peut-être tu y trouveras des infos intéressantes (même si le pb n’est pas tout à fait le même)

http://forum.world.st/Another-extension-proposal-gt-subsets-td107678.html

@+

Cédrick
Reply all
Reply to author
Forward
0 new messages