Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w) 2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (900) или нашлось(8000) или нашлось(70) заменить(70, 8) заменить(900, 70) заменить(8000, 900) КОНЕЦ ПОКА КОНЕЦ
Известно, что на вход программы поступила строка из 71 символа. Определите минимальное четырехзначное число, которое может являться результатом работы исполнителя. Я решил это задание вот таким кодом
For i in [‘7’, ‘8’, ‘9’]: s = ‘100’ + i + ‘0’ * 67 while ‘900’ in s or ‘8000’ in s or ’70’ in s: s = s. replace(’70’, ‘8’, 1) s = s. replace(‘900′, ’70’, 1) s = s. replace(‘8000’, ‘900’, 1) print(s)
Чисто теоретически опять таки можно решить следующим образом:
Информатика ЕГЭ. № 12. Выполнение алгоритмов для исполнителей. Исполнитель редактор. № 9365
Как решить задание обоснованно кодом?
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w) 2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (900) или нашлось(8000) или нашлось(70) заменить(70, 8) заменить(900, 70) заменить(8000, 900) КОНЕЦ ПОКА КОНЕЦ
Известно, что на вход программы поступила строка из 71 символа. Определите минимальное четырехзначное число, которое может являться результатом работы исполнителя. Я решил это задание вот таким кодом
For i in [‘7’, ‘8’, ‘9’]: s = ‘100’ + i + ‘0’ * 67 while ‘900’ in s or ‘8000’ in s or ’70’ in s: s = s. replace(’70’, ‘8’, 1) s = s. replace(‘900′, ’70’, 1) s = s. replace(‘8000’, ‘900’, 1) print(s)
Из которых по условию нас устраивает только 855 и 55 (кол-во восьмерок и пятерок от 0 до 2 определяется как раз тем, что мы заменяем тройки этих цифр, т. е. модель по 3)
Закрыт 1 год назад.
Ru. stackoverflow. com
Любые данныеЛюбые данные Любые данные Любые данные
Любые данные
Любые данные
Исполнитель Редактор [закрыт]
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и Укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Закрыт 1 год назад.
Задание 12 на Python | ЕГЭ информатика 2021
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов
Отслеживать задан 12 ноя 2021 в 12:11 21 1 1 серебряный знак 4 4 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если я правильно понял алгоритм, то код выглядит так:
I = 300 while True: i += 1 text = ‘5’ * i while ‘555’ in text or ‘888’ in text: index = text. find(‘555’) text = text if index == -1 else (text[:index] + ‘8’ + text[index + 3:]) index = text. find(‘888′) text = text if index == -1 else (text[:index] + ’55’ + text[index + 3:]) count5 = text. count(‘5’) count8 = text. count(‘8’) if count5 > count8: print(i) break
Чисто теоретически опять таки можно решить следующим образом:
Очевидно, что с заменой только слева направо подстрок мы можем получить только следующие варианты:
855 8 885 85 88 8855 55
(не возможны варианты типа 858. потому что меняем цифры строго слева направо и не возможен вариант ‘5’ — его неоткуда сформировать (ведь ‘888’ всегда меняется строго на ’55’ )
Из которых по условию нас устраивает только 855 и 55 (кол-во восьмерок и пятерок от 0 до 2 определяется как раз тем, что мы заменяем тройки этих цифр, т. е. модель по 3)
Как несложно понять все приведённые выше строки будут повторяться с периодом 7
Теперь, когда у нас есть периодичность начнем с самого нуля — рассмотрим строки от 1 символа и выше:
Строка ‘5’ нам не подходит — ее нет среди 7 возможных вариантов
Берем следующую строку ’55’ — ее размер 2, теперь осталось решить задачу
2 + 7 * x > 300
X = 47 2 + 7 * 47 = 303
Задача решена не прибегая к программированию
Строка ‘5’ нам не подходит — ее нет среди 7 возможных вариантов
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если я правильно понял алгоритм, то код выглядит так:
I = 300 while True: i += 1 text = ‘5’ * i while ‘555’ in text or ‘888’ in text: index = text. find(‘555’) text = text if index == -1 else (text[:index] + ‘8’ + text[index + 3:]) index = text. find(‘888′) text = text if index == -1 else (text[:index] + ’55’ + text[index + 3:]) count5 = text. count(‘5’) count8 = text. count(‘8’) if count5 > count8: print(i) break
Чисто теоретически опять таки можно решить следующим образом:
Очевидно, что с заменой только слева направо подстрок мы можем получить только следующие варианты:
855 8 885 85 88 8855 55
(не возможны варианты типа 858. потому что меняем цифры строго слева направо и не возможен вариант ‘5’ — его неоткуда сформировать (ведь ‘888’ всегда меняется строго на ’55’ )
Из которых по условию нас устраивает только 855 и 55 (кол-во восьмерок и пятерок от 0 до 2 определяется как раз тем, что мы заменяем тройки этих цифр, т. е. модель по 3)
Как несложно понять все приведённые выше строки будут повторяться с периодом 7
Теперь, когда у нас есть периодичность начнем с самого нуля — рассмотрим строки от 1 символа и выше:
Строка ‘5’ нам не подходит — ее нет среди 7 возможных вариантов
Берем следующую строку ’55’ — ее размер 2, теперь осталось решить задачу
2 + 7 * x > 300
X = 47 2 + 7 * 47 = 303
Задача решена не прибегая к программированию
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и Укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Потому что меняем цифры строго слева направо и не возможен вариант 5 — его неоткуда сформировать ведь 888 всегда меняется строго на 55.
Любые данныеЛюбые данныеЛюбые данные Любые данные
Источник: apple-tour.ru
Как решить задание обоснованно кодом?
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w) 2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (900) или нашлось(8000) или нашлось(70) заменить(70, 8) заменить(900, 70) заменить(8000, 900) КОНЕЦ ПОКА КОНЕЦ
Известно, что на вход программы поступила строка из 71 символа. Определите минимальное четырехзначное число, которое может являться результатом работы исполнителя. Я решил это задание вот таким кодом
for i in [‘7’, ‘8’, ‘9’]: s = ‘100’ + i + ‘0’ * 67 while ‘900’ in s or ‘8000’ in s or ’70’ in s: s = s.replace(’70’, ‘8’, 1) s = s.replace(‘900′, ’70’, 1) s = s.replace(‘8000’, ‘900’, 1) print(s)
Источник: ru.stackoverflow.com
Как решить задание обоснованно кодом?
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w) 2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор:
НАЧАЛО ПОКА нашлось (900) или нашлось(8000) или нашлось(70) заменить(70, 8) заменить(900, 70) заменить(8000, 900) КОНЕЦ ПОКА КОНЕЦ
Известно, что на вход программы поступила строка из 71 символа. Определите минимальное четырехзначное число, которое может являться результатом работы исполнителя. Я решил это задание вот таким кодом
for i in [‘7’, ‘8’, ‘9’]: s = ‘100’ + i + ‘0’ * 67 while ‘900’ in s or ‘8000’ in s or ’70’ in s: s = s.replace(’70’, ‘8’, 1) s = s.replace(‘900′, ’70’, 1) s = s.replace(‘8000’, ‘900’, 1) print(s)
Можно ли решить это задание другим способом, типо метода перебора и тд
Источник: husl.ru