looping through possible combinations of McNuggets packs of 6, 9 and 20
Emile van Sebille
emile at fenx.com
Sun Aug 15 17:58:56 CEST 2010
On 8/15/2010 8:44 AM Baba said...
> Hi John,
>
> Thanks for your submission! I've improved a lot and everone's help so
> far has been thrilling and is very good for my self-study
> motivation :)
>
> ok so i think i'm clear on how to approach this problem and on how to
> write basic but clean Python code to solve it.
>
> The next step is to generalise this code so that other pack quantities
> could be tested: "generalize this idea to work with any size packages
> of McNuggets, not just 6, 9, and 20. For simplicity, however, we will
> assume that nuggets are provided in three different sized packages"
>
> I thought this should be relatively straightforward and it does work
> if i test it for the values 6,9&20 but if i test for 2,3,4 i would
> expect the result to be 1 but it returns nothing
>
Because can_buy still uses denominators 6,9&20 - try packages[0],[1]&[2]
Emile
> def can_buy(n_nuggets,packages):
> for a in range (0,n_nuggets/6+1):
> for b in range (0,n_nuggets/9+1):
> for c in range (0,n_nuggets/20+1):
> #print "trying for %d: %d %d %d" % (n_nuggets,a,b,c)
> if packages[0]*a+packages[1]*b
> +packages[2]*c==n_nuggets:
> return True
> return False
>
> def diophantine_nuggets(x,y,z):
> cbc=0 #cbc=can_buy counter
> packages =[x,y,z]
> for n_nuggets in range(50):
> result=can_buy(n_nuggets,packages)
> if result:
> cbc+=1
> else:
> cbc=0
> if cbc==6:
> solution=n_nuggets-6
> print "Largest number of McNuggets that cannot be bought in
> exact quantity: %d" %(solution)
>
> diophantine_nuggets(2,3,4)
More information about the Python-list
mailing list