






from __future__ import annotations

import typing
from collections.abc import Iterable

import numpy as np

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

def      lowerCAmelCase__	(    _a       :			Vector  ,      _a       :			Vector    ):
		return np.sqrt(np.sum((np.asarray(_a    ) - np.asarray(_a    )) ** 2    )    )

def      lowerCAmelCase__	(    _a       :			Vector  ,      _a       :			Vector    ):
		return sum((va - va) ** 2 for va, va in zip(_a  ,      _a    )    ) ** (1 / 2)


if __name__ == "__main__":

							def      lowerCAmelCase__	(    ):
									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      lowerCAmelCase__	(    _a       :			int    ):
		if num < 0:
				return False

		snake_case_				:							int						 =       num
		snake_case_				:							int						 =       0
		while num > 0:
				snake_case_				:							Union[str, Any]						 =       rev_num * 10 + (num % 10)
				num //= 10

		return num_copy == rev_num


if __name__ == "__main__":
							import doctest

							doctest.testmod()
