Rastreador de rotas
Neste desafio, a área de trabalho será uma matriz 4x4 contendo três tipos de caracteres:
@Sua posição.-Um espaço vazio.&, #, $Itens coletáveis.
A partir do seu ponto inicial na grade, você deve traçar uma rota colocando um x em cada espaço visitado, seguindo uma sequência de letras com as direções a serem tomadas:
lEsquerdarDireitauCimadBaixo
input = "luur"
// left, up, up, right
grid = [
["-", "-", "-", "#"]
["-", "-", "$", "-"]
["-", "-", "-", "@"]
["-", "&", "-", "-"] ]
result = { route = [
["-", "-", "x", "x"],
["-", "-", "x", "-"],
["-", "-", "x", "@"],
["-", "&", "-", "-"] ],
items: "$#" }Quando os movimentos terminarem, você terá uma nova grade com a rota indicada traçada (uma rota feita de caracteres x) e uma série de itens coletados ao longo do caminho.
Dada uma matriz grid e uma string com as direções a serem tomadas input, implemente uma função que retorne um objeto literal contendo a rota traçada como uma nova matriz e os itens coletados como uma string.
Exemplos
function routeTracer([
["-", "#", "-", "-"],
["$", "#", "@", "&"],
["-", "#", "$", "&"],
["$", "-", "&", "-"]
], "lddr",) ➞ {
route: [
["-", "#", "-", "-"],
["$", "x", "@", "&"],
["-", "x", "$", "&"],
["$", "x", "x", "-"]
],
items: "##&"
}Observações
- A posição inicial não deve ser alterada na nova matriz.
- O
xsubstituirá o símbolo que já estiver presente no espaço visitado. - Na string retornada, os itens devem aparecer na ordem em que foram coletados. Cuidado com os espaços vazios: eles não podem ser coletados!
- Não se preocupe com casos de "out of bounds"; as strings de instruções contêm apenas rotas válidas.
- As strings de instruções terão comprimentos diferentes.