
"""simple docstring"""





from timeit import timeit

UpperCamelCase_       :    Union[str, Any]						      =			{
    '''MALAYALAM''': True,
    '''String''': False,
    '''rotor''': True,
    '''level''': True,
    '''A''': True,
    '''BB''': True,
    '''ABC''': False,
    '''amanaplanacanalpanama''': True,  # "a man a plan a canal panama"
}
# Ensure our test data is valid
assert all((key == key[::-1]) is value for key, value in test_data.items())
def 				A_  (__a					):

					'''simple docstring'''





					A_								=    0
					A_								=    len(__a					) - 1
					while start_i < end_i:
										if s[start_i] == s[end_i]:
															start_i += 1
															end_i -= 1
										else:
															return False
					return True
def 				A_  (__a					):

					'''simple docstring'''





					A_								=    len(__a					) // 2
					A_								=    len(__a					)

					# We need to traverse till half of the length of string
					# as we can get access of the i'th last element from
					# i'th index.
					# eg: [0,1,2,3,4,5] => 4th index can be accessed
					# with the help of 1st index (i==n-i-1)
					# where n is length of string
					return all(s[i] == s[n - i - 1] for i in range(__a					)					)
def 				A_  (__a					):

					'''simple docstring'''





					if len(__a					) <= 2:
										return True
					if s[0] == s[len(__a					) - 1]:
										return is_palindrome_recursive(s[1:-1]					)
					else:
										return False
def 				A_  (__a					):

					'''simple docstring'''





					return s == s[::-1]
def 				A_  (__a					):

					'''simple docstring'''





					A_								=    f'all({name}(key) is value for key, value in test_data.items())'
					A_								=    f'from __main__ import test_data, {name}'
					A_								=    50_0000
					A_								=    timeit(stmt=__a					, setup=__a					, number=__a					)
					print(f'{name:<35} finished {number:,} runs in {result:.5f} seconds'					)


if __name__ == "__main__":
		for key, value in test_data.items():
				assert is_palindrome(key) is is_palindrome_recursive(key)
				assert is_palindrome(key) is is_palindrome_slice(key)
				print(F"""{key:21} {value}""")
		print('''a man a plan a canal panama''')

		# finished 500,000 runs in 0.46793 seconds
		benchmark_function('''is_palindrome_slice''')
		# finished 500,000 runs in 0.85234 seconds
		benchmark_function('''is_palindrome''')
		# finished 500,000 runs in 1.32028 seconds
		benchmark_function('''is_palindrome_recursive''')
		# finished 500,000 runs in 2.08679 seconds
		benchmark_function('''is_palindrome_traversal''')






"""simple docstring"""





from __future__ import annotations
def 				A_  (__a					):

					'''simple docstring'''





					A_								=    0.00
					A_								=    0
					for resistor in resistors:
										if resistor <= 0:
															A_								=    f'Resistor at index {index} has a negative or zero value!'
															raise ValueError(__a					)
										first_sum += 1 / float(__a					)
										index += 1
					return 1 / first_sum
def 				A_  (__a					):

					'''simple docstring'''





					A_								=    0.00
					A_								=    0
					for resistor in resistors:
										sum_r += resistor
										if resistor < 0:
															A_								=    f'Resistor at index {index} has a negative value!'
															raise ValueError(__a					)
										index += 1
					return sum_r


if __name__ == "__main__":
		import doctest

		doctest.testmod()




