mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-15 02:59:50 +00:00
Fix Ruff formatting
Blank lines with spaces, trailing spaces at end of line, etc.
This commit is contained in:
parent
bb46e1af8b
commit
b501f227f5
@ -67,170 +67,164 @@ bit_length = int.bit_length
|
|||||||
and for bit_length(value) > bit_len, which can cause silent errors.
|
and for bit_length(value) > bit_len, which can cause silent errors.
|
||||||
Anything like int(None) is going to cause a loud error. """
|
Anything like int(None) is going to cause a loud error. """
|
||||||
|
|
||||||
|
|
||||||
def bit_get(bint: int, index: int):
|
def bit_get(bint: int, index: int):
|
||||||
"""Get value of bit at index in bint.
|
"""Get value of bit at index in bint.
|
||||||
|
|
||||||
>>> bit_get(15, 0)
|
>>> bit_get(15, 0)
|
||||||
1
|
1
|
||||||
>>> bit_get(15, 4)
|
>>> bit_get(15, 4)
|
||||||
0
|
0
|
||||||
>>> bit_get(0, 4)
|
>>> bit_get(0, 4)
|
||||||
0
|
0
|
||||||
>>> bit_get(-1, 2) is None
|
>>> bit_get(-1, 2) is None
|
||||||
True
|
True
|
||||||
>>> bit_get(0, -1) is None
|
>>> bit_get(0, -1) is None
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return multibit_get(bint, index, 1)
|
|
||||||
|
|
||||||
|
return multibit_get(bint, index, 1)
|
||||||
|
|
||||||
def bit_set(bint: int, index: int, value: int = 1):
|
def bit_set(bint: int, index: int, value: int = 1):
|
||||||
"""Set bit at index to value 1 or 0, like set() or unset().
|
"""Set bit at index to value 1 or 0, like set() or unset().
|
||||||
|
|
||||||
>>> bit_set(15, 0, 0)
|
>>> bit_set(15, 0, 0)
|
||||||
14
|
14
|
||||||
>>> bit_set(15, 4, 1)
|
>>> bit_set(15, 4, 1)
|
||||||
31
|
31
|
||||||
>>> bit_set(31, 6, 0)
|
>>> bit_set(31, 6, 0)
|
||||||
31
|
31
|
||||||
>>> bit_set(31, 6, 3) is None
|
>>> bit_set(31, 6, 3) is None
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if value not in [0, 1]:
|
if value not in [0, 1]:
|
||||||
return None # error
|
return None # error
|
||||||
|
|
||||||
return multibit_set(bint, index, 1, value)
|
|
||||||
|
|
||||||
|
return multibit_set(bint, index, 1, value)
|
||||||
|
|
||||||
def bit_insert(bint: int, index: int, value: int = 1):
|
def bit_insert(bint: int, index: int, value: int = 1):
|
||||||
"""Insert bit value before index.
|
"""Insert bit value before index.
|
||||||
|
|
||||||
>>> bit_insert(15, 0, 0)
|
>>> bit_insert(15, 0, 0)
|
||||||
30
|
30
|
||||||
>>> bit_insert(15, 0, 1)
|
>>> bit_insert(15, 0, 1)
|
||||||
31
|
31
|
||||||
>>> bit_insert(15, 4, 1)
|
>>> bit_insert(15, 4, 1)
|
||||||
31
|
31
|
||||||
>>> bit_insert(31, 6, 0)
|
>>> bit_insert(31, 6, 0)
|
||||||
31
|
31
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if value not in [0, 1]:
|
if value not in [0, 1]:
|
||||||
return None # error
|
return None # error
|
||||||
|
|
||||||
return multibit_insert(bint, index, 1, value)
|
|
||||||
|
|
||||||
|
return multibit_insert(bint, index, 1, value)
|
||||||
|
|
||||||
def bit_remove(bint: int, index: int) -> int:
|
def bit_remove(bint: int, index: int) -> int:
|
||||||
"""Remove the bit at index from bint.
|
"""Remove the bit at index from bint.
|
||||||
|
|
||||||
>>> bit_remove(15, 0)
|
>>> bit_remove(15, 0)
|
||||||
7
|
7
|
||||||
>>> bit_remove(15, 1)
|
>>> bit_remove(15, 1)
|
||||||
7
|
7
|
||||||
>>> bit_remove(31, 4)
|
>>> bit_remove(31, 4)
|
||||||
15
|
15
|
||||||
>>> bit_remove(31, 6)
|
>>> bit_remove(31, 6)
|
||||||
31
|
31
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return multibit_remove(bint, index, 1)
|
|
||||||
|
|
||||||
|
return multibit_remove(bint, index, 1)
|
||||||
|
|
||||||
def multibit_get(bint: int, index: int, bit_len: int) -> int:
|
def multibit_get(bint: int, index: int, bit_len: int) -> int:
|
||||||
"""Get bit_len number of bits starting from index.
|
"""Get bit_len number of bits starting from index.
|
||||||
819 = 1100110011.
|
819 = 1100110011.
|
||||||
|
|
||||||
>>> multibit_get(0, 1, 1)
|
>>> multibit_get(0, 1, 1)
|
||||||
0
|
0
|
||||||
>>> multibit_get(15, 0, 3)
|
>>> multibit_get(15, 0, 3)
|
||||||
7
|
7
|
||||||
>>> multibit_get(819, 2, 4)
|
>>> multibit_get(819, 2, 4)
|
||||||
12
|
12
|
||||||
>>> multibit_get(819, 4, 6)
|
>>> multibit_get(819, 4, 6)
|
||||||
51
|
51
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if bint < 0 or index < 0 or bit_len < 0:
|
if bint < 0 or index < 0 or bit_len < 0:
|
||||||
return None # error
|
return None # error
|
||||||
|
|
||||||
return (bint >> index) & ((1 << bit_len) - 1)
|
|
||||||
|
|
||||||
|
return (bint >> index) & ((1 << bit_len) - 1)
|
||||||
|
|
||||||
def multibit_set(bint: int, index: int, bit_len: int, value: int) -> int:
|
def multibit_set(bint: int, index: int, bit_len: int, value: int) -> int:
|
||||||
"""Overlay bint at index with value for bit_len bits.
|
"""Overlay bint at index with value for bit_len bits.
|
||||||
|
|
||||||
>>> multibit_set(0, 1, 1, 0)
|
>>> multibit_set(0, 1, 1, 0)
|
||||||
0
|
0
|
||||||
>>> multibit_set(15, 0, 2, 0)
|
>>> multibit_set(15, 0, 2, 0)
|
||||||
12
|
12
|
||||||
>>> multibit_set(22, 0, 1, 1)
|
>>> multibit_set(22, 0, 1, 1)
|
||||||
23
|
23
|
||||||
>>> multibit_set(22, 2, 1, 0)
|
>>> multibit_set(22, 2, 1, 0)
|
||||||
18
|
18
|
||||||
>>> multibit_set(22, 2, 1, 3) is None
|
>>> multibit_set(22, 2, 1, 3) is None
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if bint < 0 or index < 0 or bit_len < 0 or value < 0:
|
if bint < 0 or index < 0 or bit_len < 0 or value < 0:
|
||||||
return None # error
|
return None # error
|
||||||
if bit_length(value) > bit_len:
|
if bit_length(value) > bit_len:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return ((((bint >> (index + bit_len)) << bit_len) | value) << index) | (
|
return ((((bint >> (index + bit_len)) << bit_len) | value) << index) | (
|
||||||
bint & (1 << index) - 1
|
bint & (1 << index) - 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def multibit_insert(bint: int, index: int, bit_len: int, value: int) -> int:
|
def multibit_insert(bint: int, index: int, bit_len: int, value: int) -> int:
|
||||||
"""Insert before index-th slot
|
"""Insert before index-th slot
|
||||||
|
|
||||||
>>> multibit_insert(0, 1, 1, 1)
|
>>> multibit_insert(0, 1, 1, 1)
|
||||||
2
|
2
|
||||||
>>> multibit_insert(15, 1, 2, 0)
|
>>> multibit_insert(15, 1, 2, 0)
|
||||||
57
|
57
|
||||||
>>> multibit_insert(22, 0, 1, 1)
|
>>> multibit_insert(22, 0, 1, 1)
|
||||||
45
|
45
|
||||||
>>> multibit_insert(22, 2, 1, 0)
|
>>> multibit_insert(22, 2, 1, 0)
|
||||||
42
|
42
|
||||||
>>> multibit_insert(22, 2, 1, 3) is None
|
>>> multibit_insert(22, 2, 1, 3) is None
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if bint < 0 or index < 0 or bit_len < 0 or value < 0:
|
if bint < 0 or index < 0 or bit_len < 0 or value < 0:
|
||||||
return None # error
|
return None # error
|
||||||
if bit_length(value) > bit_len:
|
if bit_length(value) > bit_len:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return ((((bint >> index) << bit_len) | value) << index) | bint & ((1 << index) - 1)
|
return ((((bint >> index) << bit_len) | value) << index) | bint & ((1 << index) - 1)
|
||||||
|
|
||||||
|
|
||||||
def multibit_remove(bint: int, index: int, bit_len: int) -> int:
|
def multibit_remove(bint: int, index: int, bit_len: int) -> int:
|
||||||
"""Remove bits in bint from index to index+bit_len.
|
"""Remove bits in bint from index to index+bit_len.
|
||||||
|
|
||||||
>>> multibit_remove(3, 1, 1)
|
>>> multibit_remove(3, 1, 1)
|
||||||
1
|
1
|
||||||
>>> multibit_remove(15, 1, 2)
|
>>> multibit_remove(15, 1, 2)
|
||||||
3
|
3
|
||||||
>>> multibit_remove(22, 0, 1)
|
>>> multibit_remove(22, 0, 1)
|
||||||
11
|
11
|
||||||
>>> multibit_remove(22, 2, 2)
|
>>> multibit_remove(22, 2, 2)
|
||||||
6
|
6
|
||||||
>>> multibit_remove(22, 2, 6)
|
>>> multibit_remove(22, 2, 6)
|
||||||
2
|
2
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if bint < 0 or index < 0:
|
if bint < 0 or index < 0:
|
||||||
return None # error
|
return None # error
|
||||||
|
|
||||||
return ((bint >> index + bit_len) << index) | bint & ((1 << index) - 1)
|
return ((bint >> index + bit_len) << index) | bint & ((1 << index) - 1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
import doctest
|
import doctest
|
||||||
|
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user