Login  Register

Re: Permutations pour une collection

Posted by cedreek on Jun 12, 2014; 2:23pm
URL: https://forum.world.st/Permutations-pour-une-collection-tp4761332p4762818.html

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

Le 2 juin 2014 à 19:48, Serge Stinckwich <[hidden email]> a écrit :

> Il y a cet exemple en commentaire :
>
> 'abcde' combinations: 3 atATimeDo: [:each | Transcript cr; show: each
> printString]
>
>
>
> 2014-06-02 18:59 GMT+02:00 Sebastien Audier <[hidden email]>:
>> 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,
>>
>>
>> Le 2 juin 2014 18:16, Serge Stinckwich <[hidden email]> a écrit
>> :
>>>
>>> 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 .
>>
>>
>>
>>
>> --
>> 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 .

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