I was able to write with one liner
# -*- coding: utf-8 -*-
'''
If we list all the natural numbers below 10 that are multiples of 3 or 5,
we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
'''
import doctest
from functools import reduce
def problem(i,j):
    '''
    >>> problem(1,10)
    23
    '''
    return reduce(lambda x,y:x+y, [i for i in range(i,j) if not i % 5 or not i % 3])
if __name__ == "__main__":
    doctest.testmod()
    print(problem(1,1000))
        Recommended Posts