Задача
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w)
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выпонение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Б) нашлось (v)
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда 1
ИНАЧЕ команда 2
КОНЕЦ ЕСЛИ
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 70 идущих подряд цифр 8? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (2222) ИЛИ нашлось (8888)
ЕСЛИ нашлось (2222)
ТО заменить (2222, 88)
ИНАЧЕ заменить (8888, 22)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Решение
Проанализируем алгоритм.
Редактор будет выполнять команды только тогда, когда в строке встречается цепочка «2222» или цепочка «8888».
Если в строке есть «2222», то тогда эта цепочка заменяется на «88».
Если в строке нет цепочки «2222», но есть «8888», то цепочка «8888» заменяется на «22», замена выполняется 1 раз.
По условию имеем 8...8 (70).
Теперь вернемся к условию программы. Условие цикла истинно, а условие ЕСЛИ нашлось 2222 ложно. Условие если в строке нет цепочки «2222», но есть «8888» истинно, производим замену:
Выполняем следующую шаг цикла: условие цикла истинно, а условие ЕСЛИ нашлось 2222 ложно. Условие если в строке нет цепочки «2222», но есть «8888» истинно, производим замену:
Выполняем третий шаг цикла: условие цикла истинно, и условие ЕСЛИ нашлось 2222 истинно. Выполняем замену:
Таким образом, за три шага цикла мы получили из 70 «восьмерок» 64 - 6 восьмерок исчезли. Вычислим, сколько раз можно вычесть из исходных семидесяти восьмерок по 6 восьмерок:
64 / 6 = 10, остаток 4
Остаток 4 означает, что после десяти шагов цикла остались еще четыре восьмерки, которые на следующем шаге заменятся на двойки - 22.
Таким образом, после выполнения алгоритма, остаются две цифры «2».
Ответ: 22.