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