Пример #1
0
 def obter_ligacoes_ordenadas(self, estado_partida):
     ligacoes_ordenadas = []
     ligacoes = areas_lig_tp.obter_ligacoes()
     """ Ordenar as ligacoes pelo centro de área """
     for centro in ligacoes:
         criterio_seleccao = lambda prox_ligacao: psa.util.dist(centro, prox_ligacao)
         ligacoes[centro] = sorted(ligacoes[centro], key=criterio_seleccao)
     
     """ Ordenar os centros de área em relação a um centro inicial """
     prox_ligacao = estado_partida
     ligacoes_percorrer = [self.estado_abs(estado_partida)]
     ligacoes_precorridas = []
     while ligacoes_percorrer:
         ligacoes_locais = []
         for ligacao in ligacoes_percorrer:
             if ligacao not in ligacoes_precorridas:
                 ligacoes_precorridas.append(ligacao)
                 ligacoes_locais.append(ligacao)
         
         d = { prox_ligacao : ligacoes_locais}
         ligacoes_ordenadas.append(d)
         
         prox_ligacao = ligacoes_percorrer.pop(0)
         for ligacao in ligacoes[prox_ligacao]:
             if ligacao not in ligacoes_precorridas:
                 ligacoes_percorrer.append(ligacao)
                                
     return ligacoes_ordenadas          
Пример #2
0
 def __init__(self):
     super(CrencasAreas, self).__init__()
     self.areas = areas_lig_tp.obter_areas()
     self.ligacoes = areas_lig_tp.obter_ligacoes()
     self.oper_ligar = Ligar(self)