Разбор 24.PNG

№ 7853 Danov2304 (Уровень: Сложный) А.Богданов

Текстовый файл состоит из символов латинского алфавита и десятичных цифр. Определите максимальное количество идущих подряд символов, среди которых любые два символа из набора N,O,T в различных комбинациях(с учётом повторений) не стоят через один символ (который может быть любым).

Например, ТEN или NUТ не могут быть в искомой подстроке.

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

Untitled

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

  1. import itertools - мы импортируем модуль itertools, который содержит функции для работы со списками и итераторами.
  2. s = open('24.txt').readline() - здесь мы открываем файл 24.txt с помощью функции open() и читаем первую и единственную строку файла с помощью метода readline(), присваивая результат переменной s.
  3. maxi = 0 - это переменная, которая будет использоваться для хранения максимального значения длины строки.
  4. M = [] - это пустой список, который будет использоваться для хранения всех возможных комбинаций строк.
  5. for i in itertools.product('QWERTYUIOPASDFGHJKLZXCVBNM0123456789', repeat = 3): - здесь мы используем функцию product() из модуля itertools, чтобы создать все возможные комбинации из заданных символов длиной 3. Результатом является итератор, который мы будем использовать в следующей строке кода.
  6. r = ''.join(i) - здесь мы объединяем символы из кортежа i, созданных ранее с помощью функции product(), в одну строку r с помощью метода join().
  7. if r[0] in 'NOT' and r[2] in 'NOT': - здесь мы проверяем, что символы r[0] и r[2] находятся в строке 'NOT' с помощью оператора in. Если да, то мы добавляем строку r в список M.
  8. for x in M: - здесь мы перебираем список M.
  9. s = s.replace(x, ' ') - здесь мы заменяем все вхождения строки x в строке s на пробелы с помощью метода replace().
  10. maxi = max([len(i) for i in s.split()]) - здесь мы разделяем строку s на слова с помощью метода split() и находим максимальную длину слова в этом списке с помощью функции max(). Результат присваивается переменной maxi.
  11. print(maxi) - здесь мы выводим значение переменной maxi на экран.