mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
[pre-commit.ci] pre-commit autoupdate (#11322)
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.2.2 → v0.3.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.2...v0.3.2) - [github.com/pre-commit/mirrors-mypy: v1.8.0 → v1.9.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.8.0...v1.9.0) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
5f95d6f805
commit
bc8df6de31
|
@ -16,7 +16,7 @@ repos:
|
||||||
- id: auto-walrus
|
- id: auto-walrus
|
||||||
|
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.2.2
|
rev: v0.3.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
- id: ruff-format
|
- id: ruff-format
|
||||||
|
@ -47,7 +47,7 @@ repos:
|
||||||
- id: validate-pyproject
|
- id: validate-pyproject
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
rev: v1.8.0
|
rev: v1.9.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: mypy
|
- id: mypy
|
||||||
args:
|
args:
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
Time complexity: O(C(n,k)) which is O(n choose k) = O((n!/(k! * (n - k)!))),
|
Time complexity: O(C(n,k)) which is O(n choose k) = O((n!/(k! * (n - k)!))),
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from itertools import combinations
|
from itertools import combinations
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
Time complexity: O(n! * n),
|
Time complexity: O(n! * n),
|
||||||
where n denotes the length of the given sequence.
|
where n denotes the length of the given sequence.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ of the given sequence. We use backtracking to solve this problem.
|
||||||
Time complexity: O(2^n),
|
Time complexity: O(2^n),
|
||||||
where n denotes the length of the given sequence.
|
where n denotes the length of the given sequence.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
|
@ -7,6 +7,7 @@ if move is of maximizer return true else false
|
||||||
leaves of game tree is stored in scores[]
|
leaves of game tree is stored in scores[]
|
||||||
height is maximum height of Game tree
|
height is maximum height of Game tree
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
diagonal lines.
|
diagonal lines.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
solution = []
|
solution = []
|
||||||
|
|
|
@ -75,6 +75,7 @@ Applying these two formulas we can check if a queen in some position is being at
|
||||||
for another one or vice versa.
|
for another one or vice versa.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ function on the next column to see if it returns True. if yes, we
|
||||||
have solved the puzzle. else, we backtrack and place another number
|
have solved the puzzle. else, we backtrack and place another number
|
||||||
in that cell and repeat this process.
|
in that cell and repeat this process.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
Matrix = list[list[int]]
|
Matrix = list[list[int]]
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
Summation of the chosen numbers must be equal to given number M and one number
|
Summation of the chosen numbers must be equal to given number M and one number
|
||||||
can be used only once.
|
can be used only once.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ Following is the truth table of a NOR Gate:
|
||||||
Code provided by Akshaj Vishwanathan
|
Code provided by Akshaj Vishwanathan
|
||||||
https://www.geeksforgeeks.org/logic-gates-in-python
|
https://www.geeksforgeeks.org/logic-gates-in-python
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Conway's Game of Life implemented in Python.
|
Conway's Game of Life implemented in Python.
|
||||||
https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
|
https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
|
@ -27,6 +27,7 @@ Game-Of-Life Rules:
|
||||||
Any dead cell with exactly three live neighbours be-
|
Any dead cell with exactly three live neighbours be-
|
||||||
comes a live cell, as if by reproduction.
|
comes a live cell, as if by reproduction.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import random
|
import random
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ Examples for doctest:
|
||||||
>>> simulate(construct_highway(5, 2, -2), 3, 0, 2)
|
>>> simulate(construct_highway(5, 2, -2), 3, 0, 2)
|
||||||
[[0, -1, 0, -1, 0], [0, -1, 0, -1, -1], [0, -1, -1, 1, -1], [-1, 1, -1, 0, -1]]
|
[[0, -1, 0, -1, 0], [0, -1, 0, -1, -1], [0, -1, -1, 1, -1], [-1, 1, -1, 0, -1]]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from random import randint, random
|
from random import randint, random
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ corresponding to the character's position in the alphabet.
|
||||||
https://www.dcode.fr/letter-number-cipher
|
https://www.dcode.fr/letter-number-cipher
|
||||||
http://bestcodes.weebly.com/a1z26.html
|
http://bestcodes.weebly.com/a1z26.html
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""https://en.wikipedia.org/wiki/Atbash"""
|
"""https://en.wikipedia.org/wiki/Atbash"""
|
||||||
|
|
||||||
import string
|
import string
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Base32 encoding and decoding
|
||||||
|
|
||||||
https://en.wikipedia.org/wiki/Base32
|
https://en.wikipedia.org/wiki/Base32
|
||||||
"""
|
"""
|
||||||
|
|
||||||
B32_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
|
B32_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ Module includes:
|
||||||
|
|
||||||
Created by TrapinchO
|
Created by TrapinchO
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
RotorPositionT = tuple[int, int, int]
|
RotorPositionT = tuple[int, int, int]
|
||||||
|
|
|
@ -8,6 +8,7 @@ making it more secure than substitution ciphers.
|
||||||
|
|
||||||
http://practicalcryptography.com/ciphers/fractionated-morse-cipher/
|
http://practicalcryptography.com/ciphers/fractionated-morse-cipher/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import string
|
import string
|
||||||
|
|
||||||
MORSE_CODE_DICT = {
|
MORSE_CODE_DICT = {
|
||||||
|
|
|
@ -35,6 +35,7 @@ https://www.youtube.com/watch?v=kfmNeskzs2o
|
||||||
https://www.youtube.com/watch?v=4RhLNDqcjpA
|
https://www.youtube.com/watch?v=4RhLNDqcjpA
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import string
|
import string
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
|
|
|
@ -7,6 +7,7 @@ determine the order of character rearrangement.
|
||||||
|
|
||||||
For more info: https://www.nku.edu/~christensen/1402%20permutation%20ciphers.pdf
|
For more info: https://www.nku.edu/~christensen/1402%20permutation%20ciphers.pdf
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ Source: on page 3 of https://crypto.stanford.edu/~dabo/papers/RSA-survey.pdf
|
||||||
More readable source: https://www.di-mgt.com.au/rsa_factorize_n.html
|
More readable source: https://www.di-mgt.com.au/rsa_factorize_n.html
|
||||||
large number can take minutes to factor, therefore are not included in doctest.
|
large number can take minutes to factor, therefore are not included in doctest.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
- encrypt_file : boolean
|
- encrypt_file : boolean
|
||||||
- decrypt_file : boolean
|
- decrypt_file : boolean
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ without needing to store any additional data except the position of the first
|
||||||
original character. The BWT is thus a "free" method of improving the efficiency
|
original character. The BWT is thus a "free" method of improving the efficiency
|
||||||
of text compression algorithms, costing only some extra computation.
|
of text compression algorithms, costing only some extra computation.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import TypedDict
|
from typing import TypedDict
|
||||||
|
|
|
@ -28,7 +28,6 @@ Sources:
|
||||||
en.wikipedia.org/wiki/LZ77_and_LZ78
|
en.wikipedia.org/wiki/LZ77_and_LZ78
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
__version__ = "0.1"
|
__version__ = "0.1"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
https://en.wikipedia.org/wiki/Image_texture
|
https://en.wikipedia.org/wiki/Image_texture
|
||||||
https://en.wikipedia.org/wiki/Co-occurrence_matrix#Application_to_image_analysis
|
https://en.wikipedia.org/wiki/Co-occurrence_matrix#Application_to_image_analysis
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import imageio.v2 as imageio
|
import imageio.v2 as imageio
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Convert International System of Units (SI) and Binary prefixes
|
Convert International System of Units (SI) and Binary prefixes
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
|
@ -6,6 +6,7 @@ elements whose sum is equal to req_sum.
|
||||||
|
|
||||||
https://practice.geeksforgeeks.org/problems/count-pairs-with-given-sum5022/0
|
https://practice.geeksforgeeks.org/problems/count-pairs-with-given-sum5022/0
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from itertools import combinations
|
from itertools import combinations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
Wikipedia link: https://en.wikipedia.org/wiki/Range_minimum_query
|
Wikipedia link: https://en.wikipedia.org/wiki/Range_minimum_query
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from math import log2
|
from math import log2
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Please do not modify this file! It is published at https://norvig.com/sudoku.ht
|
||||||
only minimal changes to work with modern versions of Python. If you have improvements,
|
only minimal changes to work with modern versions of Python. If you have improvements,
|
||||||
please make them in a separate file.
|
please make them in a separate file.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ python3 -m doctest -v avl_tree.py
|
||||||
For testing run:
|
For testing run:
|
||||||
python avl_tree.py
|
python avl_tree.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
|
@ -88,6 +88,7 @@ True
|
||||||
>>> not t
|
>>> not t
|
||||||
True
|
True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterable, Iterator
|
from collections.abc import Iterable, Iterator
|
||||||
|
|
|
@ -7,6 +7,7 @@ python -m unittest binary_search_tree_recursive.py
|
||||||
To run an example:
|
To run an example:
|
||||||
python binary_search_tree_recursive.py
|
python binary_search_tree_recursive.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
|
@ -8,7 +8,6 @@ Python implementation:
|
||||||
frames that could be in memory is `n`
|
frames that could be in memory is `n`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
The diameter/width of a tree is defined as the number of nodes on the longest path
|
The diameter/width of a tree is defined as the number of nodes on the longest path
|
||||||
between two end nodes.
|
between two end nodes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
|
@ -10,6 +10,7 @@ https://www.geeksforgeeks.org/flatten-a-binary-tree-into-linked-list
|
||||||
Author: Arunkumar A
|
Author: Arunkumar A
|
||||||
Date: 04/09/2023
|
Date: 04/09/2023
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ https://bit.ly/46uB0a2
|
||||||
Author : Arunkumar
|
Author : Arunkumar
|
||||||
Date : 14th October 2023
|
Date : 14th October 2023
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -13,6 +13,7 @@ If n is the number of nodes in the tree then:
|
||||||
Runtime: O(n)
|
Runtime: O(n)
|
||||||
Space: O(1)
|
Space: O(1)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -3,6 +3,7 @@ Is a binary tree a sum tree where the value of every non-leaf node is equal to t
|
||||||
of the values of its left and right subtrees?
|
of the values of its left and right subtrees?
|
||||||
https://www.geeksforgeeks.org/check-if-a-given-binary-tree-is-sumtree
|
https://www.geeksforgeeks.org/check-if-a-given-binary-tree-is-sumtree
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -5,6 +5,7 @@ The rule for merging is that if two nodes overlap, then put the value sum of
|
||||||
both nodes to the new value of the merged node. Otherwise, the NOT null node
|
both nodes to the new value of the merged node. Otherwise, the NOT null node
|
||||||
will be used as the node of new tree.
|
will be used as the node of new tree.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Given the root of a binary tree, mirror the tree, and return its root.
|
||||||
|
|
||||||
Leetcode problem reference: https://leetcode.com/problems/mirror-binary-tree/
|
Leetcode problem reference: https://leetcode.com/problems/mirror-binary-tree/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -35,6 +35,7 @@ https://www.geeksforgeeks.org/segment-tree-efficient-implementation/
|
||||||
>>> st.query(0, 2)
|
>>> st.query(0, 2)
|
||||||
[1, 2, 3]
|
[1, 2, 3]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
|
@ -6,6 +6,7 @@ We will use the formula: t(n) = SUMMATION(i = 1 to n)t(i-1)t(n-i)
|
||||||
|
|
||||||
Further details at Wikipedia: https://en.wikipedia.org/wiki/Catalan_number
|
Further details at Wikipedia: https://en.wikipedia.org/wiki/Catalan_number
|
||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Our Contribution:
|
Our Contribution:
|
||||||
Basically we Create the 2 function:
|
Basically we Create the 2 function:
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
psf/black : true
|
psf/black : true
|
||||||
ruff : passed
|
ruff : passed
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -3,6 +3,7 @@ Segment_tree creates a segment tree with a given array and function,
|
||||||
allowing queries to be done later in log(N) time
|
allowing queries to be done later in log(N) time
|
||||||
function takes 2 values and returns a same type value
|
function takes 2 values and returns a same type value
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ Given the root of a binary tree, check whether it is a mirror of itself
|
||||||
|
|
||||||
Leetcode reference: https://leetcode.com/problems/symmetric-tree/
|
Leetcode reference: https://leetcode.com/problems/symmetric-tree/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
|
@ -7,6 +7,7 @@ such as the with segment trees or fenwick trees. You can read more about them he
|
||||||
2. https://www.youtube.com/watch?v=4aSv9PcecDw&t=811s
|
2. https://www.youtube.com/watch?v=4aSv9PcecDw&t=811s
|
||||||
3. https://www.youtube.com/watch?v=CybAgVF-MMc&t=1178s
|
3. https://www.youtube.com/watch?v=CybAgVF-MMc&t=1178s
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
test_array = [2, 1, 4, 5, 6, 0, 8, 9, 1, 2, 0, 6, 4, 2, 0, 6, 5, 3, 2, 7]
|
test_array = [2, 1, 4, 5, 6, 0, 8, 9, 1, 2, 0, 6, 4, 2, 0, 6, 5, 3, 2, 7]
|
||||||
|
|
|
@ -58,6 +58,7 @@ The probability decreases with the number of bits in the bitarray.
|
||||||
>>> bloom.bitstring
|
>>> bloom.bitstring
|
||||||
'01100101'
|
'01100101'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from hashlib import md5, sha256
|
from hashlib import md5, sha256
|
||||||
|
|
||||||
HASH_FUNCTIONS = (sha256, md5)
|
HASH_FUNCTIONS = (sha256, md5)
|
||||||
|
|
|
@ -11,6 +11,7 @@ Where hash1() and hash2() are hash functions and TABLE_SIZE is size of hash tabl
|
||||||
|
|
||||||
Reference: https://en.wikipedia.org/wiki/Double_hashing
|
Reference: https://en.wikipedia.org/wiki/Double_hashing
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .hash_table import HashTable
|
from .hash_table import HashTable
|
||||||
from .number_theory.prime_numbers import is_prime, next_prime
|
from .number_theory.prime_numbers import is_prime, next_prime
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ Another hash map implementation, with a good explanation.
|
||||||
Modern Dictionaries by Raymond Hettinger
|
Modern Dictionaries by Raymond Hettinger
|
||||||
https://www.youtube.com/watch?v=p33CVV29OG8
|
https://www.youtube.com/watch?v=p33CVV29OG8
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Iterator, MutableMapping
|
from collections.abc import Iterator, MutableMapping
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Generic, TypeVar
|
from typing import Generic, TypeVar
|
||||||
|
|
|
@ -5,6 +5,7 @@ Nodes contain data and also may link to other nodes:
|
||||||
head node gives us access of the complete list
|
head node gives us access of the complete list
|
||||||
- Last node: points to null
|
- Last node: points to null
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Algorithm that merges two sorted linked lists into one sorted linked list.
|
Algorithm that merges two sorted linked lists into one sorted linked list.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterable, Iterator
|
from collections.abc import Iterable, Iterator
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Based on "Skip Lists: A Probabilistic Alternative to Balanced Trees" by William Pugh
|
Based on "Skip Lists: A Probabilistic Alternative to Balanced Trees" by William Pugh
|
||||||
https://epaperpress.com/sortsearch/download/skiplist.pdf
|
https://epaperpress.com/sortsearch/download/skiplist.pdf
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from random import random
|
from random import random
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implementation of double ended queue.
|
Implementation of double ended queue.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""A Queue using a linked list like structure"""
|
"""A Queue using a linked list like structure"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Queue represented by a pseudo stack (represented by a list with pop and append)"""
|
"""Queue represented by a pseudo stack (represented by a list with pop and append)"""
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ RULE 5: When the entire infix expression has been scanned, the value left on
|
||||||
|
|
||||||
NOTE: It only works with whole numbers.
|
NOTE: It only works with whole numbers.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__author__ = "Alexander Joslin"
|
__author__ = "Alexander Joslin"
|
||||||
|
|
||||||
import operator as op
|
import operator as op
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""A Stack using a linked list like structure"""
|
"""A Stack using a linked list like structure"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implemented an algorithm using opencv to convert a colored image into its negative
|
Implemented an algorithm using opencv to convert a colored image into its negative
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implementation Burke's algorithm (dithering)
|
Implementation Burke's algorithm (dithering)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ Inputs:
|
||||||
Output:
|
Output:
|
||||||
img:A 2d zero padded image with values in between 0 and 1
|
img:A 2d zero padded image with values in between 0 and 1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import math
|
import math
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implementation of gaussian filter algorithm
|
Implementation of gaussian filter algorithm
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from itertools import product
|
from itertools import product
|
||||||
|
|
||||||
from cv2 import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
|
from cv2 import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implementation of median filter algorithm
|
Implementation of median filter algorithm
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from cv2 import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
|
from cv2 import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey
|
||||||
from numpy import divide, int8, multiply, ravel, sort, zeros_like
|
from numpy import divide, int8, multiply, ravel, sort, zeros_like
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Created on Fri Sep 28 15:22:29 2018
|
||||||
|
|
||||||
@author: Binish125
|
@author: Binish125
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Multiple image resizing techniques"""
|
"""Multiple image resizing techniques"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Implemented an algorithm using opencv to tone an image with sepia technique
|
Implemented an algorithm using opencv to tone an image with sepia technique
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
from cv2 import destroyAllWindows, imread, imshow, waitKey
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
PyTest's for Digital Image Processing
|
PyTest's for Digital Image Processing
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from cv2 import COLOR_BGR2GRAY, cvtColor, imread
|
from cv2 import COLOR_BGR2GRAY, cvtColor, imread
|
||||||
from numpy import array, uint8
|
from numpy import array, uint8
|
||||||
|
|
|
@ -12,6 +12,7 @@ There are other several other algorithms for the convex hull problem
|
||||||
which have not been implemented here, yet.
|
which have not been implemented here, yet.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
|
|
|
@ -8,6 +8,7 @@ This is a divide and conquer algorithm that can find a solution in O(n) time.
|
||||||
For more information of this algorithm:
|
For more information of this algorithm:
|
||||||
https://web.stanford.edu/class/archive/cs/cs161/cs161.1138/lectures/08/Small08.pdf
|
https://web.stanford.edu/class/archive/cs/cs161/cs161.1138/lectures/08/Small08.pdf
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from random import choice
|
from random import choice
|
||||||
|
|
|
@ -6,6 +6,7 @@ maximum sum within a given array of numbers. For example, given the array
|
||||||
|
|
||||||
This divide-and-conquer algorithm finds the maximum subarray in O(n log n) time.
|
This divide-and-conquer algorithm finds the maximum subarray in O(n log n) time.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
|
@ -7,6 +7,7 @@ to find the maximum of the array.
|
||||||
(From Kleinberg and Tardos. Algorithm Design.
|
(From Kleinberg and Tardos. Algorithm Design.
|
||||||
Addison Wesley 2006: Chapter 5 Solved Exercise 1)
|
Addison Wesley 2006: Chapter 5 Solved Exercise 1)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Program to list all the ways a target string can be
|
Program to list all the ways a target string can be
|
||||||
constructed from the given list of substrings
|
constructed from the given list of substrings
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ We have N tasks and M people. Each person in M can do only certain of these task
|
||||||
a person can do only one task and a task is performed only by one person.
|
a person can do only one task and a task is performed only by one person.
|
||||||
Find the total no of ways in which the tasks can be distributed.
|
Find the total no of ways in which the tasks can be distributed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
This program calculates the nth Fibonacci number in O(log(n)).
|
This program calculates the nth Fibonacci number in O(log(n)).
|
||||||
It's possible to calculate F(1_000_000) in less than a second.
|
It's possible to calculate F(1_000_000) in less than a second.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
|
@ -5,6 +5,7 @@ You are given a bitmask m and you want to efficiently iterate through all of
|
||||||
its submasks. The mask s is submask of m if only bits that were included in
|
its submasks. The mask s is submask of m if only bits that were included in
|
||||||
bitmask are set
|
bitmask are set
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ return it.
|
||||||
Example: [10, 22, 9, 33, 21, 50, 41, 60, 80] as input will return
|
Example: [10, 22, 9, 33, 21, 50, 41, 60, 80] as input will return
|
||||||
[10, 22, 33, 41, 60, 80] as output
|
[10, 22, 33, 41, 60, 80] as output
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ Example input:
|
||||||
arr = [40, 20, 30, 10, 30]
|
arr = [40, 20, 30, 10, 30]
|
||||||
output: 26000
|
output: 26000
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from functools import cache
|
from functools import cache
|
||||||
|
|
|
@ -9,6 +9,7 @@ subarray sum problem in O(n) time and O(1) space.
|
||||||
|
|
||||||
Reference: https://en.wikipedia.org/wiki/Maximum_subarray_problem
|
Reference: https://en.wikipedia.org/wiki/Maximum_subarray_problem
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ represented as τ (tau). By using this RC-timeconstant we can find the voltage
|
||||||
time 't' from the initiation of charging a capacitor with the help of the exponential
|
time 't' from the initiation of charging a capacitor with the help of the exponential
|
||||||
function containing RC. Both at charging and discharging of a capacitor.
|
function containing RC. Both at charging and discharging of a capacitor.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from math import exp # value of exp = 2.718281828459…
|
from math import exp # value of exp = 2.718281828459…
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ when inductor is connected across 'AC' potential source. It starts to store the
|
||||||
in its 'magnetic field'.with the help 'RL-time-constant' we can find current at any time
|
in its 'magnetic field'.with the help 'RL-time-constant' we can find current at any time
|
||||||
in inductor while it is charging.
|
in inductor while it is charging.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from math import exp # value of exp = 2.718281828459…
|
from math import exp # value of exp = 2.718281828459…
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ Sources :
|
||||||
https://learn.parallax.com/support/reference/resistor-color-codes
|
https://learn.parallax.com/support/reference/resistor-color-codes
|
||||||
https://byjus.com/physics/resistor-colour-codes/
|
https://byjus.com/physics/resistor-colour-codes/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
valid_colors: list = [
|
valid_colors: list = [
|
||||||
"Black",
|
"Black",
|
||||||
"Brown",
|
"Brown",
|
||||||
|
|
|
@ -6,6 +6,7 @@ and identify trends.
|
||||||
|
|
||||||
Reference: https://en.wikipedia.org/wiki/Moving_average
|
Reference: https://en.wikipedia.org/wiki/Moving_average
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from collections.abc import Sequence
|
from collections.abc import Sequence
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ Requirements (pip):
|
||||||
- numpy
|
- numpy
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import matplotlib.pyplot as plt # type: ignore
|
import matplotlib.pyplot as plt # type: ignore
|
||||||
|
|
|
@ -15,7 +15,6 @@ the boundary of the Mandelbrot set a fractal curve.
|
||||||
(see also https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set )
|
(see also https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set )
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
import colorsys
|
import colorsys
|
||||||
|
|
||||||
from PIL import Image # type: ignore
|
from PIL import Image # type: ignore
|
||||||
|
|
|
@ -22,6 +22,7 @@ Credits:
|
||||||
This code was written by editing the code from
|
This code was written by editing the code from
|
||||||
https://www.riannetrujillo.com/blog/python-fractal/
|
https://www.riannetrujillo.com/blog/python-fractal/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import turtle
|
import turtle
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ Reference: shorturl.at/exHM7
|
||||||
|
|
||||||
# Author: Swayam Singh (https://github.com/practice404)
|
# Author: Swayam Singh (https://github.com/practice404)
|
||||||
|
|
||||||
|
|
||||||
from queue import PriorityQueue
|
from queue import PriorityQueue
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
https://en.wikipedia.org/wiki/Bidirectional_search
|
https://en.wikipedia.org/wiki/Bidirectional_search
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
https://en.wikipedia.org/wiki/Bidirectional_search
|
https://en.wikipedia.org/wiki/Bidirectional_search
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
Details: https://en.wikipedia.org/wiki/Bor%C5%AFvka%27s_algorithm
|
Details: https://en.wikipedia.org/wiki/Bor%C5%AFvka%27s_algorithm
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
"""Author: OMKAR PATHAK"""
|
"""Author: OMKAR PATHAK"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
|
|
@ -12,6 +12,7 @@ while Q is non-empty:
|
||||||
mark w as explored
|
mark w as explored
|
||||||
add w to Q (at the end)
|
add w to Q (at the end)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections import deque
|
from collections import deque
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""Breath First Search (BFS) can be used when finding the shortest path
|
"""Breath First Search (BFS) can be used when finding the shortest path
|
||||||
from a given source node to a target node in an unweighted graph.
|
from a given source node to a target node in an unweighted graph.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
graph = {
|
graph = {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
Manual test:
|
Manual test:
|
||||||
python bfs_shortest_path.py
|
python bfs_shortest_path.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
demo_graph = {
|
demo_graph = {
|
||||||
"A": ["B", "C", "E"],
|
"A": ["B", "C", "E"],
|
||||||
"B": ["A", "D", "E"],
|
"B": ["A", "D", "E"],
|
||||||
|
|
|
@ -3,6 +3,7 @@ Finding the shortest path in 0-1-graph in O(E + V) which is faster than dijkstra
|
||||||
0-1-graph is the weighted graph with the weights equal to 0 or 1.
|
0-1-graph is the weighted graph with the weights equal to 0 or 1.
|
||||||
Link: https://codeforces.com/blog/entry/22276
|
Link: https://codeforces.com/blog/entry/22276
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections import deque
|
from collections import deque
|
||||||
|
|
|
@ -9,6 +9,7 @@ Return a deep copy (clone) of the graph.
|
||||||
Each node in the graph contains a value (int) and a list (List[Node]) of its
|
Each node in the graph contains a value (int) and a list (List[Node]) of its
|
||||||
neighbors.
|
neighbors.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Non recursive implementation of a DFS algorithm."""
|
"""Non recursive implementation of a DFS algorithm."""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ only the distance between previous vertex and current vertex but the entire
|
||||||
distance between each vertex that makes up the path from start vertex to target
|
distance between each vertex that makes up the path from start vertex to target
|
||||||
vertex.
|
vertex.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import heapq
|
import heapq
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ Constraints
|
||||||
Note: The tree input will be such that it can always be decomposed into
|
Note: The tree input will be such that it can always be decomposed into
|
||||||
components containing an even number of nodes.
|
components containing an even number of nodes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ frequent subgraphs and maximum common subgraphs.
|
||||||
|
|
||||||
URL: https://www.researchgate.net/publication/235255851
|
URL: https://www.researchgate.net/publication/235255851
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# fmt: off
|
# fmt: off
|
||||||
edge_array = [
|
edge_array = [
|
||||||
['ab-e1', 'ac-e3', 'ad-e5', 'bc-e4', 'bd-e2', 'be-e6', 'bh-e12', 'cd-e2', 'ce-e4',
|
['ab-e1', 'ac-e3', 'ad-e5', 'bc-e4', 'bd-e2', 'be-e6', 'bh-e12', 'cd-e2', 'ce-e4',
|
||||||
|
|
|
@ -15,6 +15,7 @@ Potential Future Ideas:
|
||||||
- Make edge weights and vertex values customizable to store whatever the client wants
|
- Make edge weights and vertex values customizable to store whatever the client wants
|
||||||
- Support multigraph functionality if the client wants it
|
- Support multigraph functionality if the client wants it
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
|
@ -15,6 +15,7 @@ Potential Future Ideas:
|
||||||
- Make edge weights and vertex values customizable to store whatever the client wants
|
- Make edge weights and vertex values customizable to store whatever the client wants
|
||||||
- Support multigraph functionality if the client wants it
|
- Support multigraph functionality if the client wants it
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user