def cerraduraPositiva(AFN_1): nodoInicio = Nodo(1, "1") nodoFin = Nodo(3, "2") afnCP = AFN(["Nodos", "E"], [Arco(nodoInicio, []), Arco(nodoFin, [])]) for indice in AFN_1.listaIndices: if indice not in afnCP.listaIndices: afnCP.listaIndices.append(indice) for transicion in AFN_1.tablaTransiciones: transicion.nodoInicio.numeracion = len(afnCP.tablaTransiciones)+1 if transicion.nodoInicio.tipo == 3: if transicion not in afnCP.tablaTransiciones: for transicion_2 in AFN_1.tablaTransiciones: if transicion_2.nodoInicio.tipo == 1: afnCP.buscarNodo(nodoInicio).nodosDestino.append( [transicion_2.nodoInicio, "E"]) afnCP.tablaTransiciones.append(Arco( transicion.nodoInicio, [[nodoFin, "E"], [transicion_2.nodoInicio, "E"]])) transicion_2.nodoInicio.tipo = 2 transicion.nodoInicio.tipo = 2 if transicion_2 not in afnCP.tablaTransiciones: afnCP.tablaTransiciones.append(transicion_2) else: afnCP.tablaTransiciones.append(transicion) return afnCP
def adicionarEnlace(self, nodoInicial, nodoTerminal, peso): nuevoArco = Arco(nodoInicial, nodoTerminal, float(peso)) indice = self.buscarIndice(nuevoArco.getPeso()) if indice == -1: self.aristas.append(nuevoArco) else: self.aristas.insert(int(indice), nuevoArco) for nodo in self.nodos: if nodoInicial in nodo[0]: nodo[1].agregarEnlace(nodoTerminal, peso) break for nodo in self.nodos: if nodoTerminal in nodo[0]: nodo[1].agregarEnlace(nodoInicial, peso) break
def adicionarRelacao(self, v1, v2, peso): id = self.gerarIdRelacao(v1, v2) relacao = Arco(id, v1, v2, peso) self.relacoes[id] = relacao self.vertices[v1.numero - 1].adicionarRelacao(relacao) # Verificar se eh necessario adcionar a vertice destino. Sem essa relacao no vertice destino, facilita a organizacao topologica self.vertices[v2.numero - 1].adicionarRelacao(relacao)
def __init__(self, puntoA, puntoB, peso): self.arista = Arco(puntoA.nombre, puntoB.nombre, peso) self.puntoA = puntoA self.puntoB = puntoB self.peso = peso self.color = QBrush(Qt.green) self.auxiliar = QBrush(Qt.red)
def union(AFN_1, AFN_2): nodoInicio = Nodo(1, "1") nodoFin = Nodo(3, "2") afnUnido = AFN(["Nodos", "E"], [Arco(nodoInicio, []), Arco(nodoFin, [])]) for lista in (AFN_1.listaIndices, AFN_2.listaIndices): for indice in lista: if indice not in afnUnido.listaIndices: afnUnido.listaIndices.append(indice) for transiciones in (AFN_1.tablaTransiciones, AFN_2.tablaTransiciones): for transicion in transiciones: if transicion not in afnUnido.tablaTransiciones: transicion.nodoInicio.numeracion = len( afnUnido.tablaTransiciones)+1 if transicion.nodoInicio.tipo == 1: afnUnido.buscarNodo(nodoInicio).nodosDestino.append( [transicion.nodoInicio, "E"]) afnUnido.tablaTransiciones.append(transicion) elif transicion.nodoInicio.tipo == 3: afnUnido.tablaTransiciones.append( Arco(transicion.nodoInicio, [[nodoFin, "E"]])) else: afnUnido.tablaTransiciones.append(transicion) transicion.nodoInicio.tipo = 2 return afnUnido
def addArco(self, origen, destino, costo): self.E.append(Arco(origen,destino,float(costo)))
def casoBase(notacion): lista_nodos = [Nodo(1, "1"), Nodo(3, "2")] return AFN(["Nodos", notacion], [Arco(lista_nodos[0], [[lista_nodos[1], notacion]]), Arco(lista_nodos[1], [])])
grupoSuperficiesVerticales.add(suelo) techo = Superficie(0, 0, tamaño_pantalla[0], 1) grupoSuperficiesVerticales.add(techo) grupoSuperficiesHorizontales = pygame.sprite.Group() pared_izquierda = Superficie(0, 0, 1, tamaño_pantalla[1] + 1) grupoSuperficiesHorizontales.add(pared_izquierda) pared_derecha = Superficie(tamaño_pantalla[0] - 1, 0, 1, tamaño_pantalla[1] - 5) grupoSuperficiesHorizontales.add(pared_derecha) grupoArcos = pygame.sprite.Group() arco_izq = Arco(-25, tamaño_pantalla[1] - 180, 'arcoizquierdo.png') arco_der = Arco(tamaño_pantalla[0] - 100, tamaño_pantalla[1] - 180, 'arcoderecho.png') grupoArcos.add(arco_der) grupoArcos.add(arco_izq) pelota = Pelota(tamaño_pantalla[0] / 2, tamaño_pantalla[1] / 2, 'p5.png') while main_loop: reloj.tick(50) for event in pygame.event.get(): if event.type == pygame.QUIT: main_loop = False jugador.actualizar_posicion()