Escape da masmorra I

Ogmo é um mago que foi preso em uma masmorra. Ele precisa da sua ajuda.

Crie uma função que receba um mapa da masmorra e retorne uma única string multilinha contendo o caminho mais curto marcado, o número mínimo de passos até a saída e a sequência de fuga.

  • Ogmo começa dentro da masmorra na posição indicada por O.
  • A saída é indicada por X. Sempre haverá uma saída da masmorra, e ela pode estar em qualquer lugar dentro da masmorra (não apenas nas bordas do mapa).
  • Ogmo só pode se mover em quatro direções: direita R, esquerda L, cima U, baixo D.
  • Cada passo que Ogmo precisar dar para escapar da masmorra deve ser indicado no mapa da solução com +.
  • As paredes da masmorra são indicadas por #. Ogmo só pode se mover pelos espaços vazios " ".
  • Reproduza o layout multilinha mostrado nos exemplos e nos testes.

Exemplos

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

Observações

Confira a segunda parte deste desafio: Escape da masmorra II