






'''simple docstring'''




lowerCAmelCase__          =						{'a': ['c', 'b'], 'b': ['d', 'e'], 'c': [], 'd': [], 'e': []}
lowerCAmelCase__          =						['a', 'b', 'c', 'd', 'e']







def       __UpperCAmelCase						(  lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_)							->     Tuple:
		UpperCamelCase__				:					Optional[int]					=					start
		# add current to visited
		visited.append(lowerCamelCase_)
		UpperCamelCase__				:					Optional[Any]					=					edges[current]
		for neighbor in neighbors:
				# if neighbor not in visited, visit
				if neighbor not in visited:
						UpperCamelCase__				:					Optional[int]					=					topological_sort(lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_)
    # if all neighbors visited add current to sort
		sort.append(lowerCamelCase_)
		# if all vertices haven't been visited select a new one to visit
		if len(lowerCamelCase_) != len(lowerCamelCase_):
				for vertice in vertices:
						if vertice not in visited:
								UpperCamelCase__				:					Optional[int]					=					topological_sort(lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_)
    # return sort
		return sort


if __name__ == "__main__":
		lowerCAmelCase__          =						topological_sort('a', [], [])
		print(sort)












'''simple docstring'''




from math import log

from scipy.constants import Boltzmann, physical_constants

lowerCAmelCase__          =						300  # TEMPERATURE (unit = K)







def       __UpperCAmelCase						(  lowerCamelCase_     ,      lowerCamelCase_     ,      lowerCamelCase_     ,      )							->     float:

		if donor_conc <= 0:
				raise ValueError('Donor concentration should be positive')
		elif acceptor_conc <= 0:
				raise ValueError('Acceptor concentration should be positive')
		elif intrinsic_conc <= 0:
				raise ValueError('Intrinsic concentration should be positive')
		elif donor_conc <= intrinsic_conc:
				raise ValueError(
				    'Donor concentration should be greater than intrinsic concentration')
		elif acceptor_conc <= intrinsic_conc:
				raise ValueError(
				    'Acceptor concentration should be greater than intrinsic concentration')
		else:
				return (
				    Boltzmann
				    * T
				    * log((donor_conc * acceptor_conc) / intrinsic_conc**2)
				    / physical_constants["electron volt"][0]
				)


if __name__ == "__main__":
		import doctest

		doctest.testmod()




