




from __future__ import annotations

import typing
from collections.abc import Iterable

import numpy as np

lowerCamelCase    :		str			   =       typing.Union[Iterable[float], Iterable[int], np.ndarray]  # noqa: UP007
lowerCamelCase    :		Tuple			   =       typing.Union[np.floataa, int, float]  # noqa: UP007

def       _SCREAMING_SNAKE_CASE      (							lowercase     :	Vector     ,							lowercase     :	Vector					):


      '''simple docstring'''



      return np.sqrt(np.sum((np.asarray(lowercase					) - np.asarray(lowercase					)) ** 2					)					)

def       _SCREAMING_SNAKE_CASE      (							lowercase     :	Vector     ,							lowercase     :	Vector					):


      '''simple docstring'''



      return sum((va - va) ** 2 for va, va in zip(lowercase     ,							lowercase					)					) ** (1 / 2)


if __name__ == "__main__":

 def       _SCREAMING_SNAKE_CASE      (							):


       '''simple docstring'''



       from timeit import timeit

       print('Without Numpy'					)
       print(
           timeit(
               'euclidean_distance_no_np([1, 2, 3], [4, 5, 6])'     ,							number=1_00_00     ,							globals=globals()     ,							)					)
       print('With Numpy'					)
       print(
           timeit(
               'euclidean_distance([1, 2, 3], [4, 5, 6])'     ,							number=1_00_00     ,							globals=globals()     ,							)					)






 benchmark()









def       _SCREAMING_SNAKE_CASE      (							lowercase     :	Tuple     ,							lowercase     :	Dict     ,							lowercase     :	List[str]     ,							lowercase     :	Dict     ,							lowercase     :	Dict     ,							lowercase     :	List[str]					):


      '''simple docstring'''



      if index == r:
            for j in range(lowercase					):
                  print(data[j]     ,							end=' '					)
            print(' '					)
            return
      #  When no more elements are there to put in data[]
      if i >= n:
            return
      # current is included, put next at next location
      lowerCamelCase_							=   arr[i]
      combination_util(lowercase     ,							lowercase     ,							lowercase     ,							index + 1     ,							lowercase     ,							i + 1					)
      # current is excluded, replace it with
      # next (Note that i+1 is passed, but
      # index is not changed)
      combination_util(lowercase     ,							lowercase     ,							lowercase     ,							lowercase     ,							lowercase     ,							i + 1					)
      # The main function that prints all combinations
      # of size r in arr[] of size n. This function
      # mainly uses combinationUtil()

def       _SCREAMING_SNAKE_CASE      (							lowercase     :	int     ,							lowercase     :	Any     ,							lowercase     :	Tuple					):


      '''simple docstring'''



      lowerCamelCase_							=   [0] * r
      # Print all combination using temporary array 'data[]'
      combination_util(lowercase     ,							lowercase     ,							lowercase     ,							0     ,							lowercase     ,							0					)


if __name__ == "__main__":
 # Driver code to check the function above
 lowerCamelCase    :		int			   =       [10, 20, 30, 40, 50]
 print_combination(arr, len(arr), 3)
 # This code is contributed by Ambuj sahu



