added local maxima function #5
5 changed files with 68 additions and 4 deletions
|
@ -1,6 +1,11 @@
|
||||||
|
from first import times_3
|
||||||
|
|
||||||
def test_times_3_integer():
|
def test_times_3_integer():
|
||||||
pass
|
result = times_3([1])
|
||||||
|
assert result == [1, 1, 1]
|
||||||
|
|
||||||
|
|
||||||
def test_times_3_string():
|
def test_times_3_string():
|
||||||
pass
|
result = times_3([1])
|
||||||
|
assert result == [2]
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,18 @@ def find_maxima(x):
|
||||||
Input arguments:
|
Input arguments:
|
||||||
x -- 1D list of real numbers
|
x -- 1D list of real numbers
|
||||||
|
|
||||||
|
|
||||||
Output:
|
Output:
|
||||||
idx -- list of indices of the local maxima in x
|
idx -- list of indices of the local maxima in x
|
||||||
"""
|
"""
|
||||||
return []
|
maxima = []
|
||||||
|
for index in range(len(x)-2):
|
||||||
|
if x[index+1] > x[index] and x[index +1] > x[index+2]:
|
||||||
|
maxima.append(index+1)
|
||||||
|
|
||||||
|
return maxima
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
x = [1, 2, 3]
|
x = [1, 2, 2, 1]
|
||||||
print(find_maxima(x))
|
print(find_maxima(x))
|
||||||
|
|
41
hands_on/local_maxima/test_local_maxima.py
Normal file
41
hands_on/local_maxima/test_local_maxima.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
from local_maxima import find_maxima
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def test_local_maxima_empty():
|
||||||
|
value = []
|
||||||
|
expected = []
|
||||||
|
|
||||||
|
result = find_maxima(value)
|
||||||
|
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_local_maxima_plateau():
|
||||||
|
value = [1, 2, 2, 1]
|
||||||
|
expected = []
|
||||||
|
|
||||||
|
result = find_maxima(value)
|
||||||
|
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
def test_local_maxima_array1():
|
||||||
|
value = [1, 3, 5, 2, 1]
|
||||||
|
expected = [2]
|
||||||
|
|
||||||
|
result = find_maxima(value)
|
||||||
|
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_local_maxima_array2():
|
||||||
|
value = [5, 4, 4, 5]
|
||||||
|
expected = []
|
||||||
|
|
||||||
|
result = find_maxima(value)
|
||||||
|
|
||||||
|
assert result == expected
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
# Your code goes here
|
# Your code goes here
|
||||||
|
def f(x, r):
|
||||||
|
return x*r*(1 -x)
|
|
@ -18,6 +18,16 @@ def test_f_corner_cases():
|
||||||
# x=0.1, r=2.2 => f(x, r)=0.198
|
# x=0.1, r=2.2 => f(x, r)=0.198
|
||||||
# x=0.2, r=3.4 => f(x, r)=0.544
|
# x=0.2, r=3.4 => f(x, r)=0.544
|
||||||
# x=0.5, r=2 => f(x, r)=0.5
|
# x=0.5, r=2 => f(x, r)=0.5
|
||||||
|
def test_f_generic_cases():
|
||||||
|
# Test cases are (x, r, expected)
|
||||||
|
cases = [
|
||||||
|
(0.1, 2.2, 0.198),
|
||||||
|
(0.2, 3.4, 0.544),
|
||||||
|
(0.5, 2, 0.5)
|
||||||
|
]
|
||||||
|
for x, r, expected in cases:
|
||||||
|
result = f(x, r)
|
||||||
|
assert_allclose(result, expected)
|
||||||
|
|
||||||
|
|
||||||
# Hands on 2:
|
# Hands on 2:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue