- Описание
- Отправленные решения
2. Яндекс Змейка
Нам часто нужно симулировать действия пользователей, это бывает очень трудно, поэтому мы потренируемся на змейке.
У нас есть поле, змейка, еда в виде букв Y
, A
, N
, D
, E
, X
и набор движений змейки.
Задача состоит в том, чтобы симулировать движения змейки и вывести:
- Координаты головы змейки на конец симуляции
- Размер змейки в конце симуляции
Симуляция заканчивается, когда движения закончились. Гарантируется, что змейка пройдет весь путь не столкнувшись о себя или границы поля.
Когда змейка попадает на ячейку с едой, она увеличивает свой размер на 1 ячейку.
Например:
-------- --------
--oooY-- ===> --oooo--
-------- --------
Поле это массив строк, которые состоят из символов:
'o'
тело змейки'-'
пустое пространство'Y'
,'A'
,'N'
,'D'
,'E'
,'X'
еда для змейки
Ограничения:
- Поле всегда имеет размеры 13 (высота) на 21 (ширина)
- Змейка всегда начинается с размера в 3 ячейки поля
- Змейка всегда начинается с координат (0,0)
(0,1)
(0,2)
, где (0,2)
- это голова змейки
Пример поля:
const field = [
"ooo------Y--AND------",
"-----EXY--A--N---D--E",
"-X-----Y--A-N---D----",
"------EXY----A---N---",
"--DE--X---------YA---",
"-----ND---EXY--AN--D-",
"----E-----X-Y----A--N",
"D-----E-XY---AN---D--",
"E--------------------",
"-------X---Y------A-N",
"----D-EX----------YA-",
"--N-DEX--Y-A--N-----D",
"E------X--Y----------",
]
Движения это строка с символами U
, R
, L
, D
для направления движения (вверх, вправо, влево, вниз) и числами отображающими количество шагов в нужном направлении.
- Все цифры и символы разделены пробелами
Пример строки с движениями: R 12 D 2 R 2 U 1 R 2
Это означает:
- 12 шагов вправо
- 2 шага вниз
- 2 шага вправо
- 1 шаг наверх
- 2 шага вправо
/**
* @param {string[]} field - описание поля в виде массива строк
* @param {string} moves - строка со всеми движениями змейки
* @returns {[number[], number]}
*/
module.exports = function (field, moves) {
// Ваш код
return [[x, y], N]; // [x, y] - координаты головы змейки, N - размер змейки
}
Формат ввода
const field = [
"ooo------Y--AND------",
"-----EXY--A--N---D--E",
"-X-----Y--A-N---D----",
"------EXY----A---N---",
"--DE--X---------YA---",
"-----ND---EXY--AN--D-",
"----E-----X-Y----A--N",
"D-----E-XY---AN---D--",
"E--------------------",
"-------X---Y------A-N",
"----D-EX----------YA-",
"--N-DEX--Y-A--N-----D",
"E------X--Y----------",
];
const moves = `R 12 D 2 R 2 U 1 R 2`;
solution(field, moves);
Формат вывода
На выход надо вернуть массив с двумя элементами (tuple):
[x, y]
, где x - это координаты головы по вертикали, а y - по горизонталиN
, где N - это размер змейки в конце симуляции
Пример: [[1,18],9]
Ограничения
Ограничение времени
1 с
Ограничение памяти
64 МБ