Similar presentations:
Выполнение алгоритмов для исполнителя
1.
Выполнение алгоритмов дляисполнителя
2.
Что проверяется:• Умение анализировать результат исполнения алгоритма.
Что нужно знать:
• правила выполнения линейных, разветвляющихся и
циклических алгоритмов
• основные операции с символьными строками (определение
длины, выделение подстроки, удаление и вставка символов,
«сцепка» двух строк в одну)
• исполнитель – это человек, группа людей, животное,
машина или другой объект, который может понимать и
выполнять некоторые команды
• в школьном алгоритмическом языке нц обозначает «начало
цикла», а кц – «конец цикла»; все команды между нц и кц –
это тело цикла, они выполняются несколько раз запись нц
для i от 1 до n обозначает начало цикла, в котором
переменная i (она называется переменной цикла)
принимает последовательно все значения от 1 до n с шагом
1
3.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её.Редактор может выполнять две команды, в обеих командах v и w обозначают
цепочки цифр.
заменить (v, w) - заменяется первое вхождение v на w
нашлось (v)
Дана программа для исполнителя Редактор:
НАЧАЛО
while ‘333’ in S or ‘555’ in S
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555) - if '555' in s:
ТО заменить (555, 3) - S=S.replace (‘555’, ‘3’) – замена на строку, где все
ИНАЧЕ заменить (333, 5)
вхождения 555 заменяются на 3
КОНЕЦ ЕСЛИ
else:
КОНЕЦ ПОКА
s= s.replace('333', '5', 1)
КОНЕЦ
Какая строка получится в результате применения приведённой выше программы
к строке, состоящей из 62 идущих подряд цифр 5? В ответе запишите полученную
строку.
S=‘5’*62
4.
s='5'*62while '333' in s or '555' in s:
if '555' in s:
s=s.replace('555', '3', 1)
else:
s=s.replace('333', '5', 1)
print (s)
5355
5.
167) Исполнитель Редактор получает на вход строку цифр и преобразовывает её.Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки
цифр.
заменить (v, w)
нашлось (v)
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (63) ИЛИ нашлось (664) ИЛИ нашлось (6665)
ЕСЛИ нашлось (63) ТО заменить (63, 4) КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (664) ТО заменить (664, 5) КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (6665) ТО заменить (6665, 3) КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведённой выше программы к
строке, в которой первая и последняя цифры – 3, а между ними стоит 120 цифр 6? В
ответе запишите полученную строку.
6.
s='3'+'6'*120+'3'while '63' in s or '664' in s or '6665' in s:
if '63' in s:
s=s.replace('63', '4', 1)
if '664' in s:
s=s.replace('664', '5', 1)
if '6665' in s:
s=s.replace ('6665', '3', 1)
print (s)
33
7.
Исполнитель Редактор получает на входстроку цифр и преобразовывает её.
Редактор может выполнять две команды, в
обеих командах v и w обозначают цепочки
цифр.
заменить (v, w)
нашлось (v)
Дана программа для исполнителя Редактор:
s='5'*200
while '555' in s or '333' in s:
НАЧАЛО
if '555' in s:
ПОКА нашлось (555) ИЛИ нашлось (333)
s=s.replace('555', '3', 1)
ЕСЛИ нашлось (555)
else:
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
s=s.replace('333', '5', 1)
КОНЕЦ ЕСЛИ
print (sum ([int(n)for n in s]))
КОНЕЦ ПОКА
КОНЕЦ
Дана строка, состоящая из 200 цифр 5. чему
равна сумма цифр строки,
полученной после обработки по этой
программе?
8.
Исполнитель Редактор получает на вход строку цифр ипреобразовывает её. Редактор может выполнять две команды,
в обеих командах v и w обозначают цепочки цифр.
заменить (v, w)
нашлось (v)
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
ЕСЛИ нашлось (>1)
s='>'+20*'1'+ 15*'2' + 40* '3'
ТО заменить (>1, 22>)
while '>1' in s or '>2' in s or '>3' in s:
КОНЕЦ ЕСЛИ
if '>1' in s:
ЕСЛИ нашлось (>2)
s=s.replace('>1', '22>', 1)
ТО заменить (>2. 2>1)
if '>2' in s:
КОНЕЦ ЕСЛИ
s=s.replace('>2', '2>1', 1)
ЕСЛИ нашлось (>3)
ТО заменить (>3. 1>2)
if '>3' in s:
КОНЕЦ ЕСЛИ
s=s.replace('>3', '1>2', 1)
КОНЕЦ ПОКА
print (sum ([int(n)for n in s if n!='>']))
КОНЕЦ
На вход приведенной ниже программе поступает строка,
начинающаяся с символа «>», а затем содержащая 20 цифр 1,
15 цифр 2 и 40 цифр 3, расположенных в произвольном
порядке. Определите сумму числовых значений цифр строки,
получившейся в результате выполнения программы.
9.
213) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редакторможет выполнять две команды, в обеих командах v и w обозначают цепочки символов.
заменить (v, w)
нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если
цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет,
встречается ли цепочка v в строке исполнителя Редактор.
К исходной строке, содержащей более 80 единиц и не содержащей других символов,
применили
приведённую ниже программу.
НАЧАЛО
ПОКА нашлось (111)
заменить (111, 2)
заменить (222, 1)
КОНЕЦ ПОКА
КОНЕЦ
В результате получилась строка 21 Какое наименьшее количество единиц могло быть в
исходной строке?
10.
for i in range (81,100): - содержащей более 80 единицs='1'*i
while '111' in s:
s=s.replace('111', '2', 1)
s=s.replace ('222', '1',1)
if s=='21': - Проверяем наличие результата ’21’
print (i) – выводим номер i, при котором результат =’21’
Находим минимальное значение 84
Cодержащей не более 100 единиц и не содержащей других
символов: for i in range (1,101):
В результате получилась строка 321 Сколько различных
значений количества единиц может быть в исходной строке?
11.
231) Исполнитель Редактор получает на вход строку цифр и преобразовывает её.Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки
символов.
заменить (v, w)
нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w.
Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет,
встречается ли цепочка v в строке исполнителя Редактор. Дана программа для
Редактора:
НАЧАЛО
ПОКА нашлось (32)
заменить (32, 6)
КОНЕЦ ПОКА
КОНЕЦ
Исходная строка содержит 8 двоек и некоторое количество троек, других цифр нет,
точный порядок расположения двоек и троек неизвестен. После выполнения
программы получилась строка с суммой цифр 93 Какое наименьшее количество троек
могло быть в исходной строке?
12.
s='3333333333333333232323232323232‘- анализируемстрочку, чтобы выполнялось условие (мин. число 3)
while '32' in s:
s=s.replace('32', '6', 1)
print (sum(int(c) for c in s)) – находит сумму цифр
последовательности
ИЛИ
print (3*s.count('3')+2*s.count('2')+6*s.count('6'))
13.
(№ 6113) Исполнитель Редактор получает на вход строку цифр и преобразовывает её.Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки
символов.
1. заменить (v, w)
2. нашлось (v)Первая команда заменяет в строке первое слева вхождение цепочки v
на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая
команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (91) ИЛИ нашлось (92)
ЕСЛИ нашлось (91)
ТО заменить (91, 39)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (92)
ТО заменить (92, 59)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦНа вход приведённой выше программе поступает строка, начинающаяся с цифры
«9», а затем содержащая n цифр «1» и n цифр «2», расположенных в произвольном
порядке. Определите наименьшее значение n, при котором сумма числовых значений цифр
строки, получившейся в результате выполнения программы, является простым
трехзначным числом.
14.
def pr(x):for d in range (2, round (x**0.5) + 1):
if x%d ==0:
return False
return True
Создаем функцию,
проверяющую является
ли число простым
for n in range (1, 100):
s='9'+n*'1'+ n*'2'
while '91' in s or '92' in s:
if '91' in s:
s=s.replace('91', '39', 1)
if '92' in s:
s=s.replace('92', '59', 1)
summa = (sum ([int(n)for n in s]))
if pr(summa) and summa in range (100, 1000):
print (n)
Проверяем, что сумма трехзначное число
15.
(№ 6414) Исполнитель Редактор получает на вход строку цифр и преобразовываетеё. Редактор может выполнять две команды, в обеих командах v и w обозначают
цепочки символов.
1. заменить (v, w)
2. нашлось (v)Первая команда заменяет в строке первое слева вхождение
цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет
строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя
Редактор.
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (02, 101)
заменить (11, 2)
заменить (012, 30)
заменить (010, 00)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка содержала ровно два нуля – на первом и на
последнем месте, 100 единиц, больше 50 двоек и не содержала других цифр.
После выполнения программы получилась строка, сумма цифр которой оказалась
простым числом. Какое наименьшее количество двоек могло быть в исходной
строке?
Ответ: 56
16.
преобразовывает её. Редактор может выполнять две команды, в обеих командах v и wобозначают цепочки символов.
1. заменить (v, w)
2. нашлось (v)Первая команда заменяет в строке первое слева вхождение цепочки v на
цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда
проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>0)
ЕСЛИ нашлось (>1)
ТО заменить (>1, 22>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>2)
ТО заменить (>2, 2>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>0)
ТО заменить (>0, 1>)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦНа вход приведённой выше программы поступает строка, начинающаяся с символа
«>», а затем содержащая 12 цифр «0», n цифр «1» и 8 цифр «2», расположенных в
произвольном порядке. Определите значение n, при котором сумма числовых значений цифр
строки, получившейся в результате выполнения программы, равна 68.
Ответ: 10