Skip to content

How to write a Chain Adding Function in Python

The challenge

We want to create a function that will add numbers together when called in succession.

add(1)(2); # returns 3
Code language: Python (python)

We also want to be able to continue to add numbers to our chain.

add(1)(2)(3) # 6 add(1)(2)(3)(4) # 10 add(1)(2)(3)(4)(5) # 15
Code language: Python (python)

and so on.

A single call should return the number passed in.

add(1); # 1
Code language: Python (python)

We should be able to store the returned values and reuse them.

addTwo = add(2) addTwo # 2 addTwo + 5 # 7 addTwo(3) # 5 addTwo(3)(5) # 10
Code language: Python (python)

We can assume any number being passed in will be valid whole number.

Test cases

test.assert_equals(add(1), 1) test.assert_equals(add(1)(2), 3) test.assert_equals(add(1)(2)(3), 6)
Code language: Python (python)

How to write the code

class add(int): def __call__(self, n): return add(self + n)
Code language: Python (python)

See also  Determining Integer Depth in Python
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x