





from __future__ import annotations





def   _lowercase       (    _UpperCAmelCase					)    ->	list[int]:
				lowerCamelCase									=[0] * len(lowercase_					)
				for i in range(1      ,   len(lowercase_					)					):
								lowerCamelCase									=duration_times[i - 1] + waiting_times[i - 1]
				return waiting_times





def   _lowercase       (    _UpperCAmelCase      ,   _UpperCAmelCase					)    ->	list[int]:
				return [
				    duration_time + waiting_times[i]
				    for i, duration_time in enumerate(lowercase_					)
				]





def   _lowercase       (    _UpperCAmelCase					)    ->	float:
				return sum(lowercase_					) / len(lowercase_					)





def   _lowercase       (    _UpperCAmelCase					)    ->	float:
				return sum(lowercase_					) / len(lowercase_					)


if __name__ == "__main__":
							# process id's
							UpperCAmelCase__    :      Union[str, Any]       					=[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
							UpperCAmelCase__    :      int       					=[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
							UpperCAmelCase__    :      List[str]       					=calculate_waiting_times(duration_times)
							UpperCAmelCase__    :      List[Any]       					=calculate_turnaround_times(duration_times, waiting_times)

							# get the average times
							UpperCAmelCase__    :      Optional[Any]       					=calculate_average_waiting_time(waiting_times)
							UpperCAmelCase__    :      Any       					=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}")








def   UpperCamelCase(   lowercase_ = 100     ,   lowercase_ = 100				)      ->							int:





  '''simple docstring'''





  return max(
      sum(int(lowercase_				) for x in str(base**power				)				)
      for base in range(lowercase_				)
      for power in range(lowercase_				)				)


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

    doctest.testmod()