SPOILER ALTER: THIS POST CONTAINS A POSSIBLE SOLUTION

On 08/12/10 21:41, News123 wrote:

On 08/12/2010 09:56 PM, Martin P. Hellwig wrote:
On 08/11/10 21:14, Baba wrote:
<cut>

How about rephrasing that question in your mind first, i.e.:

For every number that is one higher then the previous one*:
     If this number is dividable by:
         6 or 9 or 20 or any combination of 6, 9, 20
             than this number _can_ be bought in an exact number
     else
         print this number


you are allowed to mix.
15 is neither divisable by 6 nor by nine, but 9 + 6 = 15

I was aware of that, thats whhy I wrote:
"or any combination of 6, 9, 20"


I guess, trying to find the result with divisions and remainders is
overly complicated.

Python 2.6.4 (r264:75706, Jul  1 2010, 12:52:41)
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd8
Type "help", "copyright", "credits" or "license" for more information.
>>> MODULO_COMBINATIONS = [[20], [9], [6],
...                        [20, 9], [20, 6], [9, 20],
...                        [9, 6], [6, 20], [6, 9],
...                        [20, 9, 6], [20, 6, 9], [9, 20, 6],
...                        [9, 6, 20], [6, 20, 9], [6, 9, 20]]
>>>
>>> def apply_combinations_on(number):
...     tmp = list()
...     for combination in MODULO_COMBINATIONS:
...         remainder = number
...         for modulo_value in combination:
...             if remainder == 0:
...                 remainder = None
...                 break
...
...             result = remainder % modulo_value
...
...             if result == remainder :
...                 remainder = None
...                 break
...
...             remainder = result
...
...         if remainder == 0:
...             tmp.append(str(combination))
...     return(tmp)
...
>>> print(apply_combinations_on(15))
['[9, 6]']
>>>

What is so over complicated about it?

--
mph

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to