Skip to content

Instantly share code, notes, and snippets.

@raeq
raeq / fibonacci.py
Created September 5, 2020 11:34
Fast Doubling Iterative
def fast_doubling_fibonacci_iterative(n):
"""
Args:
n ():
Returns:
>>> fast_doubling_fibonacci_iterative(80)
23416728348467685
>>> fast_doubling_fibonacci_iterative(800)
@raeq
raeq / fibonacci.py
Created September 5, 2020 11:46
Fast Doubling Iterative
def fast_doubling_fibonacci_iterative(n):
"""
Args:
n ():
Returns:
>>> fast_doubling_fibonacci_iterative(80)
23416728348467685
>>> fast_doubling_fibonacci_iterative(800)
@raeq
raeq / fibonacci.py
Created September 5, 2020 14:28
Create timings
from timeit import *
def collect_results():
results = []
for i in range(1000, 2000001, 100000):
f = "fast_doubling_fibonacci_recursive"
t1 = Timer(f"{f}({i})",
f"from __main__ import {f}")
st1 = t1.timeit(number=10)
@raeq
raeq / fibonacci.py
Created September 5, 2020 14:39
Timing data
def collect_results():
results = []
for i in range(1000, 2000001, 100000):
f = "fast_doubling_fibonacci_recursive"
t1 = Timer(f"{f}({i})",
f"from __main__ import {f}")
st1 = t1.timeit(number=10)
f = "matrix_fibonacci"
t2 = Timer(f"{f}({i})",
@raeq
raeq / fibonacci.py
Created September 5, 2020 14:40
Timing code
import numpy as np
import matplotlib.pyplot as plt
from timeit import *
def collect_results():
results = []
for i in range(1000, 2000001, 100000):
f = "fast_doubling_fibonacci_recursive"
t1 = Timer(f"{f}({i})",
f"from __main__ import {f}")
@raeq
raeq / example_01.py
Created May 2, 2021 10:57
Square and Circle
import math
class Square:
length: int
def __init__(self, length=0):
self.length = length
@raeq
raeq / example_02.py
Created May 2, 2021 11:04
Calculate the area of circles or squares.
def area(any_object):
if isinstance(any_object, Circle):
return math.pi * (math.pow(any_object.radius, 2))
elif isinstance(any_object, Square):
return (math.pow(any_object.length, 2))
@raeq
raeq / example_03.py
Created May 2, 2021 11:06
Driver code
my_circle = Circle(6)
my_square = Square(12)
print(area(my_circle))
print(area(my_square))
@raeq
raeq / example_04.py
Created May 2, 2021 11:08
Full code.
import math
class Square:
length: int
def __init__(self, length=0):
self.length = length
@raeq
raeq / with_overloading.py
Last active May 2, 2021 12:23
A simple overload using singledispatch
from functools import singledispatch
@singledispatch
def area(any_object):
raise NotImplementedError
@area.register(Circle)
def _(any_object):
return math.pi * (math.pow(any_object.radius, 2))