diff --git a/DIRECTORY.md b/DIRECTORY.md index c46d81ab75bc..16244e6ad08e 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -525,6 +525,7 @@ * [Perfect Cube](https://github.com/TheAlgorithms/Python/blob/master/maths/perfect_cube.py) * [Perfect Number](https://github.com/TheAlgorithms/Python/blob/master/maths/perfect_number.py) * [Perfect Square](https://github.com/TheAlgorithms/Python/blob/master/maths/perfect_square.py) + * [Persistence](https://github.com/TheAlgorithms/Python/blob/master/maths/persistence.py) * [Pi Monte Carlo Estimation](https://github.com/TheAlgorithms/Python/blob/master/maths/pi_monte_carlo_estimation.py) * [Pollard Rho](https://github.com/TheAlgorithms/Python/blob/master/maths/pollard_rho.py) * [Polynomial Evaluation](https://github.com/TheAlgorithms/Python/blob/master/maths/polynomial_evaluation.py) diff --git a/data_structures/linked_list/__init__.py b/data_structures/linked_list/__init__.py index 8ae171d71035..6ba660231ae1 100644 --- a/data_structures/linked_list/__init__.py +++ b/data_structures/linked_list/__init__.py @@ -5,8 +5,9 @@ head node gives us access of the complete list - Last node: points to null """ +from __future__ import annotations -from typing import Any, Optional +from typing import Any class Node: @@ -17,7 +18,7 @@ def __init__(self, item: Any, next: Any) -> None: class LinkedList: def __init__(self) -> None: - self.head: Optional[Node] = None + self.head: Node | None = None self.size = 0 def add(self, item: Any) -> None: diff --git a/data_structures/linked_list/circular_linked_list.py b/data_structures/linked_list/circular_linked_list.py index 42794ba793a7..121d934c6957 100644 --- a/data_structures/linked_list/circular_linked_list.py +++ b/data_structures/linked_list/circular_linked_list.py @@ -1,10 +1,12 @@ -from typing import Any, Iterator, Optional +from __future__ import annotations + +from typing import Any, Iterator class Node: def __init__(self, data: Any): self.data: Any = data - self.next: Optional[Node] = None + self.next: Node | None = None class CircularLinkedList: diff --git a/data_structures/linked_list/has_loop.py b/data_structures/linked_list/has_loop.py index a155ab4c7c89..bc06ffe150e8 100644 --- a/data_structures/linked_list/has_loop.py +++ b/data_structures/linked_list/has_loop.py @@ -1,4 +1,6 @@ -from typing import Any, Optional +from __future__ import annotations + +from typing import Any class ContainsLoopError(Exception): @@ -8,7 +10,7 @@ class ContainsLoopError(Exception): class Node: def __init__(self, data: Any) -> None: self.data: Any = data - self.next_node: Optional[Node] = None + self.next_node: Node | None = None def __iter__(self): node = self diff --git a/data_structures/linked_list/middle_element_of_linked_list.py b/data_structures/linked_list/middle_element_of_linked_list.py index 296696897715..0c6250f3b731 100644 --- a/data_structures/linked_list/middle_element_of_linked_list.py +++ b/data_structures/linked_list/middle_element_of_linked_list.py @@ -1,4 +1,4 @@ -from typing import Optional +from __future__ import annotations class Node: @@ -17,7 +17,7 @@ def push(self, new_data: int) -> int: self.head = new_node return self.head.data - def middle_element(self) -> Optional[int]: + def middle_element(self) -> int | None: """ >>> link = LinkedList() >>> link.middle_element() diff --git a/maths/pollard_rho.py b/maths/pollard_rho.py index df020c63f2f9..0fc80cd4280b 100644 --- a/maths/pollard_rho.py +++ b/maths/pollard_rho.py @@ -1,5 +1,6 @@ +from __future__ import annotations + from math import gcd -from typing import Union def pollard_rho( @@ -7,7 +8,7 @@ def pollard_rho( seed: int = 2, step: int = 1, attempts: int = 3, -) -> Union[int, None]: +) -> int | None: """ Use Pollard's Rho algorithm to return a nontrivial factor of ``num``. The returned factor may be composite and require further factorization.