looping through possible combinations of McNuggets packs of 6, 9 and 20

Peter Otten __peter__ at web.de
Thu Aug 12 21:02:40 CEST 2010


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.

Peter



More information about the Python-list mailing list