feat: more statistics + a simple exercise
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from sympy import diff, limit, oo, symbols
|
||||
import unittest
|
||||
|
||||
from modules.math import (
|
||||
test_math_module
|
||||
@@ -12,8 +13,8 @@ from modules.statistics import (
|
||||
from modules.strings import t_strings
|
||||
|
||||
if __name__=="__main__":
|
||||
t_strings()
|
||||
|
||||
# t_strings()
|
||||
# test_math_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():
|
||||
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