Тема 12. Сложные исполнители и алгоритмы
12.02 Исполнитель «Редактор»
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела сложные исполнители и алгоритмы
Решаем задачи

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

Задача 1#63516

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

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

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

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

Дана программа для исполнителя Редактор:

НАЧАЛО

ПОКА нашлось(01) ИЛИ нашлось(02) ИЛИ нашлось(03)

   заменить(01, 2302)

   заменить(02, 10)

   заменить(03, 201)

КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 51 единицу, 29 двоек и 23 тройки. Сколько троек было в исходной строке?

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

Решение 1

Распишем все переходы "до упора"

  1. 01 → 2302 → 2310
  2. 02 → 10
  3. 03 → 201 → 22302 → 22310

Если в каждый из переходов обозначить за x,y,z  , то получится, что единицы в конечном выражении дают переходы x,y,z  (т.к. в каждом переходе до "упора"возникает по одной единице), двойки дают переходы x,z  (причем 1 переход z  дает две двойки), тройки дают переходы x,z  , то все это можно выразить следующим образом.

x + y+ z = 51
x + 2z = 29
x + z = 23

Решив систему из этих трех уравнений получим одно решение — x,y,z = 17,28,6  , то есть количество троек в исходном выражении равно 6.

Ответ: 6

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

Задача 2#63515

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

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

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

Дана программа для редактора:

НАЧАЛО

ПОКА НЕ нашлось (00)

   заменить (012, 30)

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

   ТО

      заменить (011, 20)

      заменить (022, 40)

   ИНАЧЕ

      заменить (01, 10)

      заменить (02, 101)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка A содержала ровно два нуля – на первом и на последнем месте, а также по 10 единиц и двоек. После выполнения данной программы получилась строка B, содержащая 7 единиц и 5 двоек. Какое наименьшее количество троек может быть в строке B?

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

Быстрое решение прогой (пишем свой Product, в котором сразу отсекаются варианты, где единиц или двоек больше, чем 10). Поэтому, вариантов всех строк, где есть два нуля и количество единиц и двоек равное 10 совсем небольшое для дальнейшего перебора (т.к. мы сразу ищем нужные варианты).

Пример подобной функции есть в видео по разбору заданий 8 "КККОМБО-РОЛИК: 4 ЧАСА Уничтожаем 8 задачи из ЕГЭ по инфе РУКАМИ и ПРОГОЙ" на 01:36:50

def f(s = ’’, l = 0, c1 = 0, c2 = 0):
    if l == 20 and c1 == 10 and c2 == 10:
        return s

    x, y = ’’, ’’
    if c1 <= 9:
        x = f(s + ’1’, l + 1, c1 + 1, c2)
    if c2 <= 9:
        y = f(s + ’2’, l + 1, c1, c2 + 1)
    return x + ’ ’ + y

a = f().split()
b = []
minim = 10000000

for i in a:
    s = ’0’ + i + ’0’
    while not ’00’ in s:
        s = s.replace(’012’, ’30’, 1)

        if ’011’ in s:
            s = s.replace(’011’, ’20’, 1)
            s = s.replace(’022’, ’40’, 1)
        else:
            s = s.replace(’01’, ’10’, 1)
            s = s.replace(’02’, ’101’, 1)

    if s.count(’1’) == 7 and s.count(’2’) == 5:
        minim = min(minim, s.count(’3’))

print(minim)

Ответ: 3

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

Задача 3#63514

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

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

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

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

Дана программа для исполнителя Редактор:

НАЧАЛО

   ПОКА НЕ нашлось (00)

      заменить (02, 101)

      заменить (11, 2)

      заменить (012, 30)

      заменить (010, 00)

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка содержала ровно два нуля – на первом и на последнем месте, 50 двоек, больше 100 единиц и не содержала других цифр. После выполнения программы получилась строка, сумма цифр которой оказалась простым числом. Какое наименьшее количество единиц могло быть в исходной строке?

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

Решение 1

Распишем все переходы для пар из единиц и двоек.

  1. 011 → 02 → 101
  2. 012 → 30
  3. 021 → 1011 → 102 → 1101
  4. 022 → 1012 → 130

Задача у нас про сумму цифр, как видим сумма при переходе пар константна.

Рассмотрим переходы одиночных цифр между нулями.

  1. 010 → 00
  2. 020 → 1010 → 100

Как видим, сумма оба раза уменьшилась на единицу. Получается, что если изначальная сумма была s  , то сумма после работы алгоритма будет s − 1  . Начальная сумма цифр 50⋅2 + 1⋅100 = 200  . Нам необходимо количество единиц   > 100  . Минимальное простое число большее 200  — это 211  , учтем единицу, которую вычитали, получаем 212  — начальная сумма цифр и 112  — количество единиц.

Решение 2

def is_prime(n):
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return n > 1

for n in range(101, 1000):
    s = "0" + ’2’ * 50 + ’1’ * n + ’0’
    while not (’00’ in s):
        s = s.replace(’02’, ’101’, 1)\
            .replace(’11’, ’2’, 1)\
            .replace(’012’, ’30’, 1)\
            .replace(’010’, ’00’, 1)
    if is_prime(sum(int(x) for x in s)):
        print(n)
        break

Ответ: 112

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

Задача 4#63513

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w.

Например, выполнение команды заменить(111, 27) преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

Б) нашлось (w).

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

Цикл

   ПОКА *условие*

      *последовательность команд*

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

   ЕСЛИ *условие*

      ТО *команда 1*

      ИНАЧЕ *команда 2*

   КОНЕЦ ЕСЛИ

выполняется команда 1 (если условие истинно) или команда 2 (если условие ложно).

Дана программа для Редактора:

НАЧАЛО

ПОКА нашлось (>0) ИЛИ нашлось (>1) ИЛИ нашлось (>2)

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

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

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

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше програмы поступает строка, начинающаяся с символа «>», а затем содержащая 15 цифр 0, n цифр 1 и 15 цифр 2, расположенных в произвольном порядке. Определите наименьшее значение n, при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, является простым числом.

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

Решение 1

Рассмотрим переходы цифр:

  1. 0 → 22
  2. 1 → 2
  3. 2 → 1

Получаем, что каждый ноль это +4  в сумму, каждая единица +2  , каждая двойка + 1  . Посчитаем пока что, какая будет сумма после обработки двоек и нулей. S = 15⋅4 + 1⋅15 = 75  , ближайшее простое число это 79  , нам не хватает 4  до такой суммы. Каждая единица это + 2  , значит, чтобы получить + 4  нам нужно две единицы.

Решение 2

def is_prime(n):
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return n > 1

for n in range(0, 100):
    s = ’>’ + ’0’ * 15 + ’1’ * n + ’2’ * 15
    while ’>0’ in s or ’>1’ in s or ’>2’ in s:
        if ’>0’ in s:
            s = s.replace(’>0’, ’22>’)
        if ’>1’ in s:
            s = s.replace(’>1’, ’2>’)
        if ’>2’ in s:
            s = s.replace(’>2’, ’1>’)
    summa = 0
    for i in s[0:-1]:
        summa += int(i)
    if is_prime(summa):
        print(n)
        break

Ответ: 2

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

Задача 5#63105

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(15)

      заменить(15,5)

      заменить(53,3)

   КОНЕЦ ПОКА

КОНЕЦ

В результате работы программы к строке 1◟. ◝.◜.1◞5◟. ◝.◜.5◞3◟. ◝.◜.3◞
 44    ?    12  получилась строка, в которой содержится 30  цифр     5  . Сколько цифр 5  было в изначальной строке?

Показать ответ и решение
for i in range(100):
    n = "1" * 44 + "5" * i + "3" * 12
    while "15" in n:
        n = n.replace("15", "5", 1)
        n = n.replace("53", "3", 1)
    if n.count("5") == 30:
        print(i)
        break

 

Ответ: 74

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

Задача 6#56313

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(12)

      заменить(12,2)

      заменить(23,3)

   КОНЕЦ ПОКА

КОНЕЦ

В результате работы программы к строке 1◟. ◝.◜.1◞2◟. ◝.◜.2◞3◟. ◝.◜.3◞
 30    ?    6  получилась строка, в которой содержится 35  цифр     2  . Сколько цифр 2  было в изначальной строке?

