mirror of
https://github.com/jlengrand/project_euler.git
synced 2026-03-10 08:41:20 +00:00
Prepares some others. More than 35 problem solved ! Signed-off-by: Julien Lengrand-Lambert <julien@lengrand.fr>
43 lines
1008 B
Python
43 lines
1008 B
Python
#!/usr/bin/env python
|
|
'''
|
|
Created on 17 feb. 2012
|
|
|
|
@author: Julien Lengrand-Lambert
|
|
@contact: julien@lengrand.fr
|
|
'''
|
|
import timeit
|
|
from memoize import memoize
|
|
from Memoized import Memoized
|
|
|
|
def fact1(value):
|
|
"""
|
|
Returns value!
|
|
"""
|
|
if value == 0:
|
|
return 1
|
|
return value * fact1(value - 1)
|
|
|
|
@memoize
|
|
def fact2(value):
|
|
"""
|
|
Returns value!, using memoization
|
|
"""
|
|
if value == 0:
|
|
return 1
|
|
return value * fact2(value - 1)
|
|
|
|
@Memoized
|
|
def fact3(value):
|
|
"""
|
|
Returns value!, using memoization
|
|
"""
|
|
if value == 0:
|
|
return 1
|
|
return value * fact3(value - 1)
|
|
|
|
if __name__ == '__main__':
|
|
for i in range(3):
|
|
t1 = timeit.Timer("fact1(150)", "from __main__ import fact1")
|
|
t2 = timeit.Timer("fact2(150)", "from __main__ import fact2")
|
|
t3 = timeit.Timer("fact3(150)", "from __main__ import fact3")
|
|
print t1.timeit(1), t2.timeit(1), t3.timeit(1) |