Вычисление конечных координат робота

Доброго времени суток!

Нужна функция 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]

Ответы (2 шт):

Автор решения: Zhihar

я бы сделал так:

def getLocation(coords, commands):
    dictionary = {
        'forward':  (0, 1),
        'back':     (0, -1),
        'left':     (-1, 0),
        'right':    (1, 0)
    }
    
    for command in commands:
        data = dictionary.get(command, (0, 0))
        coords = [coords[0] + data[0], coords[1] + data[1]]
    
    return coords

заодно левые команды отсекать будет

→ Ссылка
Автор решения: SergFSM

или еще так:

def getLocation(coords, commands):
    x, y = coords
    x += commands.count('right') - commands.count('left')
    y += commands.count('forward') - commands.count('back')
    return x, y
→ Ссылка