Skip to content

Commit c46cd47

Browse files
committed
add alternate harmonic series
1 parent 791deb4 commit c46cd47

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
def is_alternate_harmonic_series(series: list) -> bool:
2+
"""
3+
checking whether the input series is alternate harmonic series or not
4+
>>> is_alternate_harmonic_series([1, -1/2, 1/3, -1/4, 1/5])
5+
True
6+
>>> is_alternate_harmonic_series([2/5, -2/10, 2/15, -2/20, 2/25])
7+
True
8+
>>> is_alternate_harmonic_series([1, 1/2, 1/3, 1/4])
9+
False
10+
>>> is_alternate_harmonic_series([1, -1/2, 1/4, -1/8])
11+
False
12+
>>> is_alternate_harmonic_series(4)
13+
Traceback (most recent call last):
14+
...
15+
ValueError: Input series is not valid, valid series - [1, 2/3, 2]
16+
>>> is_alternate_harmonic_series([])
17+
Traceback (most recent call last):
18+
...
19+
ValueError: Input list must be a non empty list
20+
>>> is_alternate_harmonic_series([0])
21+
Traceback (most recent call last):
22+
...
23+
ValueError: Input series cannot have 0 as an element
24+
>>> is_alternate_harmonic_series([1,2,0,6])
25+
Traceback (most recent call last):
26+
...
27+
ValueError: Input series cannot have 0 as an element
28+
"""
29+
if not isinstance(series, list):
30+
raise ValueError("Input series is not valid, valid series - [1, 2/3, 2]")
31+
if len(series) == 0:
32+
raise ValueError("Input list must be a non empty list")
33+
if len(series) == 1 and series[0] != 0:
34+
return True
35+
receprocal= []
36+
series_len = len(series)
37+
for i in range(series_len):
38+
if series[i] == 0:
39+
raise ValueError("Input series cannot have 0 as an element")
40+
receprocal.append(1 / series[i])
41+
common_diff = abs(receprocal[1]) - abs(receprocal[0])
42+
for index in range(2, series_len):
43+
if abs(receprocal[index]) - abs(receprocal[index - 1]) != common_diff or receprocal[index]*receprocal[index-1] >= 0:
44+
return False
45+
return True
46+
47+
if __name__ == "__main__":
48+
import doctest
49+
50+
doctest.testmod()

0 commit comments

Comments
 (0)