






'''simple docstring'''

from multiprocessing import Lock, Pipe, Process

# lock used to ensure that two processes do not access a pipe at the same time
__lowerCamelCase : Any											=			Lock()







def 							UpperCAmelCase_    (	lowerCAmelCase_		,							lowerCAmelCase_		,							lowerCAmelCase_		,							lowerCAmelCase_		,							lowerCAmelCase_		,							lowerCAmelCase_		,							lowerCAmelCase_							):

				"""simple docstring"""






				global process_lock

				# we perform n swaps since after n swaps we know we are sorted
				# we *could* stop early if we are sorted already, but it takes as long to
				# find out we are sorted as it does to sort the list with this algorithm
				for i in range(0		,							10							):
								if (i + position) % 2 == 0 and r_send is not None:
												# send your value to your right neighbor
												process_lock.acquire()
												r_send[1].send(lowerCamelCase_							)
												process_lock.release()

												# receive your right neighbor's value
												process_lock.acquire()
												lowercase         = rr_cv[0].recv()
												process_lock.release()

												# take the lower value since you are on the left
												lowercase         = min(lowerCamelCase_		,							lowerCamelCase_							)
								elif (i + position) % 2 != 0 and l_send is not None:
												# send your value to your left neighbor
												process_lock.acquire()
												l_send[1].send(lowerCamelCase_							)
												process_lock.release()

												# receive your left neighbor's value
												process_lock.acquire()
												lowercase         = lr_cv[0].recv()
												process_lock.release()

												# take the higher value since you are on the right
												lowercase         = max(lowerCamelCase_		,							lowerCamelCase_							)
    # after all swaps are performed, send the values back to main
				result_pipe[1].send(lowerCamelCase_							)







def 							UpperCAmelCase_    (	lowerCAmelCase_							):

				"""simple docstring"""






				lowercase         = []
				lowercase         = []
				# initialize the list of pipes where the values will be retrieved
				for _ in arr:
								result_pipe.append(Pipe()							)
				# creates the processes
				# the first and last process only have one neighbor so they are made outside
				# of the loop
				lowercase         = Pipe()
				lowercase         = Pipe()
				process_array_.append(
				    Process(
				        target=lowerCamelCase_		,							args=(0, arr[0], None, temp_rs, None, temp_rr, result_pipe[0])		,							)							)
				lowercase         = temp_rs
				lowercase         = temp_rr

				for i in range(1		,							len(lowerCamelCase_							) - 1							):
								lowercase         = Pipe()
								lowercase         = Pipe()
								process_array_.append(
								    Process(
								        target=lowerCamelCase_		,							args=(i, arr[i], temp_ls, temp_rs, temp_lr, temp_rr, result_pipe[i])		,							)							)
								lowercase         = temp_rs
								lowercase         = temp_rr

				process_array_.append(
				    Process(
				        target=lowerCamelCase_		,							args=(
				            len(lowerCamelCase_							) - 1,
				            arr[len(lowerCamelCase_							) - 1],
				            temp_ls,
				            None,
				            temp_lr,
				            None,
				            result_pipe[len(lowerCamelCase_							) - 1],
				        )		,							)							)

				# start the processes
				for p in process_array_:
								p.start()

				# wait for the processes to end and write their values to the list
				for p in range(0		,							len(lowerCamelCase_							)							):
								lowercase         = result_pipe[p][0].recv()
								process_array_[p].join()
				return arr







def 							UpperCAmelCase_    (	):

				"""simple docstring"""






				lowercase         = list(range(10		,							0		,							-1							)							)
				print("Initial List"							)
				print(*lowerCamelCase_							)
				lowercase         = odd_even_transposition(lowerCamelCase_							)
				print("Sorted List\n"							)
				print(*lowerCamelCase_							)


if __name__ == "__main__":
			main()











'''simple docstring'''

__lowerCamelCase : str											=			8.314_4598







def 							UpperCAmelCase_    (	lowerCAmelCase_		,							lowerCAmelCase_							):

				"""simple docstring"""






				if temperature < 0:
								raise Exception("Temperature cannot be less than 0 K"							)
				if molar_mass <= 0:
								raise Exception("Molar mass cannot be less than or equal to 0 kg/mol"							)
				else:
								return (3 * UNIVERSAL_GAS_CONSTANT * temperature / molar_mass) ** 0.5


if __name__ == "__main__":
			import doctest

			# run doctest
			doctest.testmod()

			# example
			__lowerCamelCase : Optional[Any]											=			300
			__lowerCamelCase : Tuple											=			28
			__lowerCamelCase : str											=			rms_speed_of_molecule(temperature, molar_mass)
			print(f"Vrms of Nitrogen gas at 300 K is {vrms} m/s")




