Найти тему

Разбор номера 7016 ЕГЭ по информатике #24

Оглавление

Условие: № 7016 (Уровень: Базовый)

(Д. Статный) Текстовый файл состоит из букв латинского алфавита и десятичных цифр. Определите максимальную длину подстроки, которая ограничена с одной стороны буквой A, а с другой - D и не содержит других букв A и D внутри.

Файлы к заданию: 24.txt

-2
s = open('24.txt').readline()
for x in '0123456789QWERTYUIOPSFGHJKLZXCVBNM':
s = s.replace(x, '*')
M = [max(len(i) - i.index('D'), i.index('D')) for i in s.split('A') if 'D' in i]
print(max(M) + 1)

Комментарии к коду программы:

  1. s = open('24.txt').readline() - Читаем всю строку из файла '24.txt' и присваиваем ее значение переменной 's'.
  2. for x in '0123456789QWERTYUIOPSFGHJKLZXCVBNM': - Используем цикл 'for' для перебора каждого символа 'x' в строке '0123456789QWERTYUIOPSFGHJKLZXCVBNM'.
  3. s = s.replace(x, ' ') - Заменяем каждое вхождение символа 'x' в строке 's' на символ ' ' (пробел).
  4. M = [max(len(i) - i.index('D'), i.index('D')) for i in s.split('A') if 'D' in i] - Создаем список 'M', в котором каждый элемент вычисляется как максимальное значение между разностью длины строки 'i' и индекса символа 'D' и индексом символа 'D', для каждой разделенной подстроки 'i' из строки 's', если в подстроке 'i' содержится символ 'D'.
  5. print(max(M) + 1) - Выводим на экран максимальное значение из списка 'M' плюс 1.
-3
s = open('24.txt').readline()
s = s.replace('A', 'A A').replace('D', 'D D')
M = [len(i) for i in s.split() if 'A' in i and 'D' in i]
print(max(M))

Комментарии к коду программы:

  1. s = open('24.txt').readline() - Читаем всю строку из файла '24.txt' и присваиваем ее значение переменной 's'.
  2. s = s.replace('A', 'A A').replace('D', 'D D') - Заменяем каждое вхождение символа 'A' в строке 's' на 'A A', а каждое вхождение символа 'D' на
    'D D' и перезаписываем значение переменной 's'.
  3. M = [len(i) for i in s.split() if 'A' in i and 'D' in i] - Создаем список 'M', в котором каждый элемент - это длина слова из строки 's' разделенной по пробелам, но только если в слове содержатся и символ 'A', и символ 'D'.
  4. print(max(M)) - Выводим на экран максимальное значение из списка 'M'.
-4

Еще один вариант решение задачи для самостоятельного изучения:

s = open('24.txt').readline()
for x in '0123456789QWERTYUIOPSFGHJKLZXCVBNM':
s = s.replace(x, '*')
M = [i for i in s.split('A') if 'D' in i]
maxi = 0
for x in M:
maxi = max(maxi, len(x) - x.index('D'))
maxi = max(maxi, x.index('D'))
print(maxi+1) # не забываем букву А

Ответ: 273

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6
Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6