On Tue, 5 Jan 2010, John Toohey wrote:

> But this doesn't get 1-1, 2-2 or 3-3. I had tried something like that use
> #reverse on each combination, but #combinations does not generate
> -duplicates- from the number sequences.

I guess you are looking for this:
allPairsFromCollectionDo := [ :collection :block |
        | o |
        o := OrderedCollection newFrom: collection.
        o size timesRepeat: [
                o with: collection do: block.
                o add: o removeFirst ] ].

Transcript open.
allPairsFromCollectionDo value: #(1 2 3 4) value: [ :a :b |
        Transcript print: { a. b }; cr ].
Transcript flush


Levente

>
> On Tue, Jan 5, 2010 at 12:16, Henrik Johansen
> <henrik.s.johan...@veloxit.no>wrote:
>
>> On Jan 5, 2010, at 5:19 32PM, John Toohey wrote:
>>
>>> Hi,
>>> I'm trying to generate the permutations of a sequence of numbers. I've
>> found # permutationsDo: aBlock, but this generated the permutation of the
>> entire sequence. I want to do it in groups of 2. The #combinations:
>> anInteger atATimeDo: aBlock method does what I need for combinations, but I
>> cannot find the equivalent for permutations. Does something like this exist
>> in the standard library, or in an external package.
>>>
>>> --
>>> -JT
>>
>> How about:
>> #(1 2 3 4) combinations: 2 atATimeDo: [:array | array permutationsDo:
>> [:each | Transcript show: each printString; cr]] ?
>>
>> Cheers,
>> Henry
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project@lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> -- 
> -JT
>

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to