




import unittest

from knapsack import greedy_knapsack as kp






class  __magic_name__						(  unittest.TestCase):
				'''simple docstring'''







				def     _A							(							self:   Optional[Any]		):
											SCREAMING_SNAKE_CASE_   	=    [10, 20, 30, 40, 50, 60]
											SCREAMING_SNAKE_CASE_   	=    [2, 4, 6, 8, 10, 12]
											SCREAMING_SNAKE_CASE_   	=    1_00
											self.assertEqual(kp.calc_profit(_lowerCamelCase		,					_lowerCamelCase		,					_lowerCamelCase		)		,					2_10		)


				def     _A							(							self:   Optional[Any]		):
											self.assertRaisesRegex(_lowerCamelCase		,					'''max_weight must greater than zero.'''		)


				def     _A							(							self:   Optional[Any]		):
											self.assertRaisesRegex(_lowerCamelCase		,					'''Weight can not be negative.'''		)


				def     _A							(							self:   Dict		):
											self.assertRaisesRegex(_lowerCamelCase		,					'''Profit can not be negative.'''		)


				def     _A							(							self:   int		):
											self.assertRaisesRegex(_lowerCamelCase		,					'''max_weight must greater than zero.'''		)





				def     _A							(							self:   Optional[int]		):
											self.assertRaisesRegex(
											    _lowerCamelCase		,					'''The length of profit and weight must be same.'''		)


if __name__ == "__main__":
			unittest.main()








from __future__ import annotations

from math import pi

# Define the Reduced Planck Constant ℏ (H bar), speed of light C, value of
# Pi and the function
__SCREAMING_SNAKE_CASE 						=1.0_5_4_5_7_1_8_1_7e-3_4  # unit of ℏ : J * s

__SCREAMING_SNAKE_CASE 						=3e8  # unit of c : m * s^-1

def 			a   (_lowerCAmelCase  ,    _lowerCAmelCase  ,    _lowerCAmelCase     ):

							if (force, area, distance).count(0     ) != 1:
														raise ValueError('''One and only one argument must be 0'''     )
							if force < 0:
														raise ValueError('''Magnitude of force can not be negative'''     )
							if distance < 0:
														raise ValueError('''Distance can not be negative'''     )
							if area < 0:
														raise ValueError('''Area can not be negative'''     )
							if force == 0:
														SCREAMING_SNAKE_CASE_   	=    (REDUCED_PLANCK_CONSTANT * SPEED_OF_LIGHT * pi**2 * area) / (
														    2_4_0 * (distance) ** 4
														)
														return {"force": force}
							elif area == 0:
														SCREAMING_SNAKE_CASE_   	=    (2_4_0 * force * (distance) ** 4) / (
														    REDUCED_PLANCK_CONSTANT * SPEED_OF_LIGHT * pi**2
														)
														return {"area": area}
							elif distance == 0:
														SCREAMING_SNAKE_CASE_   	=    (
														    (REDUCED_PLANCK_CONSTANT * SPEED_OF_LIGHT * pi**2 * area) / (2_4_0 * force)
														) ** (1 / 4)
														return {"distance": distance}
							raise ValueError('''One and only one argument must be 0'''     )


# Run doctest
if __name__ == "__main__":
			import doctest

			doctest.testmod()


