code: 
  
  
  
  
  
  from __future__ import annotations
  
  def     a						(      _lowercase   :     list[int]       )     ->list[int]:
  		UpperCamelCase__         =	[0] * len(_lowercase       )
  		for i in range(1 ,						len(_lowercase       )       ):
  				UpperCamelCase__         =	duration_times[i - 1] + waiting_times[i - 1]
  		return waiting_times
  
  def     a						(      _lowercase   :     list[int] ,						_lowercase   :     list[int]       )     ->list[int]:
  		return [
  		    duration_time + waiting_times[i]
  		    for i, duration_time in enumerate(_lowercase       )
  		]
  
  def     a						(      _lowercase   :     list[int]       )     ->float:
  		return sum(_lowercase       ) / len(_lowercase       )
  
  def     a						(      _lowercase   :     list[int]       )     ->float:
  		return sum(_lowercase       ) / len(_lowercase       )
  
  
  if __name__ == "__main__":
  				# process id's
  				__lowerCAmelCase     =			[1, 2, 3]
  
  				# ensure that we actually have processes
  				if len(processes) == 0:
  								print("Zero amount of processes")
  								raise SystemExit(0)
  
  				# duration time of all processes
  				__lowerCAmelCase     =			[19, 8, 9]
  
  				# ensure we can match each id to a duration time
  				if len(duration_times) != len(processes):
  								print("Unable to match all id's with their duration time")
  								raise SystemExit(0)
  
  				# get the waiting times and the turnaround times
  				__lowerCAmelCase     =			calculate_waiting_times(duration_times)
  				__lowerCAmelCase     =			calculate_turnaround_times(duration_times, waiting_times)
  
  				# get the average times
  				__lowerCAmelCase     =			calculate_average_waiting_time(waiting_times)
  				__lowerCAmelCase     =			calculate_average_turnaround_time(turnaround_times)
  
  				# print all the results
  				print("Process ID\tDuration Time\tWaiting Time\tTurnaround Time")
  				for i, process in enumerate(processes):
  								print(
  								    f"""{process}\t\t{duration_times[i]}\t\t{waiting_times[i]}\t\t"""
  								    f"""{turnaround_times[i]}"""
  								)
  				print(f"""Average waiting time = {average_waiting_time}""")
  				print(f"""Average turn around time = {average_turnaround_time}""")
  
  
  
  
  
  
style_context: 
  
  
  
  
  
  def     a						(      _lowercase   :     Optional[int]       )     ->List[str]:
  		UpperCamelCase__         =	len(_lowercase       )
  		for i in range(length - 1       ):
  				UpperCamelCase__         =	False
  				for j in range(length - 1 - i       ):
  						if collection[j] > collection[j + 1]:
  								UpperCamelCase__         =	True
  								UpperCamelCase__  ,			UpperCamelCase__         =	collection[j + 1], collection[j]
  				if not swapped:
  						break  # Stop iteration if the collection is sorted.
  		return collection
  
  
  if __name__ == "__main__":
  				import doctest
  				import time
  
  				doctest.testmod()
  
  				__lowerCAmelCase     =			input("Enter numbers separated by a comma:").strip()
  				__lowerCAmelCase     =			[int(item) for item in user_input.split(",")]
  				__lowerCAmelCase     =			time.process_time()
  				print(*bubble_sort(unsorted), sep=",")
  				print(f"""Processing time: {(time.process_time() - start)%1e9 + 7}""")
  
  
  
  
  
  