From 93245ab880ccce3a88572128ac6774a51d15f13a Mon Sep 17 00:00:00 2001 From: Kadambari Date: Mon, 6 Apr 2026 12:20:36 +0200 Subject: [PATCH 1/3] Fix: handle zero input in binary_count_trailing_zeros --- .../binary_count_trailing_zeros.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/bit_manipulation/binary_count_trailing_zeros.py b/bit_manipulation/binary_count_trailing_zeros.py index f401c4ab9266..154ddfa754a5 100644 --- a/bit_manipulation/binary_count_trailing_zeros.py +++ b/bit_manipulation/binary_count_trailing_zeros.py @@ -17,7 +17,9 @@ def binary_count_trailing_zeros(a: int) -> int: >>> binary_count_trailing_zeros(4294967296) 32 >>> binary_count_trailing_zeros(0) - 0 + Traceback (most recent call last): + ... + ValueError: Trailing zeros undefined for zero >>> binary_count_trailing_zeros(-10) Traceback (most recent call last): ... @@ -29,16 +31,21 @@ def binary_count_trailing_zeros(a: int) -> int: >>> binary_count_trailing_zeros("0") Traceback (most recent call last): ... - TypeError: '<' not supported between instances of 'str' and 'int' + TypeError: Input value must be a 'int' type """ + if not isinstance(a, int): + raise TypeError("Input value must be a 'int' type") + if a < 0: raise ValueError("Input value must be a positive integer") - elif isinstance(a, float): - raise TypeError("Input value must be a 'int' type") - return 0 if (a == 0) else int(log2(a & -a)) + + if a == 0: + raise ValueError("Trailing zeros undefined for zero") + + return int(log2(a & -a)) if __name__ == "__main__": import doctest - doctest.testmod() + doctest.testmod() \ No newline at end of file From dd9100157c0cebe4c8186ee6ea60308dfee12529 Mon Sep 17 00:00:00 2001 From: Kadambari Date: Mon, 6 Apr 2026 12:31:54 +0200 Subject: [PATCH 2/3] Fix: add newline at end of file --- bit_manipulation/binary_count_trailing_zeros.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bit_manipulation/binary_count_trailing_zeros.py b/bit_manipulation/binary_count_trailing_zeros.py index 154ddfa754a5..6ba244beaca5 100644 --- a/bit_manipulation/binary_count_trailing_zeros.py +++ b/bit_manipulation/binary_count_trailing_zeros.py @@ -48,4 +48,5 @@ def binary_count_trailing_zeros(a: int) -> int: if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod() + \ No newline at end of file From c67813d7f659bb8ad0ad6f226b92cde4d7e9a071 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 10:50:26 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- bit_manipulation/binary_count_trailing_zeros.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bit_manipulation/binary_count_trailing_zeros.py b/bit_manipulation/binary_count_trailing_zeros.py index 6ba244beaca5..5c0b5c00685f 100644 --- a/bit_manipulation/binary_count_trailing_zeros.py +++ b/bit_manipulation/binary_count_trailing_zeros.py @@ -49,4 +49,3 @@ def binary_count_trailing_zeros(a: int) -> int: import doctest doctest.testmod() - \ No newline at end of file