On Tue, 5 Jan 2010, Randal L. Schwartz wrote:
"Levente" == Levente Uzonyi <leves@elte.hu> writes:
Levente> 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.
Levente> I guess you are looking for this: Levente> allPairsFromCollectionDo := [ :collection :block | Levente> | o | Levente> o := OrderedCollection newFrom: collection. Levente> o size timesRepeat: [ Levente> o with: collection do: block. Levente> o add: o removeFirst ] ].
Or more simply:
aCollection do: [:x | aCollection do: [:y | "use x and y"]].
Nice, it's funny that I didn't find this simple solution. And it's O(n^2) instead of O(n^3) like mine (because OrderedCollection is implemented such a dumb way). Levente
Unless I'm misunderstanding the problem.
Which is neither combinations nor permutations, but so far is the only thing that fits all the bizarre conditions.
-- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 <merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/> Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc. See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion