Задание №12 — Анализ строковых алгоритмов

К списку заданий
#69651Задание №12ФИПИ
Анализ алгоритмов и исполнители

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 05217150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл
   ПОКА условие
      последовательность команд
   КОНЕЦ ПОКА
выполняется, пока условие истинно.

В конструкции
   ЕСЛИ условие
      ТО команда 1
      ИНАЧЕ команда 2
   КОНЕЦ ЕСЛИ
выполняется команда 1 (если условие истинно) или команда 2 (если условие ложно).

Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (12) ИЛИ нашлось (3322) ИЛИ нашлось (2222)
   ЕСЛИ нашлось (12)
      ТО заменить (12, 33)
   КОНЕЦ ЕСЛИ
   ЕСЛИ нашлось {2222)
      ТО заменить (2222, 1)
   КОНЕЦ ЕСЛИ
   ЕСЛИ нашлось (3322)
      ТО заменить (3322, 21)
   КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

На вход приведённой выше программе поступает строка, начиная с цифры «1», а затем содержащая n цифр «2» (3 < n < 10000). Определите наименьшее значение n, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 218.