Advertisement
Guest User

Untitled

a guest
May 28th, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. import sys
  2.  
  3. class vertex():
  4.  
  5.     def __init__(self,name):
  6.         self.name = name
  7.         self.and_dep = []
  8.         self.or_dep = []
  9.         self.color = 'white'
  10.         self.possible_path = []
  11.  
  12.     def __str__(self):
  13.         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)
  14.  
  15.     def __repr__(self):
  16.         return str(self.name)
  17.  
  18. std_packages = []
  19. graph = []
  20. temp = []
  21. def parsing_package():
  22.     for line in sys.stdin:
  23.         std_packages.append(str(line))
  24.  
  25.     for lines in std_packages:
  26.         Vertex = vertex(lines.strip().split(':')[0])
  27.         graph.append(Vertex)
  28.  
  29.     for lines in std_packages:
  30.         for dep in lines.strip().split(':')[1].split(','):
  31.             if dep != '':
  32.                 if '|' in dep:
  33.                     for or_depenedencies in dep.strip().split('|'):
  34.                         or_dep = or_depenedencies.strip()
  35.                         Vertex = vertex(or_dep)
  36.  
  37.                         for element in graph:
  38.                             temp.append(element.name)
  39.  
  40.                         if Vertex.name not in temp:
  41.                             graph.append(Vertex)
  42.                         temp = []
  43.                 else:
  44.                     and_dep = dep.strip()
  45.                     Vertex = vertex(and_dep)
  46.  
  47.                     for element in graph:
  48.                         temp.append(element.name)
  49.  
  50.                     if Vertex.name not in temp:
  51.                         graph.append(Vertex)
  52.                     temp = []
  53.  
  54.         temp = []
  55.  
  56.         for element in graph:
  57.             if lines.strip().split(':')[0] == element.name:
  58.                 for dep in lines.strip().split(':')[1].split(','):
  59.                         if "|" in dep:
  60.                             for or_depenedencies in dep.strip().split('|'):
  61.                                 for vert in graph:
  62.                                     if vert.name == or_depenedencies.strip():
  63.                                         temp.append(vert)
  64.                             element.or_dep.append(temp)
  65.                             temp = []
  66.                         else:
  67.                             for vert in graph:
  68.                                 if vert.name == dep.strip():
  69.                                     element.and_dep.append(vert)
  70.     return graph
  71.  
  72. def possible_path(graph):
  73.     for element in graph:
  74.         r=[[]]
  75.         if len(element.or_dep) > 0:
  76.             for x in element.or_dep:
  77.                 t = []
  78.                 for y in x:
  79.                     for i in r:
  80.                         t.append(i+[y])
  81.  
  82.                 r = t
  83.         for l in r:
  84.             if len(element.and_dep)>0:
  85.                 l.extend(element.and_dep)
  86.         element.possible_path = r
  87.  
  88. graph = parsing_package()
  89.  
  90. possible_path(graph)
  91.  
  92.  
  93. for i in graph:
  94.     print(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement