On Aug 12, 2010, at 9:02 PM, Peter Otten wrote:
Baba wrote:
Thank You for helping me out. Indeed i am not looking for the code
but
rather for hints that direct my reasoning as well as hints as to how
to write basic programs like this.
You have broken down the approach into 2 parts. I have tried to solve
part 1 but i'm not quite there yet. Here's my code:
def can_buy(n_nuggets):
for a in range (1,n_nuggets):
for b in range (1,n_nuggets):
for c in range (1,n_nuggets):
if 6*a+9*b+20*c==n_nuggets:
#print a,b,c,'n_nuggets=',n_nuggets
return True
else:
return False
can_buy(55)
as you can see i am trying to loop through all combinations of values
bewtween 1 and n_nuggets and when the equation resolves it should
return True, else it should return False.
I was hoping that when i then call my function and ask it to test a
value nothing happens. What is wrong? My syntax? My semantic? Both?
First, the function gives up too early; it should only return False
when all
combinations of a, b, c (technically: the product of the ranges)
have been
tried.
Second, can_buy(0) should return True, but the solution 0*6 + 0*9 +
0*20 is
never tried; fix your ranges accordingly.
Moreover: a, b and c can range over n_nuggets/6, n_nuggets/9 and
n_nuggets/20 respectively. This will work, but does too much work.
Cheers, Roald
--
http://mail.python.org/mailman/listinfo/python-list