mirror of
https://hub.njuu.cf/TheAlgorithms/Python.git
synced 2023-10-11 13:06:12 +08:00
deleted power_of_4
This commit is contained in:
parent
c08e1388e6
commit
60e1a83bdb
@ -1,61 +0,0 @@
|
||||
"""
|
||||
|
||||
Task:
|
||||
Given a positive int number. Return True if this number is power of 4
|
||||
or False otherwise.
|
||||
|
||||
Implementation notes: Use bit manipulation.
|
||||
For example if the number is the power of 2 it's bits representation:
|
||||
n = 0..100..00
|
||||
n - 1 = 0..011..11
|
||||
|
||||
n & (n - 1) - no intersections = 0
|
||||
If the number is a power of 4 then it should be a power of 2 and the set bit should be at an odd position
|
||||
"""
|
||||
|
||||
|
||||
def power_of_4(number: int) -> bool:
|
||||
"""
|
||||
Return True if this number is power of 4 or False otherwise.
|
||||
|
||||
>>> power_of_4(0)
|
||||
False
|
||||
>>> power_of_4(1)
|
||||
True
|
||||
>>> power_of_4(2)
|
||||
False
|
||||
>>> power_of_4(4)
|
||||
True
|
||||
>>> power_of_4(6)
|
||||
False
|
||||
>>> power_of_4(8)
|
||||
False
|
||||
>>> power_of_4(17)
|
||||
False
|
||||
>>> power_of_4(-1)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: number must be positive
|
||||
>>> power_of_4(1.2)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: unsupported operand type(s) for &: 'float' and 'float'
|
||||
|
||||
"""
|
||||
if number <= 0:
|
||||
raise ValueError("number must be positive")
|
||||
if number & (number - 1) == 0:
|
||||
c = 0
|
||||
while number:
|
||||
c+=1
|
||||
number>>=1
|
||||
if c&1==0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
Loading…
x
Reference in New Issue
Block a user