8000 BFS - Oportune interview question · premaseem/pythonLab@eea494e · GitHub
[go: up one dir, main page]

Skip to content

Commit eea494e

Browse files
Aseem JainAseem Jain
authored andcommitted
BFS - Oportune interview question
1 parent ee76642 commit eea494e

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
"""
2+
@Author: Aseem Jain
3+
@Linkedin: https://www.linkedin.com/in/premaseem/
4+
@Github: https://github.com/premaseem/pythonLab/tree/master/challenge
5+
6+
Find the dependency graph of lib which has other dependent libraries.
7+
# algo is mainly breadth first
8+
"""
9+
10+
11+
map = {}
12+
map["A"] = ["B","F"]
13+
map["B"] = ["C"]
14+
map["C"] = ["D", "E"]
15+
map["D"] = ["F"]
16+
map["E"] = []
17+
map["F"] = ["A"]
18+
map["G"] = ["B"]
19+
20+
def get_dependecy(lib):
21+
mapd = { k:v.copy() for k,v in map.items() }
22+
ans = []
23+
queue = []
24+
queue.extend(mapd.get(lib))
25+
26+
27+
while queue:
28+
dlib = queue.pop()
29+
30+
if dlib not in ans:
31+
queue.extend(mapd.get(dlib,[]))
32+
ans.append(dlib)
33+
34+
return sorted(set(ans))
35+
36+
def get_dependecy2(lib):
37+
38+
ans = []
39+
queue = []
40+
queue.extend(map.get(lib))
41+
42+
while queue:
43+
dlib = queue.pop(0)
44+
45+
if dlib not in ans:
46+
queue.extend(map.get(dlib, []))
47+
ans.append(dlib)
48+
49+
return sorted(set(ans))
50+
51+
print(get_dependecy2("A"))
52+
assert sorted(['A', 'B', 'C', 'D', 'E', 'F']) == get_dependecy2("A")
53+
assert sorted(['A', 'B', 'C', 'D', 'E', 'F']) == get_dependecy("A")
54+

0 commit comments

Comments
 (0)
0