Premisa
Tan recientemente llegué media hora antes de la cita y decidí esperar afuera. También determiné que se vería extraño si me paraba inmóvil frente a la casa. Por lo tanto, decidí hacer una caminata rápida, dentro de un área limitada. También concluí que si comenzaba a caminar en círculos, sería obvio que estaba merodeando. Así que me inspiré para crear mi primer desafío de Code Golf.
Especificación
Se le dará una lista, un mapa del área, que contendrá " "
o "#"
, que representan espacios libres y obstáculos de algún tipo. Los espacios libres solo se pueden cruzar una vez, y se tarda 1 minuto en cruzarlos. Su posición inicial se indicará con una "@"
tradición per roguelike, y el objetivo se representará con un "$"
porque eso es lo que va a perder allí. También se le dará un número entero que representará la cantidad de minutos que tiene que perder antes de no parecer que estaba entrometiéndose. Cuando aterrizas en el"$"
, tendrá que haber sido la cantidad exacta de minutos (por lo tanto, si estaba haciendo la cuenta regresiva, tendrá que ser 1 en un mosaico adyacente y 0 en el mosaico). Siempre será posible llegar al destino. Su programa o función tendrá que devolver una lista que muestre la ruta más corta con <,>, ^ y v para representar las cuatro direcciones posibles.
Ejemplos
Entrada:
[[" ", " ", " ", " "],
["@", " ", " ", "$"],
[" ", " ", " ", " "],
[" ", " ", " ", " "]]
y
5
Ouput:
[[">", ">", ">", "v"],
["^", " ", " ", "$"],
[" ", " ", " ", " "],
[" ", " ", " ", " "]]
Entrada:
[[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "],
["@", "#", " ", "$", " "],
[" ", " ", " ", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
y
7
Salida:
[[" ", "#", " ", " ", " "],
[" ", "#", ">", "v", " "],
["v", "#", "^", "$", " "],
[">", ">", "^", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
Entrada:
[[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "],
["@", "#", " ", "$", " "],
[" ", " ", " ", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
y
17
Salida:
[[" ", "#", " ", "v", "<"],
[" ", "#", " ", "v", "^"],
["v", "#", " ", "$", "^"],
[">", ">", "v", ">", "^"],
[" ", "#", "v", "^", "<"],
[" ", "#", ">", ">", "^"]]
Reglas
- Se aplican lagunas estándar
- Cada ficha solo debe moverse una vez
- La cantidad exacta de tiempo debe gastarse en el tablero
- Solo se debe mostrar una ruta en el caso de múltiples rutas
- Esta es una pregunta de código de golf, por lo que la respuesta más corta gana
- Según la pregunta de user202729 en los comentarios, puede asumir una entrada válida.
Agregue un comentario si se requiere alguna aclaración adicional