Escapa de la mazmorra I

Ogmo es un mago que ha sido encerrado en una mazmorra. Necesita tu ayuda.

Crea una función que reciba un mapa de la mazmorra y devuelva una única cadena multilínea que contenga el camino más corto marcado, el número mínimo de pasos hasta la salida y la secuencia de escape.

  • Ogmo comienza dentro de la mazmorra, en la posición indicada con O.
  • La salida se indica con X. Siempre habrá una salida de la mazmorra y puede estar en cualquier lugar dentro de la mazmorra (no solo en los bordes del mapa).
  • Ogmo solo puede moverse en cuatro direcciones: derecha R, izquierda L, arriba U, abajo D.
  • Cada paso que Ogmo necesite dar para escapar de la mazmorra debe indicarse en el mapa de solución con +.
  • Las paredes de la mazmorra se indican con #. Ogmo solo puede moverse por los espacios vacíos " ".
  • Reproduce el diseño multilínea mostrado en los ejemplos y las pruebas.

Ejemplos

escape([
  ["#", "#", "#", "#", "#"],
  ["#", "O", " ", " ", "#"],
  ["#", "#", " ", "#", "#"],
  ["#", " ", " ", " ", "X"],
  ["#", "#", "#", "#", "#"]
]) ➞
  ["#", "#", "#", "#", "#"]
  ["#", "O", "+", " ", "#"]
  ["#", "#", "+", "#", "#"]
  ["#", " ", "+", "+", "+"]
  ["#", "#", "#", "#", "#"]

# Number of steps to escape from the dungeon: 5
# Escape sequence: RDDRR

escape([
  ["#", "#", "#", "#", "#"],
  ["#", "O", " ", "X", "#"],
  ["#", "#", " ", "#", "#"],
  ["#", " ", " ", " ", "#"],
  ["#", "#", "#", "#", "#"]
]) ➞
  ["#", "#", "#", "#", "#"]
  ["#", "O", "+", "+", "#"]
  ["#", "#", " ", "#", "#"]
  ["#", " ", " ", " ", "#"]
  ["#", "#", "#", "#", "#"]

# Number of steps to escape from the dungeon: 2
# Escape sequence: RR

Notas

Consulta la segunda parte de este desafío: Escapa de la mazmorra II