-
-
Notifications
You must be signed in to change notification settings - Fork 46.6k
Largest power of 2 #9464
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Largest power of 2 #9464
Changes from 11 commits
2d5e8f2
8be0479
71e4afb
81d29a0
23af638
67dc7d9
a8be9c2
923843b
834faa0
24a040a
d0012f9
7aef7b7
2b2cb63
2864ef8
6f9b63b
e6ea6a8
b1ac1f1
6cbd413
1c8f843
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
def largest_power_of_2(number: int) -> int: | ||
""" | ||
returns the largest power of 2 that is less than | ||
or equal to the given number | ||
The way this works is that we shift the binary form of the number | ||
to the right until we reach the last set bit | ||
Using the number of times we had to shift to find the last set bit, | ||
we find the 2**(no of times shifted) which will be the ans | ||
>>> largest_power_of_2(0) | ||
0 | ||
>>> largest_power_of_2(1) | ||
1 | ||
>>> largest_power_of_2(3) | ||
2 | ||
>>> largest_power_of_2(15) | ||
8 | ||
>>> largest_power_of_2(99) | ||
64 | ||
>>> largest_power_of_2(178) | ||
128 | ||
>>> largest_power_of_2(999999) | ||
524288 | ||
|
||
""" | ||
|
||
last_set_bit = 0 | ||
while number: | ||
last_set_bit += 1 | ||
number >>= 1 | ||
if last_set_bit == 0: | ||
return 0 | ||
return 2 ** (last_set_bit - 1) | ||
|
||
|
||
if __name__ == "__main__": | ||
import doctest | ||
|
||
doctest.testmod() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
if last_set_bit==0: | ||
# return 0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An error occurred while parsing the file: Traceback (most recent call last):
File "/opt/render/project/src/algorithms_keeper/parser/python_parser.py", line 146, in parse
reports = lint_file(
^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 2:1.
parser error: error at 3:0: expected INDENT
# return 0
^ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An error occurred while parsing the file: Traceback (most recent call last):
File "/opt/render/project/src/algorithms_keeper/parser/python_parser.py", line 146, in parse
reports = lint_file(
^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 2:1.
parser error: error at 3:0: expected INDENT
# return 0
^ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An error occurred while parsing the file: Traceback (most recent call last):
File "/opt/render/project/src/algorithms_keeper/parser/python_parser.py", line 146, in parse
reports = lint_file(
^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 2:1.
parser error: error at 3:0: expected INDENT
# return 0
^ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An error occurred while parsing the file: Traceback (most recent call last):
File "/opt/render/project/src/algorithms_keeper/parser/python_parser.py", line 146, in parse
reports = lint_file(
^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 2:1.
parser error: error at 3:0: expected INDENT
# return 0
^ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. An error occurred while parsing the file: Traceback (most recent call last):
File "/opt/render/project/src/algorithms_keeper/parser/python_parser.py", line 146, in parse
reports = lint_file(
^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 2:1.
parser error: error at 3:0: expected INDENT
# return 0
^ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As there is no test file in this pull request nor any test function or class in the file
bit_manipulation/largest_power_of_2.py
, please provide doctest for the functionlargest_power_of_2