Показать ответ и решение
for i in range(100):
    n = ’1’ * 30 + ’2’ * i + ’3’ * 6
    while ’12’ in n:
        n = n.replace(’12’, ’2’, 1)
        n = n.replace(’23’, ’3’, 1)
    if n.count(’2’) == 35:
        print(i)
        break

 

Ответ: 65

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

Задача 7#33600

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w.  Например, выполнение команды

заменить (555, 63)

преобразует строку 12555550 в строку 1263550.

Если в строке нет вхождений цепочки v,  то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

Какая строка получится в результате применения приведённой программы к строке, состоящей из 78  идущих подряд цифр 9  . В ответе запишите полученную строку.

 

НАЧАЛО

ПОКА нашлось (33333)  ИЛИ нашлось (999)

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

      ТО заменить (33333,99)

   КОНЕЦ ЕСЛИ

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

      ТО заменить (999,3)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

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

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

s = "9" * 78
while "33333" in s or "999" in s:
    if "33333" in s:
        s = s.replace("33333", "99", 1)
    if "999" in s:
        s = s.replace("999", "3", 1)
print(s)

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

Каждые 999  заменяются на 3  , тогда строка из 15  9  -ток заменится на 33333  .

Каждые 333  заменяются на 99  . Получается, что каждые 15  9  -ток меняются на 99  .

78− 15 + 2− 15+ 2− 15 + 2− 15+ 2− 15 + 2 = 13

999999999999999 → 3999999999999 → ⋅⋅⋅ → 33339

Больше мы ничего не можем заменить. Ответ: 33339

Ответ: 33339

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

Задача 8#30123

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(LL)

      заменить(BU, LL)

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

      заменить(LLLLLL, CAT)

   КОНЕЦ ПОКА

КОНЕЦ

Алгоритм выше превращает быков (BULL) в милых котиков (CAT). При этом котики боятся быков, поэтому пока есть хотя бы один бык котик появляться не будет. Сколько раз алгоритм сделает команду заменить, если в итоге должно получиться ровно два котика?

Примечание: входная строка должна состоять только из быков.

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

Алгоритм заменяет все строки BULL на LLLL. Также должно было появится два котика (из двух строк LLLLLL). Значит дожно было получится в промежуточном результате 12 символов L. Это возможно если изначально в строке было три BULL.

Произойдет три замены BU на LL и две замены LLLLLL на CAT. В итоге программа сделает 5 замен.

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

for i in range(1, 100):
    a = "BULL" * i
    ans = 0
    flag = False  # Чтобы найти самый первый
    while "LL" in a:
        if "BU" in a:  # Если выполнится замена
            a = a.replace("BU", "LL", 1)
            ans += 1
        if not ("BULL" in a):
            a = a.replace("LLLLLL", "CAT", 1)
            ans += 1
        if a.count("L") == len(a) or ans > 1000:  # Бесконечный цикл, если будут одни L
            break
    if a.count("CAT") == 2:
        print(ans)
        break

Ответ: 5

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

Задача 9#30122

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды зам ен ить (v,w)  не меняет эту строку.

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

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

Цикл

   П ОК А усл овие

      посл едовательность ком анд

   К ОН ЕЦ ПО КА

выполняется, пока условие истинно.

Дана программа для редактора:

Н АЧА ЛО

   П ОК А нашлось(AB )

      зам енить(A, BB )

      зам енить(B, CCC )

      зам енить(CCCCC,  AB )

      зам енить(DC, DDF )

      зам енить(DF, E)

   К ОН ЕЦ ПО КА

К ОНЕ Ц

Сколько раз встретится буква E  в строке, полученной после выполнения алгоритма выше для строки состоящей из последовательности букв ABCDF  повторяющейся 60  раз? В ответ укажите только число.

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

Для решения этого задания напишем программу:

# Создаем исходную строку
s = ’ABCDF’ * 60
# Аналог пока нашлось(AB)
while ’AB’ in s:
    # Проводим замену по одному разу
    s = s.replace(’A’, ’BB’, 1)
    s = s.replace(’B’, ’CCC’, 1)
    s = s.replace(’CCCCC’, ’AB’, 1)
    s = s.replace(’DC’, ’DDF’, 1)
    s = s.replace(’DF’, ’E’, 1)
print(s.count(’E’)) # Вывод количества символов E в строке

Ответ: 60

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

Задача 10#30117

Напишите сумму цифр строки, полученной в результате применения приведённой ниже программы к строке: 5...5 7...7 2...2?
◟◝1◜0◞ ◟◝3◜0 ◞◟◝5◜0 ◞

НАЧАЛО

   ПОКА нашлось(5)  ИЛИ нашлось(77)  ИЛИ нашлось(222)

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

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

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

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

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

      ТО заменить(222,5)

   КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’5’ * 10 + ’7’ * 30 + ’2’ * 50
while ’5’ in s or ’77’ in s or ’222’ in s:
    if ’5’ in s:
        s = s.replace(’5’, ’77’, 1)
    elif ’77’ in s:
        s = s.replace(’77’, ’7’, 1)
    elif ’222’ in s:
        s = s.replace(’222’, ’5’, 1)
print(sum([int(s[i]) for i in range(len(s))]))

Ответ: 11

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

Задача 11#29447

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (555,63)

преобразует строку 12555550  в строку 1263550  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

      последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, в начале которой стоит 310 букв L,  а затем следует 325 букв R?  В ответе запишите полученную строку.

НАЧАЛО

   ПОКА нашлось(RRR) ИЛИ нашлось(LRR)

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

            ТО заменить(LRR, R)

      ИНАЧЕ заменить(RRR, L)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

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

      ТО заменить(R, L)

   ИНАЧЕ заменить(L, R)

   КОНЕЦ ЕСЛИ

КОНЕЦ

Показать ответ и решение
n = ’L’ * 310 + ’R’ * 325
while ’RRR’ in n or ’LRR’ in n:
    if ’LRR’ in n:
        n = n.replace(’LRR’, ’R’, 1)
    else:
        n = n.replace(’RRR’, ’L’, 1)
if ’R’ in n:
    n = n.replace(’R’, ’L’, 1)
else:
    n = n.replace(’L’, ’R’, 1)
print(n)

Ответ: R

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

Задача 12#29359

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w.  Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150.

Если в строке нет вхождений цепочки v,  то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

КОНЕЦ

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(123)

      заменить(12,3)

   КОНЕЦ ПОКА

КОНЕЦ

Сколько троек будет содержать строка, которая получится в результате применения приведённой выше программы к строке, состоящей из 30  идущих подряд чисел 123  ? В ответе запишите только число – количество троек в полученной строке.

Показать ответ и решение
s = ’123’ * 30
while ’123’ in s:
    s = s.replace(’12’, ’3’, 1)
print(s.count(’3’))

Ответ: 60

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

Задача 13#28808

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150.

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(4444)  ИЛИ нашлось(333)

      заменить(444,3)

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

      заменить(333,2)

   КОНЕЦ ПОКА

КОНЕЦ

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 44  идущих подряд цифр 4  ? В ответе запишите полученную строку.

Показать ответ и решение
s = ’4’ * 44
while ’4444’ in s or ’333’ in s:
    s = s.replace(’444’, ’3’, 1)
    if ’333’ in s:
        s = s.replace(’333’, ’2’, 1)
print(s)

Ответ: 22223344

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

Задача 14#28297

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА (  нашлось(12)  И нашлось(23))  ИЛИ нашлось(33)

      заменить(12,2)

      заменить(23,3)

      заменить(33,4)

   КОНЕЦ ПОКА

КОНЕЦ

Какая строка получится в результате работы приведенной выше программы к строке, состоящей из 10  подряд идущих чисел 123  ? В ответ запишите полученную строку.

Показать ответ и решение
s = "123" * 10  
while (("12" in s) and ("23" in s)) or ("33" in s):  
    s = s.replace("12", "2", 1)  
    s = s.replace("23", "3", 1)  
    s = s.replace("33", "4", 1)  
print(s)

Ответ: 44444

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

Задача 15#28296

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w  . Например, выполнение команды

заменить (111,27)

преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

   ПОКА условие

      последовательность команд

   КОНЕЦ ПОКА

выполняется, пока условие истинно.

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось(22)  ИЛИ нашлось(33)

      заменить(22,2)

      заменить(33,3)

   КОНЕЦ ПОКА

КОНЕЦ

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 20  идущих подряд цифр 2  , а затем 30  идущих подряд цифр 3  ? В ответе запишите полученную строку.

Показать ответ и решение
s = "2" * 20 + "3" * 30  
while ("22" in s) or ("33" in s):  
    s = s.replace("22", "2", 1)  
    s = s.replace("33", "3", 1)  
print(s)

Ответ: 23

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

Задача 16#27994

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w.  Например, выполнение команды

заменить (555,63)

преобразует строку 12555550  в строку 1263550.

Если в строке нет вхождений цепочки v,  то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

   последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

   ТО команда1

   ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 500  идущих подряд цифр 145  ? В ответе запишите полученную строку.

 

НАЧАЛО

ПОКА нашлось (14)  ИЛИ нашлось (555)

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

      ТО заменить (14,5)

      ИНАЧЕ заменить (555,5)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’145’*500
while ’14’ in s or ’555’ in s:
    if ’14’ in s:
        s = s.replace(’14’, ’5’, 1)
    else:
        s = s.replace(’555’, ’5’, 1)
print(s)

Ответ: 55

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

Задача 17#26172

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

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

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

Команда А заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

Команда Б проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл

ПОКА условие

   последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из единицы и идущих за ней 22-ух двоек?

НАЧАЛО

   ПОКА нашлось (000) или нашлось (222)

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

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

         ИНАЧЕ заменить (222, 0)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’1’ + ’2’*22
while ’000’ in s or ’222’ in s:
    if ’000’ in s:
        s = s.replace(’000’, ’2’, 1)
    else:
        s = s.replace(’222’, ’0’, 1)
print(s)

Ответ: 100

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

Задача 18#26118

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111,27)  преобразует строку 05111150  в строку 0527150  .

Если в строке нет вхождений цепочки v  , то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

   последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

   ТО команда1

   ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 77  цифр 1  ?

НАЧАЛО

   ПОКА нашлось 11

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

         ТО заменить (222,1)

         ИНАЧЕ заменить (11,2)

      КОНЕЦ ЕСЛИ

   КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’1’ * 77
while ’11’ in s:
    if ’222’ in s:
        s = s.replace(’222’, ’1’, 1)
    else:
        s = s.replace(’11’, ’2’, 1)
print(s)

Ответ: 2221

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

Задача 19#25931

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w.  Например, выполнение команды

заменить (555, 63)

преобразует строку 12555550 в строку 1263550.

Если в строке нет вхождений цепочки v,  то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

   последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 85 идущих подряд цифр 9? В ответе запишите полученную строку.

НАЧАЛО

ПОКА нашлось (666) или нашлось (999)

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

      ТО заменить (666, 9)

      ИНАЧЕ заменить (999, 6)

   КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’9’*85
while ’666’ in s or ’999’ in s:
    if ’666’ in s:
        s = s.replace(’666’, ’9’, 1)
    else:
        s = s.replace(’999’, ’6’, 1)
print(s)

Ответ: 699

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

Задача 20#25904

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v  на цепочку w.  Например, выполнение команды

заменить (555, 63)

преобразует строку 12555550 в строку 1263550.

Если в строке нет вхождений цепочки v,  то выполнение команды заменить (v,w)  не меняет эту строку.

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

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

Цикл

ПОКА условие

   последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

   ЕСЛИ условие

      ТО команда1

      ИНАЧЕ команда2

   КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 143 цифр 7?

НАЧАЛО

ПОКА нашлось (777)

   заменить (777, 22)

   заменить (222, 7)

КОНЕЦ ПОКА

КОНЕЦ

Показать ответ и решение
s = ’7’ * 143
while ’777’ in s:
    s = s.replace(’777’, ’22’, 1)
    s = s.replace(’222’, ’7’, 1)
print(s)

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