Цель миссии обследовать это необычно прямоугольное плато и отправить данные о нём обратно на Землю. Ваша задача – разработать API, с помощью которого планетоход сможет двигаться по плато. Плато – сетка (по-умолчанию 10x10), а у ровера есть пункт назначения, который состоит из:
- позиции на сетке (пара координат – X и Y)
- направления по компасу планеты (символ, один из N, S, E, W)
Пример:
type Position = {
x: number
y: number
direction: 'N'|'S'|'E'|'W'
}
const p: Poisiton = {
x: 2,
y: 3,
direction: "N",
}
Плато задается в виде сетки с размерностью по x
и y
.
На плато могут быть препятствия, которые задаются вместе с размерностью при создании карты плато. Например:
{ x: 2, y: 2, obstacles: [{ x: 1, y: 1 }] }
Такая карта описывает плато вида:
_ _
|_|П|
|_|_|
П - препятствие
На вход поступает строка с командами:
- L и R чтобы повернуть ровер влево и вправо
- M двигает ровер в установленном направлении
- Пустые строки не принимаются
- Строки, содержащие текст кроме команд, не принимаются
- Если назначение планетохода после выполнения команды выходит за пределы сетки – команда не принимается
- Если на пути есть препятствие – команда не принимается
На выходе должна быть финальная позиция ровера после выполнения всех команд в переданной строке. Позиция представлена в объекта с типом Position
(описан выше), содержащим пару координат и направления