#1-27 номера ЕГЭ по информатике
March 24, 2023

24 Разбор номера 36879 ЕГЭ по информатике от 2023 года #24

Условие: Тип 24 № 36879

Текстовый файл содержит строки различной длины.

Строки содержат только заглавные буквы латинского алфавита (ABC…Z).

В строках, содержащих менее 25 букв G, нужно определить и вывести максимальное расстояние между одинаковыми буквами в одной строке.

Для выполнения этого задания следует написать программу. Ссылка на файл, который необходимо обработать с помощью данного алгоритма.

Вариант 1: решение через раздельный перебор строк по условиям

Комментарии к первому варианту решения задачи:

  1. открываем файл для чтения (mode=”r”) и считывает строки в список, через [.readlines()
  2. создаем дополнительный список, в который будем записывать только лишь подходящие под первое условие строки
  3. пробегаем все строчки из списка строк файла
  4. если в какой-то из строк найдется кол-во букв G меньше 25, то условие истинно
  5. значит добавляем такую строчку в наш промежуточный список M
  6. так как нам необходимо “вывести максимальное расстояние между одинаковыми буквами в одной строке” то вводим алфавит
  7. переменная для хранения максимальной длины
  8. берем строку из списка М, которая уже удовлетворяет первому условию
  9. пробегаем все буквы из алфавита
  10. сравниваем maxi с расстояниями между: крайняя правая буква - крайняя левая буква
  11. выводим наибольшее расстояние между двумя одинаковыми буквами во всем файле
# Код решения Вариант 1
a = open('24.txt').readlines()
M = []
for s in a:
    if s.count('G') < 25:
        M.append(s)

alpahbet = 'QWERTYUIOPASDFGHJKLZXCVBNM'
maxi = 0
for s in M:
    for a in alphabet:
        maxi = max(maxi, s.rindex(a) - s.index(a))
print(maxi)

Вариант 2: аналогичное первому решение, но в более компактном виде
# Код решения Вариант 2
maxi = 0
a = open('24.txt').readlines()
for s in a:
    if s.count('G') < 25:
        for a in 'QWERTYUIOPASDFGHJKLZXCVBNM':
            maxi = max(maxi, s.rindex(a) - s.index(a))
print(maxi)

Кстати в случае, если вам понадобится алфавитный порядок букв, то можно либо отсортировать строку через списочное выражение, либо воспользоваться встроенной библиотекой import string

alphabet = sorted([i for i in 'QWERTYUIOPASDFGHJKLZXCVBNM'])
print(alphabet)

import string
print(string.ascii_uppercase)

Ответ:

1001