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

Roald de Vries downaold at gmail.com
Thu Aug 12 15:42:59 EDT 2010


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




More information about the Python-list mailing list