Тема 12. Алгоритмы – анализ сложных алгоритмов

12.01 Исполнитель «Редактор» – известная строка

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ сложных алгоритмов
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#7415

Исполнитель Панцирь получает на вход строку цифр и преобразовывает её. Панцирь может выполнять две команды, в обеих командах v и w обозначают цепочки символов.

1. заменить (v, w)

2. нашлось (v)

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Панцирь. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».

Дана программа для исполнителя Панцирь:

НАЧАЛО

ПОКА нашлось(54)  ИЛИ нашлось(27)

ЕСЛИ нашлось(55 )

ТО заменить(55,2)

ИНАЧЕ ЕСЛИ нашлось(22)

ТО заменить(22,7)

КОНЕЦ ЕСЛИ

ЕСЛИ нашлось(44 )

ТО заменить(44,4)

ИНАЧЕ ЕСЛИ нашлось(77)

ТО заменить(77,7)

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Сколько цифр 7 получится в строке, полученной в результате применения приведённой выше программы к строке: 5◟5-.◝.◜.55◞4◟4-.◝.◜.44◞2◟2-.◝.◜.22◞ 7◟7..◝.◜77◞?
   20      10       30       40

Показать ответ и решение

Решение руками

Для удобства будем использвовать следующие обозначения для количества одинаковых цифр, идущих подряд: A   ,
 (B)  где A - цифра, которая находится в строке, а B - количество этих цифр.

Изначально была строка 5(20)4(10)2(30)7(40).

Условно первый блок программы – это исчезновение пятерок, и появление на их месте 10 двоек, и четверок. Это происходит за счет замены 2 пятерок на одну двойку, т.е. произойдет 10 замен, а также 10 раз 2 четверки заменятся на 1 (9 раз сотрется четверка). Стоит заметить, что последняя четверка не сотрется, вместо нее сотрется первая попавшаяся в строке семерка. В итоге получится следующая строка:

2(10)4(1)2(30)7(39)

Далее все двойки, стоящие до четверки, заменятся на 7.

2   4  2   7    →  7  2  4   2   7   →  7   2  4  2   7    →  7  2  4   2   7    → 7   2  4  2   7    →  7  2   4  2   7
 (10) (1) (30) (39)     (1) (8)(1) (30) (38)    (2) (6) (1) (30)(38)    (1) (6) (1) (30) (38)     (2) (4) (1)(30&#x002

Можно заметить, что в определенный момент программа доходит до уменьшения количества двоек перед четверкой без добавления новых семерок в начале строки или удаления семерок из группы, находящейся в конце. Это будет происходить до полного удаления группы двоек перед четверкой. В результате получим следующую строку:

7  4  2   7
 (1) (1) (30)(38)

Похожие действия произойдут с группой двоек после четверки:

7(1)4(1)2(30)7(38) → 7(1)4(1)7 (1)2(28)7(37) →  7(1)4(1)7(2)2(26)7 (37) → 7(1)4(1)7(1)2(26)7(37)

Как видно, после достижения отметки 28 в количестве двоек программа начинает их уменьшать, не затрагивая семерки. Таким образом после выполнения программы останется следующая строка:

7(1)4(1)7(1)7 (37)

Количество оставшихся семерок равно 39.

Решение программой

s = ’5’ * 20 + ’4’ * 10 + ’2’ * 30 + ’7’ * 40

while ’54’ in s or ’27’ in s:
    if ’55’ in s:
        s = s.replace(’55’, ’2’, 1)
    elif ’22’ in s:
        s = s.replace(’22’, ’7’, 1)
    if ’44’ in s:
        s = s.replace(’44’, ’4’, 1)
    elif ’77’ in s:
        s = s.replace(’77’, ’7’, 1)

count_of_sevens = s.count(’7’)
print(count_of_sevens)



Ответ: 39

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!