Известно что на вход программы поступила строка из 71 символа

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru