Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (21)
заменить (21, 5)
КОНЕЦ ПОКА
КОНЕЦ
Исходная строка содержит десять единиц и некоторое количество двоек, других цифр нет, точный порядок расположения единиц и двоек неизвестен. После выполнения программы получилась строка с суммой
Если в строке из десяти единиц и одной двойки алгоритм найдёт и заменит
Таким образом, наименьшее количество двоек, которое могло быть в исходной строке,
Ответ: 6.
Приведём решение Николая Аксенова на языке Python.
s = '21'*10 + '2'*100
k= 0
while ('21' in s) :
s = s.replace('21', '5', 1)
k += 1
if k*5+s.count('1') == 34:
print('Минимальное количество двоек:', k)

