mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-05 17:34:49 +08:00
Raise error not string (#7945)
* ci: Add `B023` to `.flake8` ignores * refactor: Return `bool`/raise Exception * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * revert: Remove previous branch commit * Update data_structures/binary_tree/segment_tree_other.py Co-authored-by: Christian Clauss <cclauss@me.com> * feat: Apply `__repr__` changes * chore: Fix failing tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update data_structures/binary_tree/segment_tree_other.py Co-authored-by: Christian Clauss <cclauss@me.com> * test: Fix doctests * random.choice(population_score[:N_SELECTED])[0] * Update basic_string.py Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:

committed by
GitHub

parent
51708530b6
commit
daa1c7529a
@ -16,40 +16,36 @@ class SegmentTreeNode:
|
||||
self.left = left
|
||||
self.right = right
|
||||
|
||||
def __str__(self):
|
||||
return f"val: {self.val}, start: {self.start}, end: {self.end}"
|
||||
def __repr__(self):
|
||||
return f"SegmentTreeNode(start={self.start}, end={self.end}, val={self.val})"
|
||||
|
||||
|
||||
class SegmentTree:
|
||||
"""
|
||||
>>> import operator
|
||||
>>> num_arr = SegmentTree([2, 1, 5, 3, 4], operator.add)
|
||||
>>> for node in num_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 15, start: 0, end: 4
|
||||
val: 8, start: 0, end: 2
|
||||
val: 7, start: 3, end: 4
|
||||
val: 3, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 1, start: 1, end: 1
|
||||
>>> tuple(num_arr.traverse()) # doctest: +NORMALIZE_WHITESPACE
|
||||
(SegmentTreeNode(start=0, end=4, val=15),
|
||||
SegmentTreeNode(start=0, end=2, val=8),
|
||||
SegmentTreeNode(start=3, end=4, val=7),
|
||||
SegmentTreeNode(start=0, end=1, val=3),
|
||||
SegmentTreeNode(start=2, end=2, val=5),
|
||||
SegmentTreeNode(start=3, end=3, val=3),
|
||||
SegmentTreeNode(start=4, end=4, val=4),
|
||||
SegmentTreeNode(start=0, end=0, val=2),
|
||||
SegmentTreeNode(start=1, end=1, val=1))
|
||||
>>>
|
||||
>>> num_arr.update(1, 5)
|
||||
>>> for node in num_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 19, start: 0, end: 4
|
||||
val: 12, start: 0, end: 2
|
||||
val: 7, start: 3, end: 4
|
||||
val: 7, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 5, start: 1, end: 1
|
||||
>>> tuple(num_arr.traverse()) # doctest: +NORMALIZE_WHITESPACE
|
||||
(SegmentTreeNode(start=0, end=4, val=19),
|
||||
SegmentTreeNode(start=0, end=2, val=12),
|
||||
SegmentTreeNode(start=3, end=4, val=7),
|
||||
SegmentTreeNode(start=0, end=1, val=7),
|
||||
SegmentTreeNode(start=2, end=2, val=5),
|
||||
SegmentTreeNode(start=3, end=3, val=3),
|
||||
SegmentTreeNode(start=4, end=4, val=4),
|
||||
SegmentTreeNode(start=0, end=0, val=2),
|
||||
SegmentTreeNode(start=1, end=1, val=5))
|
||||
>>>
|
||||
>>> num_arr.query_range(3, 4)
|
||||
7
|
||||
@ -62,29 +58,29 @@ class SegmentTree:
|
||||
>>> for node in max_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 5, start: 0, end: 4
|
||||
val: 5, start: 0, end: 2
|
||||
val: 4, start: 3, end: 4
|
||||
val: 2, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 1, start: 1, end: 1
|
||||
SegmentTreeNode(start=0, end=4, val=5)
|
||||
SegmentTreeNode(start=0, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=1, val=2)
|
||||
SegmentTreeNode(start=2, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=3, val=3)
|
||||
SegmentTreeNode(start=4, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=0, val=2)
|
||||
SegmentTreeNode(start=1, end=1, val=1)
|
||||
>>>
|
||||
>>> max_arr.update(1, 5)
|
||||
>>> for node in max_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 5, start: 0, end: 4
|
||||
val: 5, start: 0, end: 2
|
||||
val: 4, start: 3, end: 4
|
||||
val: 5, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 5, start: 1, end: 1
|
||||
SegmentTreeNode(start=0, end=4, val=5)
|
||||
SegmentTreeNode(start=0, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=1, val=5)
|
||||
SegmentTreeNode(start=2, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=3, val=3)
|
||||
SegmentTreeNode(start=4, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=0, val=2)
|
||||
SegmentTreeNode(start=1, end=1, val=5)
|
||||
>>>
|
||||
>>> max_arr.query_range(3, 4)
|
||||
4
|
||||
@ -97,29 +93,29 @@ class SegmentTree:
|
||||
>>> for node in min_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 1, start: 0, end: 4
|
||||
val: 1, start: 0, end: 2
|
||||
val: 3, start: 3, end: 4
|
||||
val: 1, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 1, start: 1, end: 1
|
||||
SegmentTreeNode(start=0, end=4, val=1)
|
||||
SegmentTreeNode(start=0, end=2, val=1)
|
||||
SegmentTreeNode(start=3, end=4, val=3)
|
||||
SegmentTreeNode(start=0, end=1, val=1)
|
||||
SegmentTreeNode(start=2, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=3, val=3)
|
||||
SegmentTreeNode(start=4, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=0, val=2)
|
||||
SegmentTreeNode(start=1, end=1, val=1)
|
||||
>>>
|
||||
>>> min_arr.update(1, 5)
|
||||
>>> for node in min_arr.traverse():
|
||||
... print(node)
|
||||
...
|
||||
val: 2, start: 0, end: 4
|
||||
val: 2, start: 0, end: 2
|
||||
val: 3, start: 3, end: 4
|
||||
val: 2, start: 0, end: 1
|
||||
val: 5, start: 2, end: 2
|
||||
val: 3, start: 3, end: 3
|
||||
val: 4, start: 4, end: 4
|
||||
val: 2, start: 0, end: 0
|
||||
val: 5, start: 1, end: 1
|
||||
SegmentTreeNode(start=0, end=4, val=2)
|
||||
SegmentTreeNode(start=0, end=2, val=2)
|
||||
SegmentTreeNode(start=3, end=4, val=3)
|
||||
SegmentTreeNode(start=0, end=1, val=2)
|
||||
SegmentTreeNode(start=2, end=2, val=5)
|
||||
SegmentTreeNode(start=3, end=3, val=3)
|
||||
SegmentTreeNode(start=4, end=4, val=4)
|
||||
SegmentTreeNode(start=0, end=0, val=2)
|
||||
SegmentTreeNode(start=1, end=1, val=5)
|
||||
>>>
|
||||
>>> min_arr.query_range(3, 4)
|
||||
3
|
||||
@ -128,7 +124,6 @@ class SegmentTree:
|
||||
>>> min_arr.query_range(1, 3)
|
||||
3
|
||||
>>>
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, collection: Sequence, function):
|
||||
|
@ -24,11 +24,11 @@ class Node:
|
||||
"""
|
||||
>>> node = Node(length=27)
|
||||
>>> repr(node)
|
||||
'min_value: -1, max_value: -1'
|
||||
'Node(min_value=-1 max_value=-1)'
|
||||
>>> repr(node) == str(node)
|
||||
True
|
||||
"""
|
||||
return f"min_value: {self.minn}, max_value: {self.maxx}"
|
||||
return f"Node(min_value={self.minn} max_value={self.maxx})"
|
||||
|
||||
|
||||
def build_tree(arr: list[int]) -> Node | None:
|
||||
@ -37,7 +37,7 @@ def build_tree(arr: list[int]) -> Node | None:
|
||||
of the constructed tree
|
||||
|
||||
>>> build_tree(test_array)
|
||||
min_value: 0, max_value: 9
|
||||
Node(min_value=0 max_value=9)
|
||||
"""
|
||||
root = Node(len(arr))
|
||||
root.minn, root.maxx = min(arr), max(arr)
|
||||
|
Reference in New Issue
Block a user