__author__ = 'artemr'

# Even Fibonacci numbers
# Problem 2
# Each new term in the Fibonacci sequence is generated by adding the previous two terms.
# By starting with 1 and 2, the first 10 terms will be:
#
# 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
#
# By considering the terms in the Fibonacci sequence whose values do not exceed four million,
# find the sum of the even-valued terms.


def get_fibonacci_number(previous):
    while True:
        previous = [previous[-1], sum(previous)]
        yield previous


def euler_2(end):
    res = 0
    for fib, fibLast in get_fibonacci_number([1, 1]):
        if fibLast >= end:
            break
        if any(str(fibLast).endswith(x) for x in ('0', '2', '4', '6', '8')):
            res += fibLast
    return res


print euler_2(4000000)