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

Reply via email to