feat: more statistics + a simple exercise
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from sympy import diff, limit, oo, symbols
|
from sympy import diff, limit, oo, symbols
|
||||||
|
import unittest
|
||||||
|
|
||||||
from modules.math import (
|
from modules.math import (
|
||||||
test_math_module
|
test_math_module
|
||||||
@@ -12,8 +13,8 @@ from modules.statistics import (
|
|||||||
from modules.strings import t_strings
|
from modules.strings import t_strings
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
t_strings()
|
# t_strings()
|
||||||
|
|
||||||
# test_math_module()
|
# test_math_module()
|
||||||
# test_probability_module()
|
# test_probability_module()
|
||||||
test_statistics_module()
|
# test_statistics_module()
|
||||||
|
# test_exercises_module()
|
||||||
|
|||||||
11
src/modules/exercises/essentials.py
Normal file
11
src/modules/exercises/essentials.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
def maximum_subarray_sum(input_array: list[int]):
|
||||||
|
max_sum = input_array[0]
|
||||||
|
subarray = [input_array[0]]
|
||||||
|
for origin in range(0, len(input_array)):
|
||||||
|
for end in range(origin + 1, len(input_array) + 1):
|
||||||
|
temp_subarray = input_array[origin:end]
|
||||||
|
temp_sum = sum(temp_subarray)
|
||||||
|
if (temp_sum > max_sum):
|
||||||
|
max_sum = temp_sum
|
||||||
|
subarray = temp_subarray
|
||||||
|
return [max_sum, subarray]
|
||||||
@@ -1,2 +1,39 @@
|
|||||||
|
from math import sqrt, pi, e
|
||||||
|
|
||||||
|
def population_variance(difference_list, mean):
|
||||||
|
summatory = 0.0
|
||||||
|
for diff in difference_list:
|
||||||
|
summatory += (diff - mean) ** 2
|
||||||
|
return summatory / len(difference_list)
|
||||||
|
|
||||||
|
def population_variance_inline(difference_list):
|
||||||
|
return sum((v - (sum(difference_list) / len(difference_list))) ** 2 for v in difference_list) / len(difference_list)
|
||||||
|
|
||||||
|
def sample_variance(difference_list):
|
||||||
|
mean = sum(difference_list) / len(difference_list)
|
||||||
|
return sum((diff - mean) ** 2 for diff in difference_list) / (len(difference_list) - 1)
|
||||||
|
|
||||||
|
def population_standard_deviation(difference_list):
|
||||||
|
return sqrt(population_variance_inline(difference_list))
|
||||||
|
|
||||||
|
def sample_standard_deviation(difference_list):
|
||||||
|
return sqrt(sample_variance(difference_list))
|
||||||
|
|
||||||
|
def standard_deviation(difference_list, is_sample):
|
||||||
|
return sample_standard_deviation(difference_list) if is_sample else population_standard_deviation(difference_list)
|
||||||
|
|
||||||
|
# PDF generates the Normal Distribution (symetric arround the mean)
|
||||||
|
def probability_density_function(x: float, mean: float, standard_deviation: float):
|
||||||
|
return (1 / (standard_deviation * sqrt(2 * pi))) * (e ** ((-1/2) * (x - (mean ** 2)) / standard_deviation))
|
||||||
|
|
||||||
|
|
||||||
def test_statistics_module():
|
def test_statistics_module():
|
||||||
print("=== Statistics module ===")
|
print("=== Statistics module ===")
|
||||||
|
differences = [ -6.571, -5.571, -1.571, 0.429, 2.429, 3.429, 7.429 ]
|
||||||
|
print("The population variance is", population_variance(differences, sum(differences) / len(differences)), population_variance_inline(differences))
|
||||||
|
print("The standard deviation is", standard_deviation(differences, False))
|
||||||
|
sample = differences.copy()
|
||||||
|
del sample[3]
|
||||||
|
del sample[1]
|
||||||
|
print("The sample variance for a population is", sample_variance(sample))
|
||||||
|
print("The standard deviation for a population is", standard_deviation(sample, True))
|
||||||
|
|||||||
19
tests/test_essentials.py
Normal file
19
tests/test_essentials.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from src.modules.exercises.essentials import *
|
||||||
|
|
||||||
|
def test_subarray_sum():
|
||||||
|
input = [2,3,-8,7,-1,2,3]
|
||||||
|
result = maximum_subarray_sum(input)
|
||||||
|
expected = [11, [7, -1, 2, 3]]
|
||||||
|
assert result == expected
|
||||||
|
input = [-2,-4]
|
||||||
|
result = maximum_subarray_sum(input)
|
||||||
|
expected = [-2, [-2]]
|
||||||
|
assert result == expected
|
||||||
|
input = [5,4,1,7,8]
|
||||||
|
result = maximum_subarray_sum(input)
|
||||||
|
expected = [25, [5,4,1,7,8]]
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user