





import math
from timeit import timeit


def 					__SCREAMING_SNAKE_CASE  (							__lowercase:		int):



  '''simple docstring'''






  __lowerCAmelCase			=				0
  __lowerCAmelCase			=				abs(__lowercase)
  while True:
    __lowerCAmelCase			=				n // 10
    digits += 1
    if n == 0:
      break
  return digits


def 					__SCREAMING_SNAKE_CASE  (							__lowercase:		int):



  '''simple docstring'''






  return 1 if n == 0 else math.floor(math.log(abs(__lowercase)     ,							10) + 1)


def 					__SCREAMING_SNAKE_CASE  (							__lowercase:		int):



  '''simple docstring'''






  return len(str(abs(__lowercase)))


def 					__SCREAMING_SNAKE_CASE  (							):



  '''simple docstring'''






  from collections.abc import Callable

  def benchmark_a_function(__lowercase:		Callable     ,							__lowercase:		int) -> None:
    __lowerCAmelCase			=				F'''{func.__name__}({value})'''
    __lowerCAmelCase			=				timeit(F'''__main__.{call}'''     ,							setup='''import __main__''')
    print(F'''{call}: {func(__lowercase)} -- {timing} seconds''')

  for value in (26_21_44, 11_25_89_99_06_84_26_24, 1_26_76_50_60_02_28_22_94_01_49_67_03_20_53_76):
    for func in (num_digits, num_digits_fast, num_digits_faster):
      benchmark_a_function(__lowercase     ,							__lowercase)
    print()


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      benchmark()







def 					__SCREAMING_SNAKE_CASE  (							__lowercase:		list):



  '''simple docstring'''






  if len(__lowercase) <= 1:
    return data
  else:
    return [
        *quick_sort([e for e in data[1:] if e <= data[0]]),
        data[0],
        *quick_sort([e for e in data[1:] if e > data[0]]),
    ]


if __name__ == "__main__":
      import doctest

      doctest.testmod()
