Martin P. Hellwig wrote:
On 08/13/10 10:46, Peter Otten wrote:
Martin P. Hellwig wrote:

SPOILER ALTER: THIS POST CONTAINS A POSSIBLE SOLUTION
No it wasn't :-)

which should be 1*9 + 2*6

What am I missing?


Aah interesting, 21 % 9 returns 3 instead of 12, which makes sense of course. I guess the algorithm has to be adapted in a way that if the value is bigger or equal twice the size of the modulo value you need to iterate over it, something like:
for minus_multiplier in range(1, int(number, modulo_value)+2):
    number = number - (modulo_value * minus_multiplier)
    do the rest of the loop

Probably another ten lines or so to make it working as it should

I don't understand what you're trying to do. My solution would be:

def can_buy(nuggets):
    for packs_20 in range(nuggets // 20, -1, -1):
        remaining_20 = nuggets - 20 * packs_20
        for packs_9 in range(remaining_20 // 9, -1, -1):
            remaining_9 = remaining_20 - 9 * packs_9
            if remaining_9 % 6 == 0:
                packs_6 = remaining_9 // 6
                return [packs_6, packs_9, packs_20]
    return []
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to