Робот в арене: где он остановится?

тема: Моделирование процессов · уровень: базовый

Условие

В игре есть прямоугольная арена из клеток размером N×M. Робот начинает в клетке (r, c). Дальше игра проигрывает строку команд из букв U, D, L, R.

Робот пытается выполнить команды по очереди:

Если команда уводит робота за границу арены, робот остаётся на месте и переходит к следующей команде.

Нужно узнать, в какой клетке робот окажется после всех команд.

Формат ввода

В первой строке записаны два целых числа N и M — размеры арены. Во второй строке записаны два целых числа r и c — стартовая позиция робота (строка и столбец). В третьей строке записана строка S из символов U, D, L, R.

Формат вывода

Выведите два числа — конечные r и c.

Ограничения

Пример

Ввод:

3 4
2 2
UURRDDL

Вывод:

3 3

Как решать — идея подхода

Приём: Пошаговая симуляция с проверкой границ

Ключевое наблюдение: команда влияет только на текущую позицию робота, а поле огромным быть не мешает — нам не нужно хранить N×M клеток, достаточно держать две координаты (r, c). Поэтому решение — простая симуляция (прогон команд) с проверкой «влезли ли в границы».

Почему это работает: правила говорят, что если шаг выводит за арену, позиция не меняется. Значит, для каждой буквы мы можем вычислить «кандидат» (nr, nc) и либо принять его, либо отбросить.

План:

Мини-сниппет проверки: if 1 <= nr <= N and 1 <= nc <= M: r, c = nr, nc

Сложность: O(|S|) по времени (до 2000 шагов) и O(1) по памяти.

Частая ошибка: перепутать строки и столбцы (U/D меняют r, L/R меняют c) или забыть, что индексация 1..N и 1..M, а не 0..N-1.

Разберись руками

Арена 3×4 (строки 1..3, столбцы 1..4). Робот стартует в клетке (2, 2) и выполняет команды строки UURRDDL по очереди. Если шаг ведёт за границу, робот остаётся в той же клетке.

Идея: Идём по командам по одной: пробуем сдвинуться на 1 клетку в нужную сторону, проверяем границы арены, и либо принимаем ход, либо оставляем позицию как была. После последней команды выводим текущие координаты.

Решить задачу с автопроверкой на Python →

Куда дальше