Task 53_2. Робот

Task 53_2. Робот

UniLecs

Задача: Бесконечная строка ширины 1 разбита на клетки размера 1х1. В одной клетке находится робот который может двигаться из одной клетки в другую. Его перемещения определяются программой, каждая команда в которой – это одна из трех больших латинских букв: L, R, S. Выполняя команду L, робот перемещается на одну клетку влево, команду R – на одну клетку вправо, а S – остается в той же самой клетке.

Напишите программу, которая определит сколько различных клеток посетит робот.

Входные данные:

Программа для робота – строка из символов L, R, S. Программа состоит не более чем из 10000 команд.

Вывести количество различных клеток, которые посетит робот, выполняя свою программу.

Пример входа:

RRSRRLRR 

Пример выхода:

6

Реализация:

@moninigor прислал нам крутое решение на Python.

Игорь не просто решил поставленную задачу, но и дополнил решение для случая, когда робот двигается по плоскости. Респект тебе, бро! Итак, смотрим его решение.

Робот двигается по прямой (вправо/влево)
класс Position - описывает позицию робота


класс Robot - описывает движение робота


Тестируем 1й подход


Робот двигается по плоскости (вправо/влево + вниз/вверх)
новый класс PlanPosition - описывает позицию робота на плоскости


класс PlanRobot - новый робот теперь двигается по плоскости


Исходный код вы можете посмотреть здесь:

https://gist.github.com/unilecs/dbed15df735884a84de3d958f68e79ac


А также потестить оба подхода:

https://repl.it/@moninigor/FickleGreedyAsianpiedstarling

Report Page