Давайте разберем поставленную задачу по шагам и постараемся упростить алгоритм, сохраняя тот же результат.
В нашем алгоритме указаны команды, которые исполняет робот. Вот что означает каждая команда:
- 1 — движение вверх
- 2 — движение вниз
- 3 — движение влево
- 4 — движение вправо
- 5 — закрасить клетку
Теперь запишем изначальный алгоритм:
131413324223
Теперь разобьем его на отдельные шаги:
- 1 - Вверх
- 3 - Влево
- 1 - Вверх
- 4 - Вправо
- 1 - Вверх
- 3 - Влево
- 2 - Вниз
- 4 - Вправо
- 2 - Вниз
- 2 - Вниз
- 3 - Влево
- 4 - Вправо
- 2 - Вниз
3
Теперь давайте проанализируем движения робота и попытаемся упорядочить и сократить команды.
Анализ движения:
- 1 (вверх) -> 1 клетка вверх
- 3 (влево) -> 1 клетка влево
- 1 (вверх) -> 1 клетка вверх
- 4 (вправо) -> 1 клетка вправо (возвращаемся в ту же колонку)
- 1 (вверх) -> 1 клетка вверх
- 3 (влево) -> 1 клетка влево
- 2 (вниз) -> 1 клетка вниз
- 4 (вправо) -> 1 клетка вправо (возвращаемся в ту же колонку)
- 2 (вниз) -> 2 клетки вниз (это движение "2 вниз" вместо "1 вниз" два раза)
- 3 (влево) -> 1 клетка влево
- 4 (вправо) -> 1 клетка вправо (возвращаемся в ту же колонку)
- 2 (вниз) -> 1 клетка вниз
Упрощение:
Можем заметить, что несколько шагов могут быть объединены:
- 1 вверх + 1 вверх + 1 вниз (сдвинуть вверх на 2 клетки и вернуться на 1) = 1 вверх 1 вниз (это можно записать как 1 вверх 1 вниз иначе)
- Таким образом упрощения будут:
1, 3, 1, 4 => 1, 3, 2 (прыжок)
Итак, результат алгоритма мы можем записать как:
131223 (считаем список)
Теперь давайте запишем более короткий вариант алгоритма:
Ответ:
Таким образом, более короткий вариант алгоритма, который даст тот же результат, это 131223.