Чтобы упростить последовательность команд, давайте сначала разберемся с оригинальной последовательностью:
Исходная последовательность команд:
- 232414423114
Рассмотрим каждую команду:
- 2 — вниз
- 3 — влево
- 2 — вниз
- 4 — вправо
- 1 — вверх
- 4 — вправо
- 2 — вниз
- 3 — влево
- 1 — вверх
- 1 — вверх
Теперь можно проанализировать движение:
- Команды 2 (вниз) и 3 (влево) повторяются, что может быть упрощено.
- Каждый раз, когда мы двигаемся вниз, а потом снова влево, можно суммировать.
- Кроме того, движение вправо и потом снова вниз и вверх также можно оптимизировать.
Теперь увидим, что по мере выполнения команд, например:
- после первой «вниз-влево» мы можем выполнить эти команды быстрее, заменив на соответствующие позиции.
Сжимаем команды:
- Два раза вниз (2).
- Один раз влево (3).
- Один раз вправо (4).
- Один раз вверх (1).
- Два раза вниз (2).
- Два раза влево (3).
- Два раза вверх (1).
Совместим некоторые команды и получим: 2324142 (два раза вниз, два раза влево), а также добавим другие команды.
Таким образом, мы можем получить следующую упрощенную последовательность:
2324(1,2) или 234121
Давайте проверим на всякий случай. Соответственно после каждой команды подытожим:
- 2324: два раза вниз, два раза влево, один раз вправо,
- 2(1,2): дважды нижние, выше каждая двумя, тем более первый ряд.
Это заключая данный алгоритм может быть представлен в более компактном виде.
