Skip to content

Commit 953c74c

Browse files
jenia90github-actionspoyea
authored
Add static typing to backtracking algorithms (TheAlgorithms#2684)
* Added static typing to backtracking algorithms * Ran psf/black to fix some minor issues. * updating DIRECTORY.md * updating DIRECTORY.md Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: John Law <[email protected]>
1 parent 56bdd23 commit 953c74c

File tree

6 files changed

+34
-16
lines changed

6 files changed

+34
-16
lines changed

Diff for: DIRECTORY.md

+8-5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
* [Quine Mc Cluskey](https://github.com/TheAlgorithms/Python/blob/master/boolean_algebra/quine_mc_cluskey.py)
4242

4343
## Cellular Automata
44+
* [Conways Game Of Life](https://github.com/TheAlgorithms/Python/blob/master/cellular_automata/conways_game_of_life.py)
4445
* [One Dimensional](https://github.com/TheAlgorithms/Python/blob/master/cellular_automata/one_dimensional.py)
4546

4647
## Ciphers
@@ -107,6 +108,7 @@
107108
* [Prefix Conversions](https://github.com/TheAlgorithms/Python/blob/master/conversions/prefix_conversions.py)
108109
* [Roman To Integer](https://github.com/TheAlgorithms/Python/blob/master/conversions/roman_to_integer.py)
109110
* [Temperature Conversions](https://github.com/TheAlgorithms/Python/blob/master/conversions/temperature_conversions.py)
111+
* [Weight Conversion](https://github.com/TheAlgorithms/Python/blob/master/conversions/weight_conversion.py)
110112

111113
## Data Structures
112114
* Binary Tree
@@ -321,10 +323,6 @@
321323
* [Test Min Spanning Tree Kruskal](https://github.com/TheAlgorithms/Python/blob/master/graphs/tests/test_min_spanning_tree_kruskal.py)
322324
* [Test Min Spanning Tree Prim](https://github.com/TheAlgorithms/Python/blob/master/graphs/tests/test_min_spanning_tree_prim.py)
323325

324-
## Greedy Method
325-
* [Greedy Knapsack](https://github.com/TheAlgorithms/Python/blob/master/greedy_method/greedy_knapsack.py)
326-
* [Test Knapsack](https://github.com/TheAlgorithms/Python/blob/master/greedy_method/test_knapsack.py)
327-
328326
## Hashes
329327
* [Adler32](https://github.com/TheAlgorithms/Python/blob/master/hashes/adler32.py)
330328
* [Chaos Machine](https://github.com/TheAlgorithms/Python/blob/master/hashes/chaos_machine.py)
@@ -336,8 +334,11 @@
336334
* [Sha1](https://github.com/TheAlgorithms/Python/blob/master/hashes/sha1.py)
337335

338336
## Knapsack
337+
* [Greedy Knapsack](https://github.com/TheAlgorithms/Python/blob/master/knapsack/greedy_knapsack.py)
339338
* [Knapsack](https://github.com/TheAlgorithms/Python/blob/master/knapsack/knapsack.py)
340-
* [Test Knapsack](https://github.com/TheAlgorithms/Python/blob/master/knapsack/test_knapsack.py)
339+
* Tests
340+
* [Test Greedy Knapsack](https://github.com/TheAlgorithms/Python/blob/master/knapsack/tests/test_greedy_knapsack.py)
341+
* [Test Knapsack](https://github.com/TheAlgorithms/Python/blob/master/knapsack/tests/test_knapsack.py)
341342

342343
## Linear Algebra
343344
* Src
@@ -400,6 +401,7 @@
400401
* [Combinations](https://github.com/TheAlgorithms/Python/blob/master/maths/combinations.py)
401402
* [Decimal Isolate](https://github.com/TheAlgorithms/Python/blob/master/maths/decimal_isolate.py)
402403
* [Entropy](https://github.com/TheAlgorithms/Python/blob/master/maths/entropy.py)
404+
* [Euclidean Distance](https://github.com/TheAlgorithms/Python/blob/master/maths/euclidean_distance.py)
403405
* [Eulers Totient](https://github.com/TheAlgorithms/Python/blob/master/maths/eulers_totient.py)
404406
* [Explicit Euler](https://github.com/TheAlgorithms/Python/blob/master/maths/explicit_euler.py)
405407
* [Extended Euclidean Algorithm](https://github.com/TheAlgorithms/Python/blob/master/maths/extended_euclidean_algorithm.py)
@@ -886,6 +888,7 @@
886888
* [Get Imdbtop](https://github.com/TheAlgorithms/Python/blob/master/web_programming/get_imdbtop.py)
887889
* [Instagram Crawler](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_crawler.py)
888890
* [Instagram Pic](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_pic.py)
891+
* [Instagram Video](https://github.com/TheAlgorithms/Python/blob/master/web_programming/instagram_video.py)
889892
* [Recaptcha Verification](https://github.com/TheAlgorithms/Python/blob/master/web_programming/recaptcha_verification.py)
890893
* [Slack Message](https://github.com/TheAlgorithms/Python/blob/master/web_programming/slack_message.py)
891894
* [Test Fetch Github Info](https://github.com/TheAlgorithms/Python/blob/master/web_programming/test_fetch_github_info.py)

Diff for: backtracking/all_combinations.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ def generate_all_combinations(n: int, k: int) -> [[int]]:
1616
return result
1717

1818

19-
def create_all_state(increment, total_number, level, current_list, total_list):
19+
def create_all_state(
20+
increment: int,
21+
total_number: int,
22+
level: int,
23+
current_list: [int],
24+
total_list: [int],
25+
) -> None:
2026
if level == 0:
2127
total_list.append(current_list[:])
2228
return
@@ -27,7 +33,7 @@ def create_all_state(increment, total_number, level, current_list, total_list):
2733
current_list.pop()
2834

2935

30-
def print_all_state(total_list):
36+
def print_all_state(total_list: [int]) -> None:
3137
for i in total_list:
3238
print(*i)
3339

Diff for: backtracking/all_permutations.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
"""
88

99

10-
def generate_all_permutations(sequence):
10+
def generate_all_permutations(sequence: [int]) -> None:
1111
create_state_space_tree(sequence, [], 0, [0 for i in range(len(sequence))])
1212

1313

14-
def create_state_space_tree(sequence, current_sequence, index, index_used):
14+
def create_state_space_tree(
15+
sequence: [int], current_sequence: [int], index: int, index_used: int
16+
) -> None:
1517
"""
1618
Creates a state space tree to iterate through each branch using DFS.
1719
We know that each state has exactly len(sequence) - index children.

Diff for: backtracking/n_queens.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
solution = []
1111

1212

13-
def isSafe(board, row, column):
13+
def isSafe(board: [[int]], row: int, column: int) -> bool:
1414
"""
1515
This function returns a boolean value True if it is safe to place a queen there
1616
considering the current state of the board.
@@ -38,7 +38,7 @@ def isSafe(board, row, column):
3838
return True
3939

4040

41-
def solve(board, row):
41+
def solve(board: [[int]], row: int) -> bool:
4242
"""
4343
It creates a state space tree and calls the safe function until it receives a
4444
False Boolean and terminates that branch and backtracks to the next
@@ -68,7 +68,7 @@ def solve(board, row):
6868
return False
6969

7070

71-
def printboard(board):
71+
def printboard(board: [[int]]) -> None:
7272
"""
7373
Prints the boards that have a successful combination.
7474
"""

Diff for: backtracking/rat_in_maze.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def solve_maze(maze: list) -> bool:
1+
def solve_maze(maze: [[int]]) -> bool:
22
"""
33
This method solves the "rat in maze" problem.
44
In this problem we have some n by n matrix, a start point and an end point.
@@ -67,7 +67,7 @@ def solve_maze(maze: list) -> bool:
6767
return solved
6868

6969

70-
def run_maze(maze, i, j, solutions):
70+
def run_maze(maze: [[int]], i: int, j: int, solutions: [[int]]) -> bool:
7171
"""
7272
This method is recursive starting from (i, j) and going in one of four directions:
7373
up, down, left, right.

Diff for: backtracking/sum_of_subsets.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"""
99

1010

11-
def generate_sum_of_subsets_soln(nums, max_sum):
11+
def generate_sum_of_subsets_soln(nums: [int], max_sum: [int]) -> [int]:
1212
result = []
1313
path = []
1414
num_index = 0
@@ -17,7 +17,14 @@ def generate_sum_of_subsets_soln(nums, max_sum):
1717
return result
1818

1919

20-
def create_state_space_tree(nums, max_sum, num_index, path, result, remaining_nums_sum):
20+
def create_state_space_tree(
21+
nums: [int],
22+
max_sum: int,
23+
num_index: int,
24+
path: [int],
25+
result: [int],
26+
remaining_nums_sum: int,
27+
) -> None:
2128
"""
2229
Creates a state space tree to iterate through each branch using DFS.
2330
It terminates the branching of a node when any of the two conditions

0 commit comments

Comments
 (0)