[js] Проблема с массивами.
Доброе время суток!
Нужна функция getLocation, которая будет принимать массив начальных координат coordinates (в виде [x, y]), массив истории команд роботу commands и возвращать массив конечных координат робота в том же виде ( [x, y]) Напомню возможные команды роботу: "forward" - прямо x + 0, y + 1, "back" - назад x + 0, y - 1, "right" - направо x + 1, y + 0, "left" - налево x - 1, y + 0, Примеры: getLocation([0, 0], ['forward', 'right']) === [1, 1] getLocation([2, 3], ['back', 'back', 'back', 'right']) === [3, 0] getLocation([0, 5], ['back', 'back', 'back', 'right', 'left', 'forward']) === [0, 3] Вот кусок программы, идеи кочились((((:-? function getLocation(coordinates, commands) { var arr =[0,0]; var arr1 = coordinates; var arr2=[0,0]; for(var i = 0; i < commands.length; i++){ switch(commands[i]){ case 'forward': arr2 =[0,1]; for(var i = 0; i < arr2.length; i++) { arr.push(arr1[i]+arr2[i]); arr.shift(); } return arr; case 'back': arr2 =[0,-1]; for(var i = 0; i < arr2.length; i++) { arr.push(arr1[i]+arr2[i]); arr.shift(); } return arr; case 'right': arr2 =[1,0]; for(var i = 0; i < arr2.length; i++) { arr.push(arr1[i]+arr2[i]); arr.shift(); } return arr; case 'left': arr2 =[-1,0]; for(var i = 0; i < arr2.length; i++) { arr.push(arr1[i]+arr2[i]); arr.shift(); } return arr; } } } |
Либо у вас все слишком сложно, либо я чего то не понял.
А почему не так function getLocation(coordinates, commands) { const arr =[...coordinates]; for(let i = 0; i < commands.length; i++){ switch(commands[i]){ case 'forward': arr[1]++; break; case 'back': arr[1]--; break; case 'right': arr[0]++; break; case 'left': arr[0]--; break; } } return arr; } console.log( getLocation([0, 0], ['forward', 'right']) ); console.log( getLocation([2, 3], ['back', 'back', 'back', 'right']) ); console.log( getLocation([0, 5], ['back', 'back', 'back', 'right', 'left', 'forward']) ); |
function getLocation(coordinates, commands) { var arr = coordinates.slice(); commands.forEach(cmd => { arr[0] += cmd === 'left' ? -1 : cmd === 'right' ? 1 : 0 arr[1] += cmd === 'back' ? -1 : cmd === 'forward' ? 1 : 0 }) return arr; } |
Спасибо за помощь!
|
Нет у меня сложно :lol:
|
Часовой пояс GMT +3, время: 12:51. |