|
Re: Fastest way to list combinations [message #80811 is a reply to message #80810] |
Sun, 15 July 2012 08:23  |
Jeremy Bailin
Messages: 618 Registered: April 2008
|
Senior Member |
|
|
On 7/13/12 6:21 PM, antar3s86@gmail.com wrote:
> Hi
>
> I have to solve a problem which includes listing all possible combinations to form a triplet for a given number of objects.
>
> Say you have the objects:
> a,b,c,d,e, so in total 5 which gives you 5!/(2!*3!) = 10 possibilities to list them without any doubles:
>
> abc
> abd
> abe
> acd
> ace
> ade
> bcd
> bce
> bde
> cde
>
> I have solved this problem for any number (well up to some computer limit anyway) in three FOR loops but for large numbers this is rather small...
>
> can you think of a better way than using loops to list all these possibilites?
>
> thanks!!
> :)
You could try COMBIGEN in JBIU.
http://astroconst.org/jbiu/jbiu-doc/math/combigen.html
-Jeremy.
|
|
|
Re: Fastest way to list combinations [message #80820 is a reply to message #80811] |
Fri, 13 July 2012 14:28  |
Paul Van Delst[1]
Messages: 1157 Registered: April 2002
|
Senior Member |
|
|
Hello,
On 07/13/12 16:51, antar3s86@gmail.com wrote:
> Hi
>
> I have to solve a problem which includes listing all possible combinations to form a triplet for a given number of objects.
>
> Say you have the objects:
> a,b,c,d,e, so in total 5 which gives you 5!/(2!*3!) = 10 possibilities to list them without any doubles:
>
> abc
> abd
> abe
> acd
> ace
> ade
> bcd
> bce
> bde
> cde
>
> I have solved this problem for any number (well up to some computer limit anyway) in three FOR loops but for large numbers this is rather small...
>
> can you think of a better way than using loops to list all these possibilites?
>
> thanks!!
> :)
Dunno if it's the fastest and/or best way, but have a look at:
http://ftp.emc.ncep.noaa.gov/jcsda/CRTM/idl/
There should be three files.
If you look at the test_combination.pro you will see how to use it.
For example, getting a list of all the combos of three letters from 26:
IDL> t=systime(1) & Test_Combination, 26, 3 & print, systime(1)-t
...lots and lots of output listing the combinations....
22 23 25
22 24 25
23 24 25
Total combinations: 2600
0.032832861
IDL>
You could use this sort of output to generate index arrays to extract your combination of letters from string arrays.
Anyhoo, hope they're useful.
cheers,
paulv
p.s. There may be a native solution for this as well. I wrote those routines a while back... perhaps even as an
exercise. Can't recall.
|
|
|
Re: Fastest way to list combinations [message #80823 is a reply to message #80820] |
Fri, 13 July 2012 14:01  |
antar3s86
Messages: 8 Registered: June 2012
|
Junior Member |
|
|
On Friday, July 13, 2012 10:51:41 PM UTC+2, (unknown) wrote:
> Hi
>
> I have to solve a problem which includes listing all possible combinations to form a triplet for a given number of objects.
>
> Say you have the objects:
> a,b,c,d,e, so in total 5 which gives you 5!/(2!*3!) = 10 possibilities to list them without any doubles:
>
> abc
> abd
> abe
> acd
> ace
> ade
> bcd
> bce
> bde
> cde
>
> I have solved this problem for any number (well up to some computer limit anyway) in three FOR loops but for large numbers this is rather small...
>
> can you think of a better way than using loops to list all these possibilites?
>
> thanks!!
> :)
Sorry, instead of small it should say slow...stupid autocorrect... ;)
|
|
|