


from __future__ import annotations

import typing
from collections.abc import Iterable

import numpy as np

snake_case__				:	int					       =					typing.Union[Iterable[float], Iterable[int], np.ndarray]  # noqa: UP007
snake_case__				:	List[Any]					       =					typing.Union[np.floataa, int, float]  # noqa: UP007


def    __lowerCamelCase   (      A__						: Vector						,						A__						: Vector					)     ->    VectorOut:
   return np.sqrt(np.sum((np.asarray(A__					) - np.asarray(A__					)) ** 2					)					)


def    __lowerCamelCase   (      A__						: Vector						,						A__						: Vector					)     ->    VectorOut:
   return sum((va - va) ** 2 for va, va in zip(A__						,						A__					)					) ** (1 / 2)


if __name__ == "__main__":


      def    __lowerCamelCase   (      )     ->    None:
         from timeit import timeit

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



      benchmark()









def    __lowerCamelCase   (      A__						: int						,						A__						: int					)     ->    int:
   return int((input_a, input_a).count(0					) == 0					)


def    __lowerCamelCase   (      )     ->    None:
   assert and_gate(0						,						0					) == 0
   assert and_gate(0						,						1					) == 0
   assert and_gate(1						,						0					) == 0
   assert and_gate(1						,						1					) == 1


if __name__ == "__main__":
      test_and_gate()
      print(and_gate(1, 0))
      print(and_gate(0, 0))
      print(and_gate(0, 1))
      print(and_gate(1, 1))





