Вход

Просмотр полной версии : Задача по js


marishka88
30.05.2022, 14:47
Добрый день! Прошу объяснить или помочь решить данную задачу.
Наш робот умеет преобразовывать команды движения в правильный сигнал и двигаться в соответствии с ним:

'forward' означает y + 1
'back' означает y - 1
'right' означает x + 1
'left' означает x - 1
Было бы здорово, чтобы робот знал, где он сейчас находится даже без GPS.

Напишите функцию getLocation, которая принимает массив начальных координат coordinates (в виде [x, y]) и массив истории команд commands.

Функция должна возвращать массив конечных координат робота в том же формате ([x, y]) после движений согласно командам из commands.

Например:

coordinates = [2, 1]
commands = ['left', 'back', 'back']

Координаты после первой команды: [1, 1] // 1 шаг влево
Координаты после второй команды: [1, 0] // 1 шаг назад
Координаты после третьей команды: [1, -1] // 1 шаг назад

Результатом будет [1, -1]
Вот мой нерабочий код :
function getLocation(coordinates, commands) {
let x = coordinates[0];
let y = coordinates[1];

for(let i = 1; i < commands.length; i++){
if(commands[i] === 'forward'){
y += coordinates[1] + 1 ;
}

if(commands[i] === 'back'){
y += coordinates[1] - 1;
}

if(commands[i] === 'right'){
x += coordinates[0] + 1 ;
}

if(commands[i] === 'left'){
x += coordinates[0] - 1;
}


}
return [x, y]

}

рони
30.05.2022, 15:04
marishka88,
зачем плодить тему, и зачем вы всунули лишнее в прежний почти рабочий код?

уберите лишнее из строк 7, 11, 15, 19

рони
30.05.2022, 15:20
marishka88,
function getLocation(coordinates, commands) {
let [x, y] = coordinates;
for (let command of commands) {
if (command === 'forward') {
y++; //y += 1
}
if (command === 'back') {
y--; //y -= 1
}
if (command === 'right') {
x++; //x += 1
}
if (command === 'left') {
x--; // x -= 1
}
}
return [x, y]
}
let coordinates = [2, 1],
commands = ['left', 'back', 'back']
alert(getLocation(coordinates, commands));

marishka88
30.05.2022, 15:34
Спасибо!