Trazador de rutas
En este desafío, el área de trabajo será una matriz de 4x4 que contiene tres tipos de caracteres:
@Tu posición.-Un espacio vacío.&, #, $Objetos coleccionables.
Desde tu punto de partida en la cuadrícula, debes trazar una ruta colocando una x en cada espacio visitado, siguiendo una secuencia de letras con las direcciones que debes tomar:
lIzquierdarDerechauArribadAbajo
input = "luur"
// left, up, up, right
grid = [
["-", "-", "-", "#"]
["-", "-", "$", "-"]
["-", "-", "-", "@"]
["-", "&", "-", "-"] ]
result = { route = [
["-", "-", "x", "x"],
["-", "-", "x", "-"],
["-", "-", "x", "@"],
["-", "&", "-", "-"] ],
items: "$#" }Cuando termines los movimientos, tendrás una nueva cuadrícula con la ruta indicada trazada (una ruta hecha de caracteres x) y una serie de objetos recogidos durante el recorrido.
Dadas una matriz grid y una cadena con las direcciones que debes tomar input, implementa una función que devuelva un objeto literal que contenga la ruta trazada como una nueva matriz y los objetos recogidos como una cadena.
Ejemplos
function routeTracer([
["-", "#", "-", "-"],
["$", "#", "@", "&"],
["-", "#", "$", "&"],
["$", "-", "&", "-"]
], "lddr",) ➞ {
route: [
["-", "#", "-", "-"],
["$", "x", "@", "&"],
["-", "x", "$", "&"],
["$", "x", "x", "-"]
],
items: "##&"
}Notas
- La posición inicial no debe cambiarse en la nueva matriz.
- La
xsobrescribirá el símbolo que ya esté presente en el espacio visitado. - En la cadena devuelta, los objetos deben aparecer en el orden en que los recogiste. Cuidado con los espacios vacíos: ¡no se pueden recoger!
- No te preocupes por los casos "out of bounds"; las cadenas de instrucciones solo contienen rutas válidas.
- Las cadenas de instrucciones tendrán diferentes longitudes.