In [9]:
from euler import timer

def p009():
    return (
        [a*b*(1000-a-b)
         for a in range(1,999) 
         for b in range(a, 1000-a)
         if (a ** 2 + b ** 2 == (1000-a-b) ** 2)][0])

timer(p009)


result: 31875000 (0.11s)

In [11]:
from euler import timer, Seq

def p009():
    return(
        range(1,999)
        >> Seq.collect(lambda a: range(a, 1000-a) 
                                 >> Seq.filter(lambda b: (a**2 + b**2 == (1000-a-b)**2)) 
                                 >> Seq.map(lambda b: a*b*(1000-a-b)))
        >> Seq.head)

timer(p009)


result: 31875000 (0.08s)

In [12]:
from euler import Seq, timer

def p004():
    return (
        [a*b for a in range(100, 1000)
         for b in range(a, 1000)
         if str(a*b)[::-1] == str(a*b)]
        >> Seq.max)

timer(p004)


result: 906609 (0.33s)

In [13]:
from euler import Seq, timer

def p004():
    return (
        range(100, 1000)
        >> Seq.collect(lambda a: range(a, 1000)
                                 >> Seq.filter(lambda b: str(a*b)[::-1] == str(a*b))
                                 >> Seq.map(lambda b: a*b))
        >> Seq.max)

timer(p004)


result: 906609 (0.34s)

In [ ]: