mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
added binary_count_trailing_zeros.py (#2557)
* added binary_count_trailing_zeros.py * updated binary_count_trailing_zeros.py file * changed file name to count_trailing_zeros.py * updated count_trailing_zeros.py * resolved flake8 error * renamed to binary_count_trailing_zeros.py * added required changes * resolved pre-commit error * added count_setbits.py * resolved errors * changed name to binary_count_setbits.py * updated file * reformated file
This commit is contained in:
parent
ce3ce3f8a8
commit
ac6a160f1b
41
bit_manipulation/binary_count_setbits.py
Normal file
41
bit_manipulation/binary_count_setbits.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
def binary_count_setbits(a: int) -> int:
|
||||
"""
|
||||
Take in 1 integer, return a number that is
|
||||
the number of 1's in binary representation of that number.
|
||||
|
||||
>>> binary_count_setbits(25)
|
||||
3
|
||||
>>> binary_count_setbits(36)
|
||||
2
|
||||
>>> binary_count_setbits(16)
|
||||
1
|
||||
>>> binary_count_setbits(58)
|
||||
4
|
||||
>>> binary_count_setbits(4294967295)
|
||||
32
|
||||
>>> binary_count_setbits(0)
|
||||
0
|
||||
>>> binary_count_setbits(-10)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Input value must be a positive integer
|
||||
>>> binary_count_setbits(0.8)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: Input value must be a 'int' type
|
||||
>>> binary_count_setbits("0")
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: '<' not supported between instances of 'str' and 'int'
|
||||
"""
|
||||
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 bin(a).count("1")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
44
bit_manipulation/binary_count_trailing_zeros.py
Normal file
44
bit_manipulation/binary_count_trailing_zeros.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
from math import log2
|
||||
|
||||
|
||||
def binary_count_trailing_zeros(a: int) -> int:
|
||||
"""
|
||||
Take in 1 integer, return a number that is
|
||||
the number of trailing zeros in binary representation of that number.
|
||||
|
||||
>>> binary_count_trailing_zeros(25)
|
||||
0
|
||||
>>> binary_count_trailing_zeros(36)
|
||||
2
|
||||
>>> binary_count_trailing_zeros(16)
|
||||
4
|
||||
>>> binary_count_trailing_zeros(58)
|
||||
1
|
||||
>>> binary_count_trailing_zeros(4294967296)
|
||||
32
|
||||
>>> binary_count_trailing_zeros(0)
|
||||
0
|
||||
>>> binary_count_trailing_zeros(-10)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Input value must be a positive integer
|
||||
>>> binary_count_trailing_zeros(0.8)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: Input value must be a 'int' type
|
||||
>>> binary_count_trailing_zeros("0")
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: '<' not supported between instances of 'str' and 'int'
|
||||
"""
|
||||
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 __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user