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

Baba raoulbia at gmail.com
Sun Aug 15 17:38:03 CEST 2010


Hi John,

Thanks for your submission! I've improved a lot and everone's help so
far has been thrilling amd 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

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