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 numberyou 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
