Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Numerous significant improvements Beta #12811

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

Open
wants to merge 78 commits into
base: master
Choose a base branch
from

Conversation

lighting9999
Copy link
Contributor

@lighting9999 lighting9999 commented Jun 28, 2025

Describe your change:

butterfly_pattern.py

  • Add doctests

shuffled_shift_cipher.py

  • Fixed negative modulus in decrypt: Changed (position - self.__shift_key) % -len(self.__key_list) to (position - self.__shift_key) % key_len
  • Fixed passcode type consistency: Changed __passcode_creator return type from list to string
  • Optimized __str__ method: Simplified return "".join(self.__passcode) to return self.__passcode
  • Fixed character appending: Changed temp_list.extend(i) to temp_list.append(i)
  • Added length caching: Introduced key_len = len(self.__key_list) in encrypt/decrypt
  • Improved variable naming: Renamed loop variable i to char for readability
  • Fixed negative shift handling: Ensured modulus uses positive length consistently
  • Corrected passcode generation: Added ''.join() to convert list to string
  • Removed redundant conversion: Eliminated unnecessary list-to-string conversion
  • Fixed doctest compatibility: Maintained backward-compatible encryption/decryption behavior

pascal_triangle.py

  • Replaced Listlist everywhere
  • Changed List[List[int]]list[list[int]]
  • Removed typing module import
  • Changed Callable import source: typingcollections.abc
  • Alphabetized imports: collections.abc before timeit
  • Fixed bracket issues in list comprehensions
  • Added missing closing brackets
  • Removed redundant parentheses
  • Simplified elifif where possible
  • Renamed variables:
    above_to_left_eltabove_left
    above_to_right_eltabove_right
  • Improved spacing around operators

sum_of_digits.py

  • Moved imports to top:
from collections.abc import Callable
from timeit import timeit
  • Fixed recursive function:
return n if n < 10 else n % 10 + sum_of_digits_recursion(n // 10)

minimum_spanning_tree_kruskal2.py

  • Removed Generic and TypeVar imports since they're no longer needed
  • Updated class declarations to use new-style generics with [T]
  • Removed the top-level T = TypeVar("T") as it's now redundant

lru_cache.py

  • Removed top-level TypeVar definitions for T and U since they're no longer needed
  • Converted class definitions to use new type parameter syntax:
    • class DoubleLinkedListNode(Generic[T, U])class DoubleLinkedListNode[T, U]
    • class DoubleLinkedList(Generic[T, U])class DoubleLinkedList[T, U]
    • class LRUCache(Generic[T, U])class LRUCache[T, U]

lfu_cache.py

  • UpdatedDoubleLinkedListNode,DoubleLinkedList,andLFUCache to use modern Python 3.12+ generic syntax.
  • Replaced class ClassName(Generic[T, U]) with cleaner class ClassName[T, U].
  • Maintained identical functionality while fixing flake8 UP046 errors.

stack_with_doubly_linked_list.py

  • Removed the Generic import and TypeVar declaration
  • Updated class definitions to use the new [T] syntax instead of subclassing Generic[T]

skew_heap.py

  • Fixed "Unsupported left operand type" error by removing generic type parameter T
  • Replaced T with Any type throughout the implementation
  • Added customizable comparison function parameter comp to constructor
  • Default comparison remains lambda a, b: a < b for min-heap behavior
  • Passed comparison function to all merge operations
  • Updated type annotations to modern X | None syntax
  • Organized imports according to Python standards
  • Maintained all original functionality and doctests
  • Enabled both min-heap and max-heap configurations
  • Preserved O(log n) time complexity for operations
  • Removed unused imports and cleaned up type hints

test_digital_image_processing.py

  • Replaced array() with np.array(): Due to removal of from numpy import array
  • Replaced uint8 with np.uint8: Due to removal of from numpy import uint8

minimum_spanning_tree_prims2.py

  • Fixed missing colon in for loop syntax
  • Changed Optional[T] to T | None
  • Replaced dict comprehensions with dict.fromkeys()
  • Corrected weight calculation in Prim's algorithm
  • Optimized priority queue initialization
  • Added precise type annotations
  • Improved neighbor iteration using items()
  • Updated docstring tests and expected results
  • Fixed import ordering issues
  • Modernize the code to use Python 3.12's native generics syntax (PEP 695)
  • Remove outdated typing module dependencies

matrix_class.py

  • Fixed __hash__ type conflict with base class
  • Added proper type annotations throughout
  • Resolved float/int type inconsistencies
  • Corrected indentation issues (E111)
  • Fixed line length violations (E501)
  • Resolved syntax errors from improper indentation
  • Added @final decorator to mark class as unhashable
  • Removed explicit __hash__ assignment
  • Replaced integer values 0/1 with 0.0/1.0 in identity matrix
  • Added tolerance check (1e-10) for determinant comparison
  • Removed unnecessary int() conversion
  • Changed all element types from int to float
  • Used modern union syntax (X | Y) instead of Union
  • Added proper return type declarations
  • Replaced list concatenation with unpacking in:
    • add_row() method
    • add_column() method
  • Leveraged @final decorator
  • Utilized __future__ annotations
  • Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • Add or change doctests? -- Note: Please avoid changing both code and tests in a single pull request.
  • Documentation change?

Checklist:

  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized.
  • I know that pull requests will not be merged if they fail the automated tests.
  • This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
  • All new Python files are placed inside an existing directory.
  • All filenames are in all lowercase characters with no spaces or dashes.
  • All functions and variable names follow Python naming conventions.
  • All function parameters and return values are annotated with Python type hints.
  • All functions have doctests that pass the automated testing.
  • All new algorithms include at least one URL that points to Wikipedia or another similar explanation.
  • If this pull request resolves one or more open issues then the description above includes the issue number(s) with a closing keyword: "Fixes #ISSUE-NUMBER".

@algorithms-keeper algorithms-keeper bot added the tests are failing Do not merge until tests pass label Jun 28, 2025
@algorithms-keeper algorithms-keeper bot added the awaiting reviews This PR is ready to be reviewed label Jun 28, 2025
@lighting9999 lighting9999 changed the title Numerous significant improvements(Beta and view) Numerous significant improvements Beta Jun 28, 2025
lighting9999 and others added 30 commits June 29, 2025 12:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting reviews This PR is ready to be reviewed tests are failing Do not merge until tests pass
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant