Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (11)
ЕСЛИ нашлось (112)
ТО заменить (112, 6)
ИНАЧЕ заменить (11, 3)
КОНЕЦ ПОКА
КОНЕЦ
Исходная строка содержит десять единиц и четыре двойки, других цифр нет, точный порядок расположения единиц и двоек неизвестен. Какую наибольшую сумму цифр может иметь строка, которая получится после выполнения программы?
Сумма цифр будет наибольшей, если строка будет выглядеть, например, таким образом: 11211211211211. В этом случае алгоритм четыре раза заменит последовательность
Ответ: 27.
Приведём решение Садыкова Руслана на языке Python.
from itertools import product
maxx = 0
p=''
for i in product('12', repeat=14):
if i.count('1') == 10 and i.count('2') == 4:
p = ''.join(i)
while '11' in p:
if '112' in p:
p = p.replace('112','6',1)
else:
p = p.replace('11','3',1)
c = 0
for k in p:
c = c + int(k)
maxx = max(c, maxx)
print(maxx)
Приведём решение Бориса Савельева на языке Python.
from random import shuffle
p=[]
for i in range (0,1000):
a = list('1'*10 + '2'*4)
shuffle(a)
a=''.join(a)
while '11' in a:
if '112' in a:
a = a.replace('112','6',1)
else:
a = a.replace('11', '3', 1)
p.append((a.count('1')*1+a.count('2')*2+a.count('6')*6 +a.count('3')*3))
print(max(p))

