Skip to content

Commit dbc98e1

Browse files
committed
Just adding a question to keep Github updated
1 parent 2b9371d commit dbc98e1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def create_graph(projects, dependencies):
2+
project_graph = {}
3+
for project in projects:
4+
project_graph[project] = []
5+
for pairs in dependencies:
6+
project_graph[pairs[0]].extend(pairs[1])
7+
return project_graph
8+
graph = create_graph(['A', 'B', 'C', 'D', 'E', 'F'], [('A','D'), ('F', 'B'), ('B','D'), ('F','A'), ('D','C')])
9+
# print(graph)
10+
11+
def get_projects_with_dependencies(graph):
12+
projects_with_depen = set()
13+
for project in graph:
14+
# addin values from dictionaty because values are dependednt of key
15+
projects_with_depen = projects_with_depen.union(set(graph[project]))
16+
17+
return projects_with_depen
18+
19+
dependents = get_projects_with_dependencies(graph)
20+
# print(dependents)
21+
22+
def get_projects_wo_dependencies(projects_with, graph):
23+
projects_wo_dependencies = set()
24+
for project in graph:
25+
if not project in projects_with:
26+
projects_wo_dependencies.add(project)
27+
return projects_wo_dependencies
28+
notDependents = get_projects_wo_dependencies(dependents, graph)
29+
# print(notDependents)
30+
31+
def find_build_order(projects, dependencies):
32+
build_order = []
33+
project_graph = create_graph(projects, dependencies)
34+
while project_graph:
35+
print(project_graph)
36+
projects_with_depen = get_projects_with_dependencies(project_graph)
37+
projects_wo_depen = get_projects_wo_dependencies(projects_with_depen, project_graph)
38+
print(projects_wo_depen)
39+
if len(projects_wo_depen) == 0 and project_graph:
40+
raise ValueError('There is a cycle in the build order')
41+
for independent_project in projects_wo_depen:
42+
build_order.append(independent_project)
43+
del project_graph[independent_project]
44+
return build_order
45+
46+
print(find_build_order(['A', 'B', 'C', 'D', 'E', 'F'], [('A','D'), ('F', 'B'), ('B','D'), ('F','A'), ('D','C')]))

0 commit comments

Comments
 (0)