Skip to content

Latest commit

 

History

History
62 lines (43 loc) · 2.47 KB

rules.md

File metadata and controls

62 lines (43 loc) · 2.47 KB

Правила

Цель

Цель миссии обследовать это необычно прямоугольное плато и отправить данные о нём обратно на Землю. Ваша задача – разработать 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 (описан выше), содержащим пару координат и направления