
'''simple docstring'''







from math import factorial, pi
def  snake_case_		(    __SCREAMING_SNAKE_CASE :			float				,				__SCREAMING_SNAKE_CASE :			int = 30							):



						"""simple docstring"""





						if not isinstance(__SCREAMING_SNAKE_CASE				,				(int, float)							):
												raise ValueError('''maclaurin_sin() requires either an int or float for theta'''							)

						if not isinstance(__SCREAMING_SNAKE_CASE				,				__SCREAMING_SNAKE_CASE							) or accuracy <= 0:
												raise ValueError('''maclaurin_sin() requires a positive int for accuracy'''							)

						lowercase_     :					Dict													=	float(__SCREAMING_SNAKE_CASE							)
						lowercase_     :					int													=	theta // (2 * pi)
						theta -= 2 * div * pi
						return sum(
						    (-1) ** r * theta ** (2 * r + 1) / factorial(2 * r + 1							) for r in range(__SCREAMING_SNAKE_CASE							)							)
def  snake_case_		(    __SCREAMING_SNAKE_CASE :			float				,				__SCREAMING_SNAKE_CASE :			int = 30							):



						"""simple docstring"""





						if not isinstance(__SCREAMING_SNAKE_CASE				,				(int, float)							):
												raise ValueError('''maclaurin_cos() requires either an int or float for theta'''							)

						if not isinstance(__SCREAMING_SNAKE_CASE				,				__SCREAMING_SNAKE_CASE							) or accuracy <= 0:
												raise ValueError('''maclaurin_cos() requires a positive int for accuracy'''							)

						lowercase_     :					Any													=	float(__SCREAMING_SNAKE_CASE							)
						lowercase_     :					List[str]													=	theta // (2 * pi)
						theta -= 2 * div * pi
						return sum((-1) ** r * theta ** (2 * r) / factorial(2 * r							) for r in range(__SCREAMING_SNAKE_CASE							)							)


if __name__ == "__main__":
							import doctest

							doctest.testmod()

							print(maclaurin_sin(1_0))
							print(maclaurin_sin(-1_0))
							print(maclaurin_sin(1_0, 1_5))
							print(maclaurin_sin(-1_0, 1_5))

							print(maclaurin_cos(5))
							print(maclaurin_cos(-5))
							print(maclaurin_cos(1_0, 1_5))
							print(maclaurin_cos(-1_0, 1_5))





'''simple docstring'''







from __future__ import annotations






class 			lowerCAmelCase__       :






					def __init__(       self    ,							__SCREAMING_SNAKE_CASE = 0		):


											"""simple docstring"""





											lowercase_     :					Any													=	key






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											lowercase_     :					List[str]													=	key or self.__key or 1

											# make sure key is an appropriate size
											key %= 2_55

											return [chr(ord(__SCREAMING_SNAKE_CASE		) ^ key		) for ch in content]






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											lowercase_     :					Optional[int]													=	key or self.__key or 1

											# make sure key is an appropriate size
											key %= 2_55

											return [chr(ord(__SCREAMING_SNAKE_CASE		) ^ key		) for ch in content]






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE = 0		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											lowercase_     :					List[Any]													=	key or self.__key or 1

											# make sure key can be any size
											while key > 2_55:
																	key -= 2_55

											# This will be returned
											lowercase_     :					str													=	''''''

											for ch in content:
																	ans += chr(ord(__SCREAMING_SNAKE_CASE		) ^ key		)

											return ans






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE = 0		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											lowercase_     :					Any													=	key or self.__key or 1

											# make sure key can be any size
											while key > 2_55:
																	key -= 2_55

											# This will be returned
											lowercase_     :					Dict													=	''''''

											for ch in content:
																	ans += chr(ord(__SCREAMING_SNAKE_CASE		) ^ key		)

											return ans






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE = 0		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											try:
																	with open(__SCREAMING_SNAKE_CASE		) as fin, open('''encrypt.out'''    ,							'''w+'''		) as fout:
																							# actual encrypt-process
																							for line in fin:
																													fout.write(self.encrypt_string(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)		)

											except OSError:
																	return False

											return True






					def      _snake_case   (       self    ,							__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											assert isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		) and isinstance(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)

											try:
																	with open(__SCREAMING_SNAKE_CASE		) as fin, open('''decrypt.out'''    ,							'''w+'''		) as fout:
																							# actual encrypt-process
																							for line in fin:
																													fout.write(self.decrypt_string(__SCREAMING_SNAKE_CASE    ,							__SCREAMING_SNAKE_CASE		)		)

											except OSError:
																	return False

											return True


# Tests
# crypt = XORCipher()
# key = 67

# # test encrypt
# print(crypt.encrypt("hallo welt",key))
# # test decrypt
# print(crypt.decrypt(crypt.encrypt("hallo welt",key), key))

# # test encrypt_string
# print(crypt.encrypt_string("hallo welt",key))

# # test decrypt_string
# print(crypt.decrypt_string(crypt.encrypt_string("hallo welt",key),key))

# if (crypt.encrypt_file("test.txt",key)):
#       print("encrypt successful")
# else:
#       print("encrypt unsuccessful")

# if (crypt.decrypt_file("encrypt.out",key)):
#       print("decrypt successful")
# else:
#       print("decrypt unsuccessful")



