[PyAR2] Programming Challenge III - My first cut
Greg Lindstrom
gslindstrom at gmail.com
Mon Nov 17 20:20:19 CET 2008
OK. I played around for about 15 minutes...
import random
buttons = ['1','2','3','4','5']
def choose_button():
'''Select a button from the list and then remove it from the list'''
global buttons
button = random.choice(buttons)
buttons.pop(buttons.index(button))
return button
while len(buttons) > 0:
if len(buttons)>1:
number_of_buttons = random.randint(1, 2)
if number_of_buttons == 1:
print choose_button()
else:
print '%s, %s' % (choose_button(), choose_button())
else:
print buttons[0]
break
Also, I think there are 450 permutations. IIRC, (5 choose 2) = 10 and (3
choose 2) = 3
For a combination with all single buttons there are 5! or 120 combinations
For a combination with with 1 "double" and 4 "singles": (x,y) is "x choose
y)
2 1 1 1 = (5,2) x 3 x 2 x 1 = 10 x 3 x 2 x 1 = 60
1 2 1 1 = 5 x (4,2) x 2 x 1 = 5 x 6 x 2 x 1 = 60
1 1 2 1 = 5 x 4 x (3,2) x 1 = 5 x 4 x 3 x 1 = 60
1 1 1 2 = 5 x 4 x 3 x (2,2) = 5 x 4 x 3 x 1 = 60
There are 240 combinations with 1 set being "doubled"
With 2 sets being doubled
2 2 1 = (5,2) x (3,2) x 1 = 10 x 3 x 1 = 30
2 1 2 = (5,2) x 3 x (2,2) = 10 x 3 x 1 = 30
1 2 2 = 5 x (4,2) x (2,2) = 5 x 6 x 1 = 30
With 2 sets doubles there are 90 combinations.
So, 120 + 240 + 90 = 450 combinations.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/mailman/private/pyar2/attachments/20081117/ac1e90ec/attachment.htm>
More information about the PyAR2
mailing list