mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-06 10:31:29 +08:00
[pre-commit.ci] pre-commit autoupdate (#9543)
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.291 → v0.0.292](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.291...v0.0.292) - [github.com/codespell-project/codespell: v2.2.5 → v2.2.6](https://github.com/codespell-project/codespell/compare/v2.2.5...v2.2.6) - [github.com/tox-dev/pyproject-fmt: 1.1.0 → 1.2.0](https://github.com/tox-dev/pyproject-fmt/compare/1.1.0...1.2.0) * updating DIRECTORY.md * Fix typos in test_min_spanning_tree_prim.py * Fix typos * codespell --ignore-words-list=manuel --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com> Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
![66853113+pre-commit-ci[bot]@users.noreply.github.com](/assets/img/avatar_default.png)
committed by
GitHub

parent
60291738d2
commit
895dffb412
@ -1,5 +1,5 @@
|
||||
"""
|
||||
This is a pure Python implementation of the merge-insertion sort algorithm
|
||||
This is a pure Python implementation of the Graham scan algorithm
|
||||
Source: https://en.wikipedia.org/wiki/Graham_scan
|
||||
|
||||
For doctests run following command:
|
||||
@ -142,8 +142,8 @@ def graham_scan(points: list[tuple[int, int]]) -> list[tuple[int, int]]:
|
||||
stack.append(sorted_points[0])
|
||||
stack.append(sorted_points[1])
|
||||
stack.append(sorted_points[2])
|
||||
# In any ways, the first 3 points line are towards left.
|
||||
# Because we sort them the angle from minx, miny.
|
||||
# The first 3 points lines are towards the left because we sort them by their angle
|
||||
# from minx, miny.
|
||||
current_direction = Direction.left
|
||||
|
||||
for i in range(3, len(sorted_points)):
|
||||
@ -164,7 +164,7 @@ def graham_scan(points: list[tuple[int, int]]) -> list[tuple[int, int]]:
|
||||
break
|
||||
elif current_direction == Direction.right:
|
||||
# If the straight line is towards right,
|
||||
# every previous points on those straigh line is not convex hull.
|
||||
# every previous points on that straight line is not convex hull.
|
||||
stack.pop()
|
||||
if next_direction == Direction.right:
|
||||
stack.pop()
|
||||
|
@ -8,9 +8,9 @@ class LinearCongruentialGenerator:
|
||||
A pseudorandom number generator.
|
||||
"""
|
||||
|
||||
# The default value for **seed** is the result of a function call which is not
|
||||
# The default value for **seed** is the result of a function call, which is not
|
||||
# normally recommended and causes ruff to raise a B008 error. However, in this case,
|
||||
# it is accptable because `LinearCongruentialGenerator.__init__()` will only be
|
||||
# it is acceptable because `LinearCongruentialGenerator.__init__()` will only be
|
||||
# called once per instance and it ensures that each instance will generate a unique
|
||||
# sequence of numbers.
|
||||
|
||||
|
@ -63,11 +63,12 @@ def random_characters(chars_incl, i):
|
||||
pass # Put your code here...
|
||||
|
||||
|
||||
# This Will Check Whether A Given Password Is Strong Or Not
|
||||
# It Follows The Rule that Length Of Password Should Be At Least 8 Characters
|
||||
# And At Least 1 Lower, 1 Upper, 1 Number And 1 Special Character
|
||||
def is_strong_password(password: str, min_length: int = 8) -> bool:
|
||||
"""
|
||||
This will check whether a given password is strong or not. The password must be at
|
||||
least as long as the provided minimum length, and it must contain at least 1
|
||||
lowercase letter, 1 uppercase letter, 1 number and 1 special character.
|
||||
|
||||
>>> is_strong_password('Hwea7$2!')
|
||||
True
|
||||
>>> is_strong_password('Sh0r1')
|
||||
@ -81,7 +82,6 @@ def is_strong_password(password: str, min_length: int = 8) -> bool:
|
||||
"""
|
||||
|
||||
if len(password) < min_length:
|
||||
# Your Password must be at least 8 characters long
|
||||
return False
|
||||
|
||||
upper = any(char in ascii_uppercase for char in password)
|
||||
@ -90,8 +90,6 @@ def is_strong_password(password: str, min_length: int = 8) -> bool:
|
||||
spec_char = any(char in punctuation for char in password)
|
||||
|
||||
return upper and lower and num and spec_char
|
||||
# Passwords should contain UPPERCASE, lowerase
|
||||
# numbers, and special characters
|
||||
|
||||
|
||||
def main():
|
||||
@ -104,7 +102,7 @@ def main():
|
||||
"Alternative Password generated:",
|
||||
alternative_password_generator(chars_incl, length),
|
||||
)
|
||||
print("[If you are thinking of using this passsword, You better save it.]")
|
||||
print("[If you are thinking of using this password, You better save it.]")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Reference in New Issue
Block a user