Descripción
Aplica el algoritmo A* (Shortest Path Pathfinder) a un mapa dado por una matriz para encontrar el camino mínimo entre el nodo inicial y la meta
Cadena de entrada
aestrella
Cadena de salida
A*
Uso
aestrella(<mapa>,<método>[,<incluirMapa>])
Parámetros | |||
---|---|---|---|
# | Parámetro | Descripción | Valor por defecto |
1 | mapa> | Matriz del tamaño del mapa con los siguientes valores:
|
|
2 | método |
|
|
3 | incluirMapa | Booleano. Si es verdadero incluye una representación del mapa como Texto | verdadero |
Valor devuelto
Diccionario con las claves…
'camino'
: vector de parejas [x,y]
con las coordenadas ordenadas del camino (coordenadas empiezan en 1) desde el inicio hasta la meta'distancia'
: longitud del camino, con paso horizontales/verticales de peso 1, y diagonales √2'pasos'
: número de pasos del camino'mapa'
: representación textual del mapa una vez aplicado el algoritmo (si se incluye el mapa)Ejemplos
aestrella([[2,1,0,0,0,0,0,0],[0,1,1,0,1,1,0,0], [0,0,1,0,1,3,0,0], [0,0,0,0,1,1,1,0], [0,0,0,0,0,0,0,0]],'vecinos_8_no_esquina')
Diccionario: { 'camino': [[1,1],[1,2],[1,3],[2,4],[3,4],[4,5],[5,5],[6,5],[7,5],[8,5],[8,4],[8,3],[7,3],[6,3]] 'distancia': 13.8284273147583 'pasos': 13 'mapa': ' O [#] · · · · · · * [#][#] · [#][#] · · * · [#] · [#] X * * · * * · [#][#][#] * · · · * * * * * ' }
Salida en REPL:
>>> set mapa=[[2,1,0,0,0,0,0,0],[0,1,1,0,1,1,0,0], [0,0,1,0,1,3,0,0], [0,0,0,0,1,1,1,0], [0,0,0,0,0,0,0,0]] mapa ==> VectorEvaluado: | 2 1 0 0 0 0 0 0 | | 0 1 1 0 1 1 0 0 | | 0 0 1 0 1 3 0 0 | | 0 0 0 0 1 1 1 0 | | 0 0 0 0 0 0 0 0 | (parse: 12ms(70%) / eval: 5,1ms(30%) / total: 17,1ms) >>> eol + aestrella(mapa,'vecinos_8_no_esquina')><'mapa' ==> Texto: ' O [#] · · · · · · * [#][#] · [#][#] · · * · [#] · [#] X * * · * * · [#][#][#] * · · · * * * * * ' (parse: 9,8ms(74%) / eval: 3,4ms(26%) / total: 13,2ms) >>> eol + aestrella(mapa,'vecinos_8')><'mapa' ==> Texto: ' O [#] · · * * · · * [#][#] * [#][#] * · · * [#] * [#] X · · · · * · [#][#][#] · · · · · · · · · ' (parse: 977µs(27%) / eval: 2,6ms(73%) / total: 3,6ms) >>> eol + aestrella(mapa,'vecinos_4')><'mapa' ==> Texto: ' O [#] · * * * * · * [#][#] * [#][#] * · * * [#] * [#] X * · · * * * [#][#][#] · · · · · · · · · ' (parse: 2,4ms(59%) / eval: 1,7ms(41%) / total: 4ms)
Desde / Última modificación
v0.6.2.4
Véase también…