From 0e05a2968e0d351e17da277307bffd5940883b01 Mon Sep 17 00:00:00 2001 From: Name <136186521+Rohan-Gautam@users.noreply.github.com> Date: Wed, 29 Oct 2025 16:25:07 +0530 Subject: [PATCH 1/3] Add sleep sort with doctest and type hints (Hacktoberfest 2025) --- sorts/sleep_sort.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sorts/sleep_sort.py diff --git a/sorts/sleep_sort.py b/sorts/sleep_sort.py new file mode 100644 index 000000000000..54763d946698 --- /dev/null +++ b/sorts/sleep_sort.py @@ -0,0 +1,42 @@ +# sorts/sleep_sort.py +from __future__ import annotations + +import threading +import time +from typing import List + + +def sleep_sort(arr: List[int]) -> List[int]: + """ + "Sorts" a list by sleeping for each value's duration. + Fun demo – **not** for production! + + >>> import random; random.seed(42) + >>> sleep_sort([3, 1, 4, 1, 5]) + [1, 1, 3, 4, 5] + >>> sleep_sort([]) + [] + >>> sleep_sort([42]) + [42] + """ + if not arr: + return [] + + result: List[int] = [] + + def sleeper(value: int) -> None: + time.sleep(value / 1000.0) # scale down for fast tests + result.append(value) + + threads = [threading.Thread(target=sleeper, args=(x,)) for x in arr] + for t in threads: + t.start() + for t in threads: + t.join() + + return result + + +if __name__ == "__main__": + import doctest + doctest.testmod(verbose=True) \ No newline at end of file From 849168ac3447600ff3db610389b1d56f0357d74a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 10:58:55 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- sorts/sleep_sort.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sorts/sleep_sort.py b/sorts/sleep_sort.py index 54763d946698..3fc1b9c4bbad 100644 --- a/sorts/sleep_sort.py +++ b/sorts/sleep_sort.py @@ -39,4 +39,5 @@ def sleeper(value: int) -> None: if __name__ == "__main__": import doctest - doctest.testmod(verbose=True) \ No newline at end of file + + doctest.testmod(verbose=True) From f1079b9fb1a86b86953a600f3416b354544489fa Mon Sep 17 00:00:00 2001 From: Rohan Gautam <136186521+Rohan-Gautam@users.noreply.github.com> Date: Wed, 29 Oct 2025 16:29:56 +0530 Subject: [PATCH 3/3] fix: resolve ruff linting issues (E501, E731) --- sorts/sleep_sort.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sorts/sleep_sort.py b/sorts/sleep_sort.py index 3fc1b9c4bbad..4f3142a5790e 100644 --- a/sorts/sleep_sort.py +++ b/sorts/sleep_sort.py @@ -29,10 +29,10 @@ def sleeper(value: int) -> None: result.append(value) threads = [threading.Thread(target=sleeper, args=(x,)) for x in arr] - for t in threads: - t.start() - for t in threads: - t.join() + for thread in threads: + thread.start() + for thread in threads: + thread.join() return result