looping through possible combinations of McNuggets packs of 6, 9 and 20
News123
news1234 at free.fr
Fri Aug 13 22:22:44 CEST 2010
Roald,
What would your solution be if you weren't allowed to 'know'
that 120 is an upper limit.
Assume you were only allowed to 'know', that you won't find
any other amount, which can't be bought A AOON A
you found six solutions in a row?
I have a rather straightforward solution trying from 0 nuggets on
until I found six 'hits' in a row, but would be interested about other
idioms.
On 08/13/2010 12:38 PM, Roald de Vries wrote:
> On Aug 13, 2010, at 12:25 PM, Roald de Vries wrote:
>> My previous algorithm was more efficient, but for those who like
>> one-liners:
>>
>> [x for x in range(120) if any(20*a+9*b+6*c == x for a in range(x/20)
>> for b in range(x/9) for c in range(x/6))][-1]
>
> OK, I did some real testing now, and there's some small error in the
> above. All solutions for all x's are given by:
>
> [(x, a, b, c) for x in range(120) for a in range(x/20+1) for b in
> range(x/9+1) for c in range(x/6+1) if x == a*20+b*9+c*6]
>
> ... and all non-solutions by:
>
> [x for x in range(120) if not any(x == a*20+b*9+c*6 for a in
> range(x/20+1) for b in range(x/9+1) for c in range(x/6+1))]
>
> Cheers, Roald
More information about the Python-list
mailing list