Какая строка получится в результате применения приведенной ниже программы к строке состоящей из 125
Не получается заданный ответ:
Какая строка получится в результате применения приведённой ниже
программы к строке, состоящей из 125 идущих подряд цифр «8»? В ответе
запишите полученную строку.
ПОКА нашлось (333) ИЛИ нашлось (888)
ЕСЛИ нашлось (333)
ТО заменить (333, 8)
ИНАЧЕ заменить (888, 3)
КОНЕЦ
У нас ответ: 8383388, а он неверен.
Как решить это задание правильно?
Строка состоит из 125-ти цифр 8. В первых повторах цикла условие ЕСЛИ нашлось (333) не выполняются, то есть 888 будут меняться на 3. Когда в строке появятся три тройки, то условие ЕСЛИ нашлось (333) выполнится, и 333 будут заменены на 8.
Пример. Допустим у нас 10 подряд идущих восьмерок:
Первые три повтора три тройки восьмерок изменятся на 3
На четвертый повтор условие ЕСЛИ нашлось 333 выполнится, и 333 будут заменены на 8, и строка примет вид
То есть было 10 восьмерок, а после четырех повторений стало 2 восьмерки. То есть каждые четыре повторения цикла количество восьмерок уменьшается на 8.
В исходной строке 125 восьмерок, того, как цикл 15 раз уберёт из неё 8 восьмерок, то в ней останется 5 восьмерок.
Для этой строки условие ЕСЛИ нашлось (333) не выполнится, и первые три восьмерки заменятся тройкой, получится строка
И цикл завершится, так как нашлось (333) ИЛИ нашлось (888) не выполняется.
Какая строка получится в результате применения приведенной ниже программы к строке состоящей из 125
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл выполняется, пока условие истинно.
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
В конструкции ЕСЛИ выполняется команда 1 (если условие истинно) или команда 2 (если условие ложно).
ЕСЛИ условие
ТО команда 1
ИНАЧЕ команда 2
КОНЕЦ ЕСЛИ
ВАРИАНТ 1
s=»1″*2022
while «11111» in s or «555» in s:
if «11111» in s:
s=s.replace(«11111″,»555»,1)
else:
s=s.replace(«555″,»5»,1)
print(s)
Ответ: 5511
ВАРИАНТ 2
s=»1″*2022
while «11» in s or «555» in s:
if «11» in s:
s=s.replace(«11″,»555»,1)
else:
s=s.replace(«555″,»5»,1)
print(s)
Ответ: 5
ВАРИАНТ 3
s=»1″*50
while «11111» in s or «15» in s:
if «11111» in s:
s=s.replace(«11111″,»15»,1)
else:
s=s.replace(«15″,»1»,1)
print(s)
Ответ: 11
ВАРИАНТ 4
s=»1″*65
while «11111» in s or «15» in s:
if «11111» in s:
s=s.replace(«11111″,»15»,1)
else:
s=s.replace(«15″,»1»,1)
print(s)
Ответ: 1
ВАРИАНТ 5
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 70 идущих подряд цифр 1? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (1111) ИЛИ нашлось (2222)
ЕСЛИ нашлось (1111)
ТО заменить (1111, 22)
ИНАЧЕ заменить (2222, 11)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
s=»1″*70
while «1111» in s or «2222» in s:
if «1111» in s:
s=s.replace(«1111″,»22»,1)
else:
s=s.replace(«2222″,»11»,1)
print(s)
Ответ: 22
ВАРИАНТ 6
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 71 идущей подряд цифры 2? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (1111) ИЛИ нашлось (2222)
ЕСЛИ нашлось (1111)
ТО заменить (1111, 22)
ИНАЧЕ заменить (2222, 11)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
s=»2″*71
while «1111» in s or «2222» in s:
if «1111» in s:
s=s.replace(«1111″,»22»,1)
else:
s=s.replace(«2222″,»11»,1)
print(s)
Ответ: 112
ВАРИАНТ 7
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 91 идущих подряд цифр 1? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (2222) ИЛИ нашлось (1111)
ЕСЛИ нашлось (2222)
ТО заменить (2222, 11)
ИНАЧЕ заменить (1111, 22)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Исполнитель «Редактор» (страница 7)
Исполнитель Панцирь получает на вход строку цифр и преобразовывает её. Панцирь может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки символов.
1. заменить ( \(v\) , \(w\) )
Первая команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\) . Если цепочки \(v\) в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Панцирь. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».
Дана программа для исполнителя Панцирь:
ПОКА нашлось \((7)\) ИЛИ нашлось \((33)\) ИЛИ нашлось \((888)\)
ИНАЧЕ ЕСЛИ нашлось \((33)\)
ИНАЧЕ ЕСЛИ нашлось \((888)\)
Какая строка получится в результате применения приведённой выше программы к строке \(\underbrace<77\dots77>_<500>\underbrace<33\dots33>_<120>\underbrace<88\dots88>_<280>?\)
Для удобства будем использвовать следующие обозначения для количества одинаковых цифр, идущих подряд: \(A_<(B)>,\) где A — цифра, которая находится в строке, а B — количество этих цифр.
Изначально была строка \(7_ <(500)>3_ <(120)>8_<(280)>.\) Самое приоритетное действие в цикле ПОКА – это замена 7 на 33. На протяжении всей работы программы оно будет выполняться до тех пор, пока семерок не останется вообще. Для текущей же строки все семерки заменятся парами троек, которых будет в 2 раза больше, чем изначальное количество семерок, т.е. 1000.
Второе по приоритету действие — это замена пары троек на одну тройку. Это действие перестанет выполняться, когда количество троек станет 1.
Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной тройки и какого-то количества восьмерок, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной единицы, двух троек или трех восьмерок не будет нарушено.
\(3_ <(1)>8_ <(280)>\rightarrow 3_ <(1)>7_ <(1)>8_ <(277)>\rightarrow 3_ <(3)>8_ <(277)>\rightarrow 3_ <(2)>8_ <(277)>\rightarrow 3_ <(1)>8_<(277)>\)
Итак, из \(3_ <(1)>8_<(280)>\) мы получили \(3_ <(1)>8_<(277)>,\) значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество восьмерок.
За один шаг количество уменьшилось на 3, значит нужно вычесть из 280 ближайшее к этому числу значение, кратное 3, т.е. 276.
Теперь снова вручную прогоним полученную строку.
\(3_ <(1)>8_ <(4)>\rightarrow 3_ <(1)>7_ <(1)>8_ <(1)>\rightarrow 3_ <(3)>8_ <(1)>\rightarrow 3_ <(2)>8_ <(1)>\rightarrow 3_ <(1)>8_<(1)>\)
Таким образом, в конце выполнения программа будет выведено 38.
Исполнитель Панцирь получает на вход строку цифр и преобразовывает её. Панцирь может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки символов.
1. заменить ( \(v\) , \(w\) )
Первая команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\) . Если цепочки \(v\) в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Панцирь. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».
Дана программа для исполнителя Панцирь:
ПОКА нашлось \((7)\) ИЛИ нашлось \((33)\) ИЛИ нашлось \((888)\)
ИНАЧЕ ЕСЛИ нашлось \((33)\)
ИНАЧЕ ЕСЛИ нашлось \((888)\)
Найдите число, которое получится в результате возведения числа, составленного из всех цифр, кроме последней в строке, полученной в результате применения приведённой выше программы к строке \(\underbrace<77\dots77>_<500>\underbrace<33\dots33>_<120>\underbrace<88\dots88>_<280>,\) в степень, равную последней цифре полученной строки. Так, если после выполнения программы получилась строка 352, то ответом будет являться \(35^2 = 1225.\)
Для удобства будем использвовать следующие обозначения для количества одинаковых цифр, идущих подряд: \(A_<(B)>,\) где A — цифра, которая находится в строке, а B — количество этих цифр.
Изначально была строка \(7_ <(500)>3_ <(120)>8_<(280)>.\) Самое приоритетное действие в цикле ПОКА – это замена 7 на 33. На протяжении всей работы программы оно будет выполняться до тех пор, пока семерок не останется вообще. Для текущей же строки все семерки заменятся парами троек, которых будет в 2 раза больше, чем изначальное количество семерок, т.е. 1000.
Второе по приоритету действие — это замена пары троек на одну тройку. Это действие перестанет выполняться, когда количество троек станет 1.
Далее, необходимо прогонять получаемые строки по алгоритму до тех пор, пока мы не получим конструкцию из одной тройки и какого-то количества восьмерок, большего или равного 3. Если мы получим идентичную конструкцию, но с другим количеством цифр, то это значит, что выполнение определенного набора действий будет зациклено до тех пор, пока условие наличия одной семерки, двух троек или трех восьмерок не будет нарушено.
\(3_ <(1)>8_ <(280)>\rightarrow 3_ <(1)>7_ <(1)>8_ <(277)>\rightarrow 3_ <(3)>8_ <(277)>\rightarrow 3_ <(2)>8_ <(277)>\rightarrow 3_ <(1)>8_<(277)>\)
Итак, из \(3_ <(1)>8_<(280)>\) мы получили \(3_ <(1)>8_<(277)>,\) значит выполнять те же действия большое количество раз не нужно, мы можем сразу снижать количество восьмерок.
За один шаг количество уменьшилось на 3, значит нужно вычесть из 280 ближайшее к этому числу значение, кратное 3, т.е. 276.
Теперь снова вручную прогоним полученную строку.
\(3_ <(1)>8_ <(4)>\rightarrow 3_ <(1)>7_ <(1)>8_ <(1)>\rightarrow 3_ <(3)>8_ <(1)>\rightarrow 3_ <(2)>8_ <(1)>\rightarrow 3_ <(1)>8_<(1)>\)
Мы получили итоговую строку, теперь нужно выполнить преобразование для получение ответа. Т.к. в строке всего две цифры, то первую нужно возвести в значение второй: \(3^8 = 6561\)
ИСПОЛНИТЕЛЬ РЕДАКТОР
Сегодня мы посмотрим на еще одно интересное задание на исполнителя РЕДАКТОР.


❓Задача заключается в следующем: написать какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 125 идущих подряд цифр 8?
НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (888)
ЕСЛИ нашлось (333)
ТО заменить (333, 8)
ИНАЧЕ заменить (888, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Давай посмотрим, как же вообще работает данный алгоритм:
Изначально у нас была строка: 8888888… (из 125 8), идём по программе:
нашлось 3 цифры 8″, поэтому заменяем их на 3: 38888….(одна цифра 3 и 122 цифры 8).
продолжаем заменять восьмёрки на 3: 33888…(две цифры 3 и 119 цифр 8),
и ещё раз: 333888…(3 цифры 3 и 116 цифр 8).
❗️ Внимательно! Сейчас мы не продолжим менять восьмёрки на тройки, так как у нас нашлось 3 тройки, которые заменяются на одну восьмерку!(условие про замену восьмёрок на тройки выполняется ТОЛЬКО В ТОМ в случае, если не нашлось трёх троек).
Поэтому сейчас у нас получится строка: 88888…(из 117 цифр 8).
Таким образом: за каждые 4 итерации (прохода) цикла будет убираться 3 + 3 + 3 — 1 = 8 восьмёрок.
=> Тогда после 15 раз по 4 итерации, то есть после 60 итераций, из строки будет убрано 15*8=120 восьмёрок, и она примет вид 88888. После чего цикл отработает ещё раз и заменит 88888 на 388.