Пример #1
0
##Celda mas alejada de u, edges contiene aristas para llegar de u a v
v, edges, matrix = farthest_cell_from(lab, u, matrix)

##Distancia entre u y v
cost = matrix[v[0]][v[1]]

##Aplicamos restricciones para la eleccion de la celda inicial y final
if u[0] < v[0]:
    start = u
    last = v
elif u[0] > v[0]:
    start = v
    last = u
elif u[1] > v[1]:
    start = v
    last = u
elif u[1] < v[1]:
    start = u
    last = v

print(start[0], start[1])
print(last[0], last[1])
print(cost)

if (len(sys.argv) == 3 and sys.argv[2] == '-g'):
    camino = path_recoverer(edges, v)
    lv = LabyrinthViewer(lab, canvas_width=600, canvas_height=400, margin=10)
    lv.set_input_point(start)
    lv.set_output_point(last)
    lv.add_path(camino, 'blue')
    lv.run()
Пример #2
0
    camino = []

    v = target
    camino.append(v)
    while parent[v] != v:
        v = parent[v]
        camino.append(v)

    # Step 4
    return camino


if __name__ == '__main__':
    lab = load_labyrinth(sys.argv[1])

    source = (0, 0)
    rec = recorredor_aristas_anchura(lab, source)

    t, target = rec[-1]

    # lab = UndirectedGraph(E=v)
    print(lab)

    camino = path(lab, source, target)

    v = LabyrinthViewer(lab, canvas_width=400, canvas_height=400)
    v.set_input_point(source)
    v.set_output_point(target)
    v.add_path(camino, 'blue')
    v.run()
Пример #3
0
        ((4, 4), (4, 3)), ((3, 6), (3, 5)), ((2, 2), (3, 2)), ((4, 1), (4, 2)),
        ((1, 1), (1, 0)), ((0, 1), (0, 2)), ((3, 2), (3, 1)), ((2, 6), (2, 7)),
        ((4, 5), (4, 6)), ((0, 4), (0, 5)), ((0, 4), (1, 4)), ((3, 9), (3, 8)),
        ((0, 5), (0, 6)), ((0, 7), (0, 6)), ((0, 7), (1, 7)), ((4, 2), (4, 3)),
        ((0, 8), (0, 9)), ((3, 5), (3, 4)), ((1, 8), (1, 7)), ((0, 9), (1, 9)),
        ((2, 3), (2, 4))
    ]

    # Laberinto en forma de grafo no dirigido
    graph = UndirectedGraph(E=e)

    #Obligatorio: Crea un LabyrinthViewer pasándole el grafo del laberinto
    lv = LabyrinthViewer(graph, canvas_width=600, canvas_height=400, margin=10)

    #Opcional: Muestra el símbolo 'I' en la celda de entrada al laberinto
    lv.set_input_point((0, 0))

    #Opcional: Visualiza el símbolo 'O' en la celda de salida del laberinto
    lv.set_output_point((4, 9))

    #Opcional: marca una celda
    lv.add_marked_cell((3, 4), 'red')

    #Opcional: Visualiza un camino en azul
    path = [(0, 0), (1, 0), (1, 1), (1, 2), (0, 2), (0, 3), (1, 3), (1, 4),
            (0, 4), (0, 5), (0, 6), (0, 7), (1, 7), (1, 8), (2, 8), (2, 7),
            (2, 6), (1, 6), (1, 5), (2, 5), (2, 4), (2, 3), (3, 3), (4, 3),
            (4, 4), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 9)]
    lv.add_path(path, 'blue')

    #Obligatorio: Muestra el laberinto