Recently there was a simple puzzle in one of my whatsapp group. It was

if 1 => 8, 2 => 18,

3 => 30, 4 => 44, 5 => 60, then what is 9?

if 1 => 8, 2 => 18,

3 => 30, 4 => 44, 5 => 60, then what is 9?

It was simple to calculate by hand and provide the answer. You can also formulate the above deduction and use it for any number with

6 + (M + (2 x n))

where n is set of integers; 0 < n < N

and M is cumulative sum from previous step with M(initial value) is 0

This problem lends itself well to reduction function and with the given formula it was easy to check it for any integer n. Out of curiosity created a function and was called in Python for-loop for each iteration while monitoring load on CPU and memory tracked. Then I used reduce function with xrange to see the same.

# Python

>>> a = []; M = 0

>>> for n in range(0, 100000000):

... M = 6+M+(2*n)

... a.append(M)

# [ CPU was loaded above 97% with memory usage jumping and ended up killing the process ]

>>> print reduce(lambda x,y: 6+x+(2*y), xrange(0,100000000))

10000000499999994

# with xrange, got the result in less than few seconds though CPU usage jumped above 97% but no discernible change in memory.