From 017f81763421ce2a399f842b35d21c804a30ef75 Mon Sep 17 00:00:00 2001 From: alexpantyukhin Date: Wed, 30 Nov 2022 13:39:43 +0400 Subject: [PATCH 1/7] add numbers different signs algorithm. --- bit_manipulation/numbers_different_signs.py | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 bit_manipulation/numbers_different_signs.py diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py new file mode 100644 index 000000000000..c8b8b6556888 --- /dev/null +++ b/bit_manipulation/numbers_different_signs.py @@ -0,0 +1,37 @@ +""" +Author : Alexander Pantyukhin +Date : November 30, 2022 + +Task: +Given two int numbers. Return True these numbers have opposite signs +or False otherwise. + +Implementation notes: Use bit manipulation. +Use XOR for two numbers. +""" + +def different_signs(a: int, b: int) -> bool: + """ + Return True if numbers have opposite signs False otherwise. + + >>> different_signs(1, -1) + True + >>> different_signs(1, 1) + False + >>> different_signs(1000000000000000000000000000, -1000000000000000000000000000) + True + >>> different_signs(-1000000000000000000000000000, 1000000000000000000000000000) + True + >>> different_signs(50, 278) + False + >>> different_signs(0, 2) + False + >>> different_signs(2, 0) + False + """ + return a ^ b < 0 + +if __name__ == "__main__": + import doctest + + doctest.testmod() From a359181f88b26445939ff7969ce73059b6868a35 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Wed, 30 Nov 2022 09:41:10 +0000 Subject: [PATCH 2/7] updating DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 51430a1e159e..68bc8b96c90b 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -50,6 +50,7 @@ * [Index Of Rightmost Set Bit](bit_manipulation/index_of_rightmost_set_bit.py) * [Is Even](bit_manipulation/is_even.py) * [Is Power Of Two](bit_manipulation/is_power_of_two.py) + * [Numbers Different Signs](bit_manipulation/numbers_different_signs.py) * [Reverse Bits](bit_manipulation/reverse_bits.py) * [Single Bit Manipulation Operations](bit_manipulation/single_bit_manipulation_operations.py) @@ -561,6 +562,7 @@ * [Greedy Coin Change](maths/greedy_coin_change.py) * [Hamming Numbers](maths/hamming_numbers.py) * [Hardy Ramanujanalgo](maths/hardy_ramanujanalgo.py) + * [Hexagonal Number](maths/hexagonal_number.py) * [Integration By Simpson Approx](maths/integration_by_simpson_approx.py) * [Is Ip V4 Address Valid](maths/is_ip_v4_address_valid.py) * [Is Square Free](maths/is_square_free.py) From bc15a852e5e558ecd326377ef7ffba2eb8d4c5e7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 30 Nov 2022 09:42:59 +0000 Subject: [PATCH 3/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- bit_manipulation/numbers_different_signs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py index c8b8b6556888..924306cea2fc 100644 --- a/bit_manipulation/numbers_different_signs.py +++ b/bit_manipulation/numbers_different_signs.py @@ -10,6 +10,7 @@ Use XOR for two numbers. """ + def different_signs(a: int, b: int) -> bool: """ Return True if numbers have opposite signs False otherwise. @@ -31,6 +32,7 @@ def different_signs(a: int, b: int) -> bool: """ return a ^ b < 0 + if __name__ == "__main__": import doctest From a2812770d8abefa77873c4c6bb751f3ea02c00db Mon Sep 17 00:00:00 2001 From: alexpantyukhin Date: Wed, 30 Nov 2022 15:44:35 +0400 Subject: [PATCH 4/7] fix review notes --- bit_manipulation/numbers_different_signs.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py index 924306cea2fc..1e2b496f2366 100644 --- a/bit_manipulation/numbers_different_signs.py +++ b/bit_manipulation/numbers_different_signs.py @@ -15,6 +15,9 @@ def different_signs(a: int, b: int) -> bool: """ Return True if numbers have opposite signs False otherwise. + :param a: The first number + :param b: The second number + >>> different_signs(1, -1) True >>> different_signs(1, 1) From debb90a3c3bdea3f398f4fe3a4a558432a1e9a19 Mon Sep 17 00:00:00 2001 From: alexpantyukhin Date: Wed, 30 Nov 2022 15:47:05 +0400 Subject: [PATCH 5/7] fix review notes --- bit_manipulation/numbers_different_signs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py index 1e2b496f2366..90f8176f325d 100644 --- a/bit_manipulation/numbers_different_signs.py +++ b/bit_manipulation/numbers_different_signs.py @@ -11,7 +11,7 @@ """ -def different_signs(a: int, b: int) -> bool: +def different_signs(number1: int, number2: int) -> bool: """ Return True if numbers have opposite signs False otherwise. @@ -33,7 +33,7 @@ def different_signs(a: int, b: int) -> bool: >>> different_signs(2, 0) False """ - return a ^ b < 0 + return number1 ^ number2 < 0 if __name__ == "__main__": From d0d721757b2af46948daa5cf72af8ad1d7732c5c Mon Sep 17 00:00:00 2001 From: alexpantyukhin Date: Wed, 30 Nov 2022 15:47:28 +0400 Subject: [PATCH 6/7] remove redundant --- bit_manipulation/numbers_different_signs.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py index 90f8176f325d..431a918b0c6a 100644 --- a/bit_manipulation/numbers_different_signs.py +++ b/bit_manipulation/numbers_different_signs.py @@ -15,9 +15,6 @@ def different_signs(number1: int, number2: int) -> bool: """ Return True if numbers have opposite signs False otherwise. - :param a: The first number - :param b: The second number - >>> different_signs(1, -1) True >>> different_signs(1, 1) From a660e70f223661caf1f2e7bf6c7629701b5908ea Mon Sep 17 00:00:00 2001 From: Alexander Pantyukhin Date: Fri, 2 Dec 2022 16:05:21 +0400 Subject: [PATCH 7/7] change names --- bit_manipulation/numbers_different_signs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bit_manipulation/numbers_different_signs.py b/bit_manipulation/numbers_different_signs.py index 431a918b0c6a..cf8b6d86f1eb 100644 --- a/bit_manipulation/numbers_different_signs.py +++ b/bit_manipulation/numbers_different_signs.py @@ -11,7 +11,7 @@ """ -def different_signs(number1: int, number2: int) -> bool: +def different_signs(num1: int, num2: int) -> bool: """ Return True if numbers have opposite signs False otherwise. @@ -30,7 +30,7 @@ def different_signs(number1: int, number2: int) -> bool: >>> different_signs(2, 0) False """ - return number1 ^ number2 < 0 + return num1 ^ num2 < 0 if __name__ == "__main__":