mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-26 02:48:40 +00:00
no changes
This commit is contained in:
parent
01121afa65
commit
ac5b41ca40
@ -1,46 +0,0 @@
|
|||||||
'''
|
|
||||||
You are given a bitmask m and you want to efficiently iterate through all of
|
|
||||||
its submasks. The mask s is submask of m if only bits that were included in
|
|
||||||
bitmask are set
|
|
||||||
'''
|
|
||||||
|
|
||||||
def list_of_submasks(mask)->list:
|
|
||||||
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
mask : number which shows mask ( always integer > 0, zero does not have any submasks )
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
all_submasks : the list of submasks of mask (mask s is called submask of mask
|
|
||||||
m if only bits that were included in original mask are set
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
AssertionError: mask not positive integer
|
|
||||||
|
|
||||||
>>> list_of_submasks(15)
|
|
||||||
[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
|
|
||||||
>>> list_of_submasks(13)
|
|
||||||
[13, 12, 9, 8, 5, 4, 1]
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
fmt = "n needs to be positive integer, your input {}"
|
|
||||||
assert isinstance(mask, int) and mask > 0, fmt.format(mask)
|
|
||||||
|
|
||||||
'''
|
|
||||||
first submask iterated will be mask itself then operation will be performed
|
|
||||||
to get other submasks till we reach empty submask that is zero ( zero is not
|
|
||||||
included in final submasks list )
|
|
||||||
'''
|
|
||||||
all_submasks = []
|
|
||||||
submask = mask
|
|
||||||
|
|
||||||
while submask:
|
|
||||||
all_submasks.append(submask)
|
|
||||||
submask = (submask-1) & mask
|
|
||||||
|
|
||||||
return all_submasks
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
import doctest
|
|
||||||
doctest.testmod()
|
|
Loading…
x
Reference in New Issue
Block a user