|
|
|
|
|
|
||
Во второй строке записано выражение, состоящие из слов, соединенных между собой операцией конкатенации +. Некоторые слова или даже все, могут быть пустыми. Произвести указанные операции и получить результат. В начальный момент исполнитель расположен слева от записи.
Описание алгоритма. Идем по записи в рекурсивном цикле, выбрасывая из неё кубики +. На каждом таком выбросе запоминаем команду ВЛЕВО эти команды после завершения рекурсии уплотнят запись, ликвидируя пустые места от выброшенных кубиков.
ЭТО Вход
Шаг
ЕСЛИ + ТО { ВВЕРХ ВНИЗ Вход ВЛЕВО }
ИНАЧЕ ЕСЛИ НЕ ПУСТО ТО Вход
ИНАЧЕ ВВЕРХ
КОНЕЦ
ЭТО Шаг
ВНИЗ ВПРАВО ВВЕРХ
КОНЕЦ
Тесты
| Исходная запись | Комментарий | Ожидаемый результат |
| # | Пустая запись. | # |
| #+ #++ #+++ |
Конкатенация пустых слов. | # # # |
| #+1+ #++1++2++ |
Конкатенация пустых и не пустых слов. | 1# 12# |
| #1+2+345+67 | Конкатенация не пустых слов. | 1234567# |
Во втором столбце поля два кубика. Один в клетке (1,2), другой где-то ниже, в нечётной строке. В начальный момент Кукарача расположен в клетке (2,2) под первым кубиком. Поставить исполнителя в середину отрезка между двумя кубиками (которые в ответе должны остаться на прежних местах).
ЭТО Вход
Работа
ВПРАВО // Возврат во 2-ой столбец
КОНЕЦ
ЭТО Работа
ВНИЗ
ЕСЛИ ПУСТО
ТО { ВНИЗ Работа }
ИНАЧЕ { Возврат_кубика Подготовка }
ВВЕРХ // Рекурсивная пружинка
КОНЕЦ
ЭТО Возврат_кубика
ВЛЕВО ВНИЗ ВНИЗ ВПРАВО ВВЕРХ
КОНЕЦ
// Подставим исполнителя под пружину в 1-ом столбце
ЭТО Подготовка
ВЛЕВО ВВЕРХ
КОНЕЦ