# Решения задач

### Задача 6. Конкатенация слов Автор: А. А. Дуванов

Во второй строке записано выражение, состоящие из слов, соединенных между собой операцией конкатенации “+”. Некоторые слова или даже все, могут быть пустыми. Произвести указанные операции и получить результат. В начальный момент исполнитель расположен слева от записи.

#### Решение

Описание алгоритма. Идем по записи в рекурсивном цикле, выбрасывая из неё кубики “+”. На каждом таком выбросе “запоминаем” команду `ВЛЕВО` — эти команды после завершения рекурсии уплотнят запись, ликвидируя пустые места от выброшенных кубиков.

    ЭТО Вход
      Шаг
      ЕСЛИ       +        ТО { ВВЕРХ ВНИЗ Вход ВЛЕВО }
      ИНАЧЕ ЕСЛИ НЕ ПУСТО ТО Вход
      ИНАЧЕ                  ВВЕРХ
    КОНЕЦ

    ЭТО Шаг
      ВНИЗ ВПРАВО ВВЕРХ
    КОНЕЦ

Тесты

Исходная запись | Комментарий | Ожидаемый результат
# | Пустая запись. | #
#+ #++ #+++ | Конкатенация пустых слов. | # # #
#+1+ #++1++2++ | Конкатенация пустых и не пустых слов. | 1# 12#
#1+2+345+67 | Конкатенация не пустых слов. | 1234567#

### Задача 7. Середина отрезка Авторы: Игорь Калинин и Павел Сазонтов, Находка

Во втором столбце поля — два кубика. Один в клетке (1,2), другой — где-то ниже, в нечётной строке. В начальный момент Кукарача расположен в клетке (2,2) под первым кубиком. Поставить исполнителя в середину отрезка между двумя кубиками (которые в ответе должны остаться на прежних местах).

#### Решение

    ЭТО Вход
      Работа
      ВПРАВО // Возврат во 2-ой столбец
    КОНЕЦ

    ЭТО Работа
      ВНИЗ
      ЕСЛИ ПУСТО
        ТО    { ВНИЗ Работа }
        ИНАЧЕ { Возврат_кубика Подготовка }
      ВВЕРХ // Рекурсивная пружинка
    КОНЕЦ

    ЭТО Возврат_кубика
      ВЛЕВО ВНИЗ ВНИЗ ВПРАВО ВВЕРХ
    КОНЕЦ

    // Подставим исполнителя под пружину в 1-ом столбце
    ЭТО Подготовка
      ВЛЕВО ВВЕРХ
    КОНЕЦ