Skip to content

Commit 71910b4

Browse files
Merge branch 'master' into feat/recursive-list-imply
2 parents 023e645 + 060fd8e commit 71910b4

File tree

5 files changed

+49
-42
lines changed

5 files changed

+49
-42
lines changed

.github/workflows/sphinx.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
- run: uv sync --group=docs
3535
- uses: actions/configure-pages@v5
3636
- run: uv run sphinx-build -c docs . docs/_build/html
37-
- uses: actions/upload-pages-artifact@v3
37+
- uses: actions/upload-pages-artifact@v4
3838
with:
3939
path: docs/_build/html
4040

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
<a href="https://github.com/pre-commit/pre-commit">
2828
<img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=flat-square" height="20" alt="pre-commit">
2929
</a>
30-
<a href="https://github.com/psf/black">
31-
<img src="https://img.shields.io/static/v1?label=code%20style&message=black&color=black&style=flat-square" height="20" alt="code style: black">
30+
<a href="https://docs.astral.sh/ruff/formatter/">
31+
<img src="https://img.shields.io/static/v1?label=code%20style&message=ruff&color=black&style=flat-square" height="20" alt="code style: black">
3232
</a>
3333
<!-- Short description: -->
3434
<h3>All algorithms implemented in Python - for education</h3>

bit_manipulation/reverse_bits.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,83 @@
11
def get_reverse_bit_string(number: int) -> str:
22
"""
3-
return the bit string of an integer
3+
Return the reverse bit string of a 32 bit integer
44
55
>>> get_reverse_bit_string(9)
66
'10010000000000000000000000000000'
77
>>> get_reverse_bit_string(43)
88
'11010100000000000000000000000000'
99
>>> get_reverse_bit_string(2873)
1010
'10011100110100000000000000000000'
11+
>>> get_reverse_bit_string(2550136832)
12+
'00000000000000000000000000011001'
1113
>>> get_reverse_bit_string("this is not a number")
1214
Traceback (most recent call last):
1315
...
14-
TypeError: operation can not be conducted on a object of type str
16+
TypeError: operation can not be conducted on an object of type str
1517
"""
1618
if not isinstance(number, int):
1719
msg = (
18-
"operation can not be conducted on a object of type "
20+
"operation can not be conducted on an object of type "
1921
f"{type(number).__name__}"
2022
)
2123
raise TypeError(msg)
2224
bit_string = ""
2325
for _ in range(32):
2426
bit_string += str(number % 2)
25-
number = number >> 1
27+
number >>= 1
2628
return bit_string
2729

2830

29-
def reverse_bit(number: int) -> str:
31+
def reverse_bit(number: int) -> int:
3032
"""
31-
Take in an 32 bit integer, reverse its bits,
32-
return a string of reverse bits
33-
34-
result of a reverse_bit and operation on the integer provided.
33+
Take in a 32 bit integer, reverse its bits, return a 32 bit integer result
3534
3635
>>> reverse_bit(25)
37-
'00000000000000000000000000011001'
36+
2550136832
3837
>>> reverse_bit(37)
39-
'00000000000000000000000000100101'
38+
2751463424
4039
>>> reverse_bit(21)
41-
'00000000000000000000000000010101'
40+
2818572288
4241
>>> reverse_bit(58)
43-
'00000000000000000000000000111010'
42+
1543503872
4443
>>> reverse_bit(0)
45-
'00000000000000000000000000000000'
44+
0
4645
>>> reverse_bit(256)
47-
'00000000000000000000000100000000'
46+
8388608
47+
>>> reverse_bit(2550136832)
48+
25
4849
>>> reverse_bit(-1)
4950
Traceback (most recent call last):
5051
...
51-
ValueError: the value of input must be positive
52+
ValueError: The value of input must be non-negative
5253
5354
>>> reverse_bit(1.1)
5455
Traceback (most recent call last):
5556
...
56-
TypeError: Input value must be a 'int' type
57+
TypeError: Input value must be an 'int' type
5758
5859
>>> reverse_bit("0")
5960
Traceback (most recent call last):
6061
...
61-
TypeError: '<' not supported between instances of 'str' and 'int'
62+
TypeError: Input value must be an 'int' type
6263
"""
64+
if not isinstance(number, int):
65+
raise TypeError("Input value must be an 'int' type")
6366
if number < 0:
64-
raise ValueError("the value of input must be positive")
65-
elif isinstance(number, float):
66-
raise TypeError("Input value must be a 'int' type")
67-
elif isinstance(number, str):
68-
raise TypeError("'<' not supported between instances of 'str' and 'int'")
67+
raise ValueError("The value of input must be non-negative")
68+
6969
result = 0
70-
# iterator over [1 to 32],since we are dealing with 32 bit integer
71-
for _ in range(1, 33):
70+
# iterator over [0 to 31], since we are dealing with a 32 bit integer
71+
for _ in range(32):
7272
# left shift the bits by unity
73-
result = result << 1
73+
result <<= 1
7474
# get the end bit
75-
end_bit = number % 2
75+
end_bit = number & 1
7676
# right shift the bits by unity
77-
number = number >> 1
78-
# add that bit to our ans
79-
result = result | end_bit
80-
return get_reverse_bit_string(result)
77+
number >>= 1
78+
# add that bit to our answer
79+
result |= end_bit
80+
return result
8181

8282

8383
if __name__ == "__main__":

scripts/build_directory_md.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,20 @@ def good_file_paths(top_dir: str = ".") -> Iterator[str]:
1818
yield os.path.join(dir_path, filename).lstrip("./")
1919

2020

21-
def md_prefix(i):
22-
return f"{i * ' '}*" if i else "\n##"
21+
def md_prefix(indent: int) -> str:
22+
"""
23+
Markdown prefix based on indent for bullet points
24+
25+
>>> md_prefix(0)
26+
'\\n##'
27+
>>> md_prefix(1)
28+
' *'
29+
>>> md_prefix(2)
30+
' *'
31+
>>> md_prefix(3)
32+
' *'
33+
"""
34+
return f"{indent * ' '}*" if indent else "\n##"
2335

2436

2537
def print_path(old_path: str, new_path: str) -> str:

strings/capitalize.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
from string import ascii_lowercase, ascii_uppercase
2-
3-
41
def capitalize(sentence: str) -> str:
52
"""
63
Capitalizes the first letter of a sentence or word.
@@ -19,11 +16,9 @@ def capitalize(sentence: str) -> str:
1916
if not sentence:
2017
return ""
2118

22-
# Create a dictionary that maps lowercase letters to uppercase letters
2319
# Capitalize the first character if it's a lowercase letter
2420
# Concatenate the capitalized character with the rest of the string
25-
lower_to_upper = dict(zip(ascii_lowercase, ascii_uppercase))
26-
return lower_to_upper.get(sentence[0], sentence[0]) + sentence[1:]
21+
return sentence[0].upper() + sentence[1:]
2722

2823

2924
if __name__ == "__main__":

0 commit comments

Comments
 (0)