Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- class vertex():
- def __init__(self,name):
- self.name = name
- self.and_dep = []
- self.or_dep = []
- self.color = 'white'
- self.possible_path = []
- def __str__(self):
- return "Name: {0}\tAnd: {1}\tOr: {2}\tPossible_Path: {3}\tColor: {4}".format(self.name,self.and_dep,self.or_dep,self.possible_path,self.color)
- def __repr__(self):
- return str(self.name)
- std_packages = []
- graph = []
- temp = []
- def parsing_package():
- for line in sys.stdin:
- std_packages.append(str(line))
- for lines in std_packages:
- Vertex = vertex(lines.strip().split(':')[0])
- graph.append(Vertex)
- for lines in std_packages:
- for dep in lines.strip().split(':')[1].split(','):
- if dep != '':
- if '|' in dep:
- for or_depenedencies in dep.strip().split('|'):
- or_dep = or_depenedencies.strip()
- Vertex = vertex(or_dep)
- for element in graph:
- temp.append(element.name)
- if Vertex.name not in temp:
- graph.append(Vertex)
- temp = []
- else:
- and_dep = dep.strip()
- Vertex = vertex(and_dep)
- for element in graph:
- temp.append(element.name)
- if Vertex.name not in temp:
- graph.append(Vertex)
- temp = []
- temp = []
- for element in graph:
- if lines.strip().split(':')[0] == element.name:
- for dep in lines.strip().split(':')[1].split(','):
- if "|" in dep:
- for or_depenedencies in dep.strip().split('|'):
- for vert in graph:
- if vert.name == or_depenedencies.strip():
- temp.append(vert)
- element.or_dep.append(temp)
- temp = []
- else:
- for vert in graph:
- if vert.name == dep.strip():
- element.and_dep.append(vert)
- return graph
- def possible_path(graph):
- for element in graph:
- r=[[]]
- if len(element.or_dep) > 0:
- for x in element.or_dep:
- t = []
- for y in x:
- for i in r:
- t.append(i+[y])
- r = t
- for l in r:
- if len(element.and_dep)>0:
- l.extend(element.and_dep)
- element.possible_path = r
- graph = parsing_package()
- possible_path(graph)
- for i in graph:
- print(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement