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