Показать сообщение отдельно
  #1 (permalink)  
Старый 05.11.2020, 12:14
Интересующийся
Отправить личное сообщение для OlesiaBOM Посмотреть профиль Найти все сообщения от OlesiaBOM
 
Регистрация: 05.11.2020
Сообщений: 22

[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;

}
}
}
Ответить с цитированием