PLCGenerator.py
changeset 273 5b18d98aa4f9
parent 269 34eff05909b0
child 276 cc9c4a7510b4
equal deleted inserted replaced
272:3a9db28bc6b5 273:5b18d98aa4f9
   742         same_paths = {}
   742         same_paths = {}
   743         uncomputed_index = range(len(paths))
   743         uncomputed_index = range(len(paths))
   744         factorized_paths = []
   744         factorized_paths = []
   745         for num, path in enumerate(paths):
   745         for num, path in enumerate(paths):
   746             if type(path) == ListType:
   746             if type(path) == ListType:
   747                 for i in xrange(1, len(path)):
   747                 if len(path) > 1:
   748                     str_path = str(path[i:])
   748                     str_path = str(path[-1:])
   749                     same_paths.setdefault(str_path, [])
   749                     same_paths.setdefault(str_path, [])
   750                     same_paths[str_path].append((path[:i], num))
   750                     same_paths[str_path].append((path[:-1], num))
   751             else:
   751             else:
   752                 factorized_paths.append(path)
   752                 factorized_paths.append(path)
   753                 uncomputed_index.remove(num)
   753                 uncomputed_index.remove(num)
   754         for same_path, elements in same_paths.items():
   754         for same_path, elements in same_paths.items():
   755             if len(elements) > 1:
   755             if len(elements) > 1:
   756                 factorized_paths.append([tuple([path for path, num in elements])] + eval(same_path))        
   756                 elements_paths = self.FactorizePaths([path for path, num in elements])
       
   757                 if len(elements_paths) > 1:
       
   758                     factorized_paths.append([tuple(elements_paths)] + eval(same_path))        
       
   759                 else:
       
   760                     factorized_paths.append(elements_paths + eval(same_path))
   757                 for path, num in elements:
   761                 for path, num in elements:
   758                     uncomputed_index.remove(num)
   762                     uncomputed_index.remove(num)
   759         for num in uncomputed_index:
   763         for num in uncomputed_index:
   760             factorized_paths.append(paths[num])
   764             factorized_paths.append(paths[num])
   761         factorized_paths.sort()
   765         factorized_paths.sort()