PDA

View Full Version : [SOLVED] From a set of 25 students, produce all possible 3-students combinations



hanzj
January 12th, 2010, 08:17 PM
Hello,

So I have a list of about 25 students that I'm looking at. What I need to do is to produce a list of ALL possible 3-student combination. What's the quickest way to do this?

So for example, let's say the list of students is:


A
B
C
D
.
.
.
.
.
.
Y


I need to produce a list such as the following:


Possibility 1: A, B, C
Possibility 2: A, B, D
Possibility 3: A, B, E
.
.
.
.
Possibility 400: W, X, Y Is there a way I could automate this? Is there a way a computer can help me? I know I can do this manually, but it would be tedious.

Thanks.

Big_astur
January 12th, 2010, 08:52 PM
If u have access to matlab program u can do it easily:

not with letters but with numbers by typing:

nchoosek(1:25,3)

this will give you as result a matrix with 2300 possibilities (as solution for your problem) where each row has a combo, for example:

1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 2 10
1 2 11
1 2 12
1 2 13
1 2 14
1 2 15
1 2 16
1 2 17
1 2 18
.
.
.
.

hanzj
January 12th, 2010, 08:54 PM
big-astur,
i don't have access to matlab. do you? if I pass on to you the short list (it's actually just 19), can You pass on to me the list of combinations? Order is not relevant. In other words, [A, B, C] is the same as [C, B, A]

pythonscript
January 12th, 2010, 09:03 PM
import itertools
iterations = itertools.combinations('ABCD',3)
for name in iterations:
print name



will print out every 3 letter combination (order unimportant) of the string 'ABCD.' If you have a list of names, I can help you work out a python script that will read them in from a file and output every possible combination, using this method.

hanzj
January 12th, 2010, 09:04 PM
pythonscript, thanks. the list is the following:

Australia
Brazil
Canada
China
France
Germany
Indonesia
Korea
Malaysia
Philippines
Singapore
Spain
Switzerland
Taiwan
Uganda
UK
UkrainePlease note that order is NOT important. This means that:
[UK, Ukraine, Uganda] is the same for my purposes as [Uganda, Ukraine, UK]

pythonscript
January 12th, 2010, 09:25 PM
This should be correct, I believe. I came up with 680 combinations; hopefully this is what you're looking for.

143431

143432

Sorry about the extremely messy and backwards python code: my night class is taking an exam, so I'm somewhat distracted.

EDIT: Also, it's self explanatory from the code, but if you use this script again, it reads in from a file ("names.txt") with each name on its own separate line, and outputs to "comb.txt" which I included. Finally, this code is "officially" windows only, because I quickly coded it on a windows machine and left out a few things.

hanzj
January 12th, 2010, 09:26 PM
Thank you so much!!!! Solved