Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (12)
заменить (12, 4)
КОНЕЦ ПОКА
КОНЕЦ
Исходная строка содержит десять единиц и некоторое количество двоек, других цифр нет, точный порядок расположения единиц и двоек неизвестен. После выполнения программы получилась строка с суммой
Если в строке из десяти единиц и одной двойки алгоритм найдёт и заменит подстроку 12, то сумма всех цифр получившейся строки будет
Таким образом, наименьшее количество двоек, которое могло быть в исходной строке,
При этом все двойки должны чередоваться с единицами, то есть исходная строка может выглядеть, например, так:
121212121211111.
В результате выполнения программы получим строку 4444411111.
Ответ: 5.
Приведём решение Евгений Кузьминовой на Python:
for i in range(1, 10000):
s0 = i*'12' + (10-i)*'1'
s = s0
while '12' in s:
s = s.replace('12', '4', 1)
r = s.count('1') + s.count('2')*2 + s.count('4')*4
if r == 25:
print(s0.count('2'))
break
Приведём решение Михаила Глинский на Python:
s25 = 0
a = 0
while s25 != 25:
a += 1
s = '1'*10 + a*'2'
while '12' in s :
s=s.replace('12','',1)
s=s +'4'
s25 = s.count('1')+s.count('2')*2+s.count('4')*4
print(a)
Приведём решение Бориса Савельева на Python:
from random import shuffle
p = []
for x in range(50):
for i in range (0,1000):
a = list('1'*10 + '2'*x)
shuffle(a)
a = ''.join(a)
while '12' in a:
a = a.replace('12','4',1)
if (a.count('1')*1+a.count('2')*2+a.count('4')*4)==25:
p.append(x)
print(min(p))

