* added doctest for all_permutations.py

* added doctest for all_subsequences.py

* added doctest for all_subsequences.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* doctest added

* updated

* Update backtracking/all_subsequences.py

---------

Co-authored-by: Harsh Buddhdev <harshbuddhdev5@.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
This commit is contained in:
Harsh buddhdev 2024-06-02 23:00:26 -04:00 committed by GitHub
parent 2f1704dae5
commit ffaa976f6c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 87 additions and 1 deletions

View File

@ -23,6 +23,42 @@ def create_state_space_tree(
Creates a state space tree to iterate through each branch using DFS. Creates a state space tree to iterate through each branch using DFS.
We know that each state has exactly len(sequence) - index children. We know that each state has exactly len(sequence) - index children.
It terminates when it reaches the end of the given sequence. It terminates when it reaches the end of the given sequence.
:param sequence: The input sequence for which permutations are generated.
:param current_sequence: The current permutation being built.
:param index: The current index in the sequence.
:param index_used: list to track which elements are used in permutation.
Example 1:
>>> sequence = [1, 2, 3]
>>> current_sequence = []
>>> index_used = [False, False, False]
>>> create_state_space_tree(sequence, current_sequence, 0, index_used)
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Example 2:
>>> sequence = ["A", "B", "C"]
>>> current_sequence = []
>>> index_used = [False, False, False]
>>> create_state_space_tree(sequence, current_sequence, 0, index_used)
['A', 'B', 'C']
['A', 'C', 'B']
['B', 'A', 'C']
['B', 'C', 'A']
['C', 'A', 'B']
['C', 'B', 'A']
Example 3:
>>> sequence = [1]
>>> current_sequence = []
>>> index_used = [False]
>>> create_state_space_tree(sequence, current_sequence, 0, index_used)
[1]
""" """
if index == len(sequence): if index == len(sequence):

View File

@ -22,6 +22,56 @@ def create_state_space_tree(
Creates a state space tree to iterate through each branch using DFS. Creates a state space tree to iterate through each branch using DFS.
We know that each state has exactly two children. We know that each state has exactly two children.
It terminates when it reaches the end of the given sequence. It terminates when it reaches the end of the given sequence.
:param sequence: The input sequence for which subsequences are generated.
:param current_subsequence: The current subsequence being built.
:param index: The current index in the sequence.
Example:
>>> sequence = [3, 2, 1]
>>> current_subsequence = []
>>> create_state_space_tree(sequence, current_subsequence, 0)
[]
[1]
[2]
[2, 1]
[3]
[3, 1]
[3, 2]
[3, 2, 1]
>>> sequence = ["A", "B"]
>>> current_subsequence = []
>>> create_state_space_tree(sequence, current_subsequence, 0)
[]
['B']
['A']
['A', 'B']
>>> sequence = []
>>> current_subsequence = []
>>> create_state_space_tree(sequence, current_subsequence, 0)
[]
>>> sequence = [1, 2, 3, 4]
>>> current_subsequence = []
>>> create_state_space_tree(sequence, current_subsequence, 0)
[]
[4]
[3]
[3, 4]
[2]
[2, 4]
[2, 3]
[2, 3, 4]
[1]
[1, 4]
[1, 3]
[1, 3, 4]
[1, 2]
[1, 2, 4]
[1, 2, 3]
[1, 2, 3, 4]
""" """
if index == len(sequence): if index == len(sequence):
@ -35,7 +85,7 @@ def create_state_space_tree(
if __name__ == "__main__": if __name__ == "__main__":
seq: list[Any] = [3, 1, 2, 4] seq: list[Any] = [1, 2, 3]
generate_all_subsequences(seq) generate_all_subsequences(seq)
seq.clear() seq.clear()