Skip to content

Commit f4e0e8f

Browse files
committed
Resolve merge conflict and normalize doctests in all_permutations.py
1 parent 8a0a7ea commit f4e0e8f

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

backtracking/all_permutations.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,34 @@
55
"""
66

77
from __future__ import annotations
8-
from typing import List, Union
98

10-
Element = Union[int, str]
9+
Element = int | str
1110

1211

13-
def generate_all_permutations(sequence: List[Element]) -> List[List[Element]]:
12+
def generate_all_permutations(sequence: list[Element]) -> list[list[Element]]:
1413
"""
1514
Generate and return all permutations of the given sequence.
1615
1716
:param sequence: The input sequence.
1817
:return: A list of permutations (each permutation is a list).
1918
2019
Example 1 (integers):
21-
>>> generate_all_permutations([1, 2, 3])
22-
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
20+
>>> generate_all_permutations([1, 2, 3]) # doctest: +NORMALIZE_WHITESPACE
21+
[[1, 2, 3],
22+
[1, 3, 2],
23+
[2, 1, 3],
24+
[2, 3, 1],
25+
[3, 1, 2],
26+
[3, 2, 1]]
2327
2428
Example 2 (strings):
25-
>>> generate_all_permutations(["A", "B", "C"])
26-
[['A', 'B', 'C'], ['A', 'C', 'B'], ['B', 'A', 'C'], ['B', 'C', 'A'], ['C', 'A', 'B'], ['C', 'B', 'A']]
29+
>>> generate_all_permutations(["A", "B", "C"]) # doctest: +NORMALIZE_WHITESPACE
30+
[['A', 'B', 'C'],
31+
['A', 'C', 'B'],
32+
['B', 'A', 'C'],
33+
['B', 'C', 'A'],
34+
['C', 'A', 'B'],
35+
['C', 'B', 'A']]
2736
2837
Example 3 (single element):
2938
>>> generate_all_permutations([1])
@@ -33,18 +42,18 @@ def generate_all_permutations(sequence: List[Element]) -> List[List[Element]]:
3342
>>> generate_all_permutations([])
3443
[[]]
3544
"""
36-
result: List[List[Element]] = []
45+
result: list[list[Element]] = []
3746
index_used = [False] * len(sequence)
3847
create_state_space_tree(sequence, [], 0, index_used, result)
3948
return result
4049

4150

4251
def create_state_space_tree(
43-
sequence: List[Element],
44-
current_sequence: List[Element],
52+
sequence: list[Element],
53+
current_sequence: list[Element],
4554
index: int,
46-
index_used: List[bool],
47-
result: List[List[Element]],
55+
index_used: list[bool],
56+
result: list[list[Element]],
4857
) -> None:
4958
"""
5059
Backtracking helper that appends permutations into result.
@@ -64,9 +73,11 @@ def create_state_space_tree(
6473
if not index_used[i]:
6574
current_sequence.append(sequence[i])
6675
index_used[i] = True
67-
create_state_space_tree(
68-
sequence, current_sequence, index + 1, index_used, result
69-
)
76+
create_state_space_tree(sequence,
77+
current_sequence,
78+
index + 1,
79+
index_used,
80+
result)
7081
current_sequence.pop()
7182
index_used[i] = False
7283

@@ -75,3 +86,4 @@ def create_state_space_tree(
7586
# example usage; kept under __main__ so it doesn't run on import/tests
7687
print(generate_all_permutations([3, 1, 2, 4]))
7788
print(generate_all_permutations(["A", "B", "C"]))
89+

0 commit comments

Comments
 (0)