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