Skip to content

Commit a3ecb45

Browse files
authored
Add files via upload
1 parent 375f82f commit a3ecb45

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1554
-0
lines changed

dynamicprogramming/__init__.py

Whitespace-only changes.

dynamicprogramming/fibonacci_dp.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
def fibonacci(nth: int) -> int:
2+
"""
3+
>>> fibonacci(0)
4+
0
5+
>>> fibonacci(1)
6+
1
7+
>>> fibonacci(2)
8+
1
9+
>>> fibonacci(9)
10+
34
11+
"""
12+
fibs = [0] * (nth + 2)
13+
fibs[0] = 0
14+
fibs[1] = 1
15+
16+
for i in range(2, nth + 1):
17+
fibs[i] = fibs[i - 1] + fibs[i - 2]
18+
return fibs[nth]
19+
20+
21+
if __name__ == "__main__":
22+
from doctest import testmod
23+
24+
testmod()

maths/__init__.py

Whitespace-only changes.

maths/absolute.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""
2+
https://en.wikipedia.org/wiki/Absolute_value
3+
"""
4+
5+
6+
def absolute(number):
7+
"""Return the absolute value of the argument.
8+
>>> absolute(-3.14) == abs(-3.14) and absolute(3.14) == abs(3.14)
9+
True
10+
>>> absolute(0) == abs(0)
11+
True
12+
>>> absolute(50) == abs(50)
13+
True
14+
>>> import random
15+
>>> all(absolute(number) == abs(number) for number in random.sample(range(-50, 50), 100))
16+
True
17+
"""
18+
return -number if number < 0 else number
19+
20+
21+
if __name__ == "__main__":
22+
from doctest import testmod
23+
24+
testmod()

maths/absolute_max.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def absolute_max(array):
2+
"""
3+
Returns absolute max value of a array.
4+
:param array: the array.
5+
:return: absolute max value
6+
7+
>>> absolute_max([1, -2, 5, -8, 7])
8+
-8
9+
>>> absolute_max([1, -2, 3, -4, 5])
10+
5
11+
"""
12+
return max(array, key=abs)
13+
14+
15+
if __name__ == "__main__":
16+
from doctest import testmod
17+
18+
testmod()

maths/absolute_min.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def absolute_min(array):
2+
"""
3+
Returns absolute min value of a array.
4+
:param array: the array.
5+
:return: absolute min value
6+
7+
>>> absolute_min([1, -2, 5, -8, 7])
8+
1
9+
>>> absolute_min([1, -2, 3, -4, 5])
10+
1
11+
"""
12+
return min(array, key=abs)
13+
14+
15+
if __name__ == "__main__":
16+
from doctest import testmod
17+
18+
testmod()

maths/addition.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
def add(first_number, second_number):
2+
"""
3+
>>> add(1, 2)
4+
3
5+
>>> add(1.1, 2.2)
6+
3.3000000000000003
7+
>>> add(-1.1, 1.1)
8+
0.0
9+
"""
10+
return first_number + second_number
11+
12+
13+
if __name__ == "if __name__ == ''":
14+
from doctest import testmod
15+
16+
testmod()

maths/aliquot_sum.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"""
2+
https://en.wikipedia.org/wiki/Aliquot_sum
3+
"""
4+
5+
6+
def aliquot_sum(number: int) -> int:
7+
"""
8+
Calculate aliquot sum of a number.
9+
:param number: the number.
10+
:return: aliquot sum of given number.
11+
>>> aliquot_sum(1)
12+
0
13+
>>> aliquot_sum(2)
14+
1
15+
>>> aliquot_sum(3)
16+
1
17+
>>> aliquot_sum(15)
18+
9
19+
>>> aliquot_sum(21)
20+
11
21+
>>> aliquot_sum(0)
22+
Traceback (most recent call last):
23+
...
24+
ValueError: number must be positive
25+
>>> aliquot_sum(-10)
26+
Traceback (most recent call last):
27+
...
28+
ValueError: number must be positive
29+
>>> aliquot_sum(10.50)
30+
Traceback (most recent call last):
31+
...
32+
ValueError: number must be positive
33+
"""
34+
if number <= 0 or not isinstance(number, int):
35+
raise ValueError("number must be positive")
36+
return sum(
37+
divisor for divisor in range(1, number // 2 + 1) if number % divisor == 0
38+
)
39+
40+
41+
if __name__ == "__main__":
42+
from doctest import testmod
43+
44+
testmod()

maths/area.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
def circle_area(radius: float) -> float:
2+
"""
3+
>>> circle_area(10)
4+
314.1592653589793
5+
>>> circle_area(0)
6+
0.0
7+
"""
8+
import math
9+
10+
return math.pi * radius * radius
11+
12+
13+
def rectangle_area(length: float, width: float) -> float:
14+
"""
15+
>>> rectangle_area(3, 4)
16+
12
17+
>>> rectangle_area(3, 0)
18+
0
19+
>>> rectangle_area(0, 4)
20+
0
21+
"""
22+
return length * width
23+
24+
25+
def square_area(length: float) -> float:
26+
"""
27+
>>> square_area(4)
28+
16
29+
>>> square_area(0)
30+
0
31+
"""
32+
return length ** 2
33+
34+
35+
def triangle_area(length: float, height: float) -> float:
36+
"""
37+
>>> triangle_area(3, 4)
38+
6.0
39+
>>> triangle_area(3, 0)
40+
0.0
41+
>>> triangle_area(0, 4)
42+
0.0
43+
"""
44+
return length * height / 2
45+
46+
47+
if __name__ == "__main__":
48+
from doctest import testmod
49+
50+
testmod()

maths/average.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
https://en.wikipedia.org/wiki/Average
3+
"""
4+
5+
6+
def average(numbers):
7+
"""
8+
Calculate average of a list numbers.
9+
:param numbers: the number to be calculated.
10+
:return: average of a list number.
11+
12+
>>> average([1, 2, 2, 3, 4, 7, 9])
13+
4.0
14+
>>> average(range(1, 11))
15+
5.5
16+
>>> average(range(1, 101))
17+
50.5
18+
"""
19+
return sum(numbers) / len(numbers)
20+
21+
22+
if __name__ == "__main__":
23+
from doctest import testmod
24+
25+
testmod()

0 commit comments

Comments
 (0)