Разбор 24.PNG

№ 4643 (Уровень: Базовый)

(А. Калинин)  Текстовый файл состоит из символов A, B и цифр 1, 2.

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

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

Untitled

<aside> 💡 Комментарии к решению:

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

</aside>

s = open('24.txt').readline()
s = s.replace('B', 'A').replace('2', '1')
s = s.replace('11A', '*').replace('A', ' ').replace('1', ' ')
A = [len(i) for i in s.split()]
print(max(A))

Untitled

Это решение не такое оптимальное, поэтому без комментариев, но если нужно - напишите об этом в комментариях на канале.

import itertools
M = []
for s in itertools.product('12AB', repeat=3):
    slovo = ''.join(s)
    if slovo[-1] in 'AB':
        if slovo.count('A') + slovo.count('B') == 1:
            M.append(slovo)
print(M) # M = '12A 12B 21A 21B 11A 11B 22A 22B'

s = open('24.txt').readline()
for x in M:
    s = s.replace(x, '*')
for x in '12AB':
    s = s.replace(x, ' ')
A = [len(i) for i in s.split()]
print(max(A))

Ответ